Actionscript 在AS1中动态更改颜色

Actionscript 在AS1中动态更改颜色,actionscript,colors,Actionscript,Colors,我无法在我的AS1应用程序中使用此功能。我正在使用Color.setTransform方法 我认为下面的物体创造应该导致颜色变为白色,对吗 var-AColorTransform={ra:100,rb:255,ga:100,gb:255,ba:100,bb:255,aa:100,ab:255} 这个是黑色的吗 AColorTransform={ra:100,rb:-255,ga:100,gb:-255,ba:100,bb:-255,aa:100,ab:-255} 我在一些网站上读到,当正在执行操

我无法在我的AS1应用程序中使用此功能。我正在使用Color.setTransform方法

我认为下面的物体创造应该导致颜色变为白色,对吗

var-AColorTransform={ra:100,rb:255,ga:100,gb:255,ba:100,bb:255,aa:100,ab:255}

这个是黑色的吗

AColorTransform={ra:100,rb:-255,ga:100,gb:-255,ba:100,bb:-255,aa:100,ab:-255}

我在一些网站上读到,当正在执行操作的对象具有某种动态行为时,调用setRGB或setTransform可能不会导致实际更改显示颜色。有人对这些情况了解得更多吗?在任何情况下如何改变颜色


问候。

我已经很久没有做任何事情了,但我会尽力的

color.setTransform()的基本代码如下所示

var AColorTransform = {ra:100, rb:255, ga:100, gb:255, ba:100, bb:255, aa:100, ab:255};
var myColor = new Color(mc);
myColor.setTransform(AColorTransform);
…mc是舞台上某个地方的电影演员

请记住,您所问的是变换,它的本质是将颜色从原来的颜色变换为其他颜色。如果要可靠地使用特定颜色(如黑色或白色)进行绘制,通常最好使用setRGB,如下所示:

var myColor = new Color(mc);
//set to black
myColor.setRGB(0x000000);
//or set to white
myColor.setRGB(0xFFFFFF);
这些工作可靠,但也可能存在一些问题。一般来说,只需记住,颜色是附加到特定的MovieClip…因此,如果该MovieClip超出范围(即,它从时间轴中消失),您的颜色将随之删除


仅当您想更好地理解颜色变换时,请阅读以下内容:

让我们看一下颜色变换的组件

    a (multiplier 0 > 100%)   b(offset -255 > 255)
r       ra                       rb

g       ga                       gb

b       ba                       bb

a       aa                       bb
有四个通道(r、g、b和a)。前三个用于红色、绿色和蓝色,最后一个用于alpha(透明度)。每个通道都有一个“a”分量和一个“b”分量,因此ra、rb、ga、gb等。a分量是一个百分比乘数。也就是说,它会将任何现有通道乘以该值中的百分比。“b”分量是一个偏移量。因此,“ra”乘以现有的红色通道rb'抵消了它。如果您的红色通道以“FF”(红色满)开始,设置ra:100将无效,因为将FF乘以100%不会导致任何更改。类似地,如果红色从'00'开始(完全没有红色),'ra'的值不会有任何影响,因为(如果你回忆起你的莎士比亚)两次什么都不是。两者之间的事情会像你所期望的那样成倍增加

偏移量在乘法后相加。所以你可以乘以某个值,然后抵消它:

r (result red color) = (RR * ra%) + rb
g (result green color) = (GG * ga%) + gb
b (result blue color) = (BB * ba%) + bb
a (result alpha) = (AA * aa%) + ab
示例:RR=128(十六进制0x80),ra=50(50%或.5),rb=-20

产生的红色通道:(128*.5)+(-20)=44(十六进制0x2C)


坦白地说,这一切都变得如此混乱,以至于我倾向于选择完全避免转换的简单理智,而选择更简单的setRGB()。

“这些工作可靠,尽管可能存在一些问题。”我希望你能看到这句话中的不一致性:-)尽管答案很好!我试着使用setRGB,但那不起作用,所以我切换到setTransform,我也没有得到工作。我不认为它在命令中,但可能在电影剪辑的参考中。我想我尝试的方法在任何其他语言中都适用,但在AS1中不适用。。。谢谢