我想知道为什么AS3 colorTransform只会转换形状的边框?
Similar question已发布,但我不认为需要这么大的解决方法才能这样做。
我有类似的东西:
var sh:Shape = new Shape();
sh.graphics.lineStyle(4, 0x000000);
sh.graphics.beginFill(0xFFFF00);
sh.graphics.drawRect(0, 0, 200, 200);
sh.graphics.endFill();
addChild(sh);
我知道我们可以在这里使用 with(sh.graphics) do
,但是如果我进行颜色转换,请执行以下操作:
sh.transform.colorTransform = new ColorTransform(1, 1, 1, 1, red_offset, green_ofs, b_off, 0);
仅转换形状的边框。 我试图在每个帧上重绘具有不同填充的对象但是它的性能过大,大约10个3d平面是性能杀手。
我只能想到这一点,因为beginFill()
不使用lineStyle()
设置的笔,这可能会导致问题,但我真的很想知道这个问题,因为我需要我的超级 - 超级半旋转旋转,同时改变颜色,而不是他的边界! :)
提前致谢!
答案 0 :(得分:1)
我不知道为什么ColorTransform仅影响线条颜色(似乎只是设计决定),但ColorMatrixFilter将转换整个形状(经过测试)。不要害怕 - 这很简单。前四列矩阵是乘数(1.0是100%),第五列被添加到结果中。
var sht:Shape = new Shape();
sht.graphics.lineStyle(4, 0x7F7FFF);
sht.graphics.beginFill(0xFFFFFF);
sht.graphics.drawRect(0, 0, 200, 200);
sht.graphics.endFill();
sht.x = 300;
sht.y = 100;
sht.filters = [ new ColorMatrixFilter(
[ 0.5, 0.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.7, 0.0, 0.0,
0.0, 0.0, 0.0, 1.0, 0.0
])];
addChild(sht);