我正在尝试动态构建一条线,带有开始和结束渐变。我想避免使用 GradientBox,因为线条是动态的。我想要做的就是让这条线以红色开始,以蓝色结束。这段代码虽然不起作用:(
myLine = new Shape();
myLine.graphics.lineStyle(2);
myLine.graphics.lineGradientStyle(GradientType.LINEAR, [0x0000FF, 0xFF0000], [1, 1], [0, 255]);
myLine.graphics.moveTo(itemPoint[i].x, itemPoint[i].y); // Dynamic
myLine.graphics.lineTo(itemPoint[j].x, itemPoint[j].y); // Dynamic
addChild(myLine);
谢谢!
最佳答案
您需要使用矩阵来指示渐变区域有多大,以及应该向哪个方向绘制。尝试以下方法:
// Get dimensions (absolute)
var d : Point = itemPoint[j].subtract(itemPoint[i]);
d.x = Math.abs(d.x);
d.y = Math.abs(d.y);
// Create gradient box matrix
var mtx : Matrix = new Matrix;
mtx.createGradientBox(d.x, d.y, Math.atan2(d.y, d.x), itemPoint[j].x, itemPoint[j].y);
myLine.graphics.lineStyle(2);
myLine.graphics.lineGradientStyle(GradientType.LINEAR, [0x0000ff, 0xff0000], [1,1], [0, 0xff], mtx);
myLine.graphics.moveTo(itemPoint[i].x, itemPoint[i].y);
myLine.graphics.lineTo(itemPoint[j].x, itemPoint[j].y);
基本上这将创建一个渐变框,其宽度和高度与您将创建的线条的边界矩形相同。它还应该根据两点之间的角度旋转渐变,以确保渐变从一个点延伸到另一个点。
关于flash - 使用 ActionScript 3/Flash 在线条上应用颜色渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1937184/