flash - 使用 ActionScript 3/Flash 在线条上应用颜色渐变

标签 flash actionscript-3 actionscript gradient

我正在尝试动态构建一条线,带有开始和结束渐变。我想避免使用 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/

相关文章:

html - <p :media> component 隐藏的 PrimeFaces 菜单栏选项

actionscript-3 - 仅从 Azure 云存储 blob 加载 SWF 文件时出现跨域问题

xml - ActionScript - 将数据分配给对象数组后处理 XML?

flash - 没有重复的AS3递归对象扫描?

flash - 是什么导致 flash/actionscript 运行时错误 "WatcherSetupUtil is not defined"?

flash - 我可以用 actionscript 代码做 Flash "modify->bitmap->trace bitmap"吗?

javascript - 如何防止swf重定向父html?

actionscript-3 - 什么 IDE 可用于 ActionScript 3 编码?

actionscript-3 - 如何在 AS3 中一次删除所有事件监听器

javascript - 如何使用 Adob​​e flash 创建整页背景图像