0

我曾经在 Animate 中使用过很多滤镜,这非常棒,因为我可以手工制作一个颜色滤镜,看看它是什么样子,然后也可以将代码集成到其中,例如:

object.filters = e.currentTarget.filters;

但我正在努力做好并远离过滤器以降低处理能力等。另外,过滤器不接受十六进制代码。所以我正在尝试使用 colorTransforms。但是现在事情变得非常笨拙,因为我弄清楚我想要哪种颜色,在记事本中写下所有的十六进制代码,然后编写代码将事物转换为那种颜色。在我发布文件之前,我仍然看不到颜色的相互作用。没有一些方法可以手动摆弄 colorTransforms 吗?也许颜色效果下的高级部分 - >样式?

我如何想象这会发生在我的幻想中:我有一些电影剪辑,它们相互作用以创建一个织物样本。我摆弄 colorTransform 或 SOMEhow 手动向它们应用十六进制代码(不是在代码中动态地),然后我可以使用这些色板动态地为其他东西着色,例如:

newFabric.topPattern.colorTransform.color = fabricSwatch.topPattern.colorTransform.color;

我知道如果我先使用代码添加颜色,我可以做到这一点。但是有没有办法在舞台上/视觉/手动添加颜色,然后让代码向前滚动?我知道我可以绘制位图并对像素的颜色进行采样,但是这些图案都有非常精细、不同且复杂的形状和透明度,因此在这里不起作用:/

4

2 回答 2

1

好的!我找到了解决方法!\o/

我可以手动编辑色调,甚至可以输入十六进制代码或从我的预制调色板中滴下颜色。我只需要确保将 Tint 上的“Tint”设置为 100%。(色彩效果 -> 风格:色调)

现在我只需使用 colorTransform 代码,它就可以拉出我手动放置的 Tint,并将其转移到其他项目:

grl.overlay.shapes.transform.colorTransform = e.currentTarget.shapes.transform.colorTransform;

我什至不必更改我的代码,这比过滤器更好,因为我可以输入十六进制代码。我不知道这对过滤器的性能有何影响,但有人刚刚告诉我这应该不会太糟糕,因为没有任何动画。我很开心 :)

于 2016-05-31T20:51:16.777 回答
1

有很多关于使用颜色变换的教程——比如这个

至于使用十六进制颜色,您可以非常轻松地在各种颜色表示之间来回转换。一个简单的谷歌搜索出现了这个片段

var brightPinkHex:uint = 0xFF32CC;
var brightPinkRGB:Object = HexToRGB(brightPinkHex);
trace(brightPinkRGB.r+ ", " + brightPinkRGB.g + ", " + brightPinkRGB.b);

function HexToRGB(value:uint):Object {  
    var rgb:Object = new Object();
    rgb.r = (value >> 16) & 0xFF
    rgb.g = (value >> 8) & 0xFF
    rgb.b = value & 0xFF            
    return rgb;
}

// OUTPUT
// 255, 50, 204
于 2016-05-31T19:36:02.933 回答