AS3 ColorTransform在多个帧上?
-
25-10-2019 - |
题
(Flash Professional,AS3)
我正在使用自定义的头像系统,您可以在其中选择各种节日和颜色。例如,我有一个具有10个发型的“头发” Movieclip。每个框架都有不同发型(发型1,发型2等)的MovieClip。我也有一个颜色来改变颜色。
这是我的代码:
var hairColor:ColorTransform;
hairColor = mc_myAvatar.hair.colorLayer.transform.colorTransform;
hairColor.color = 0xCCCC00;
mc_myAvatar.hair.colorLayer.transform.colorTransform = hairColor;
这正确更改了初始颜色。我有一个“ nexthair”按钮,可以将mc_myavatar.hair推向下一帧。当我单击按钮时,我会收到一条错误消息,说我有一个空对象引用。我添加了跟踪,mc_myavatar.hair.colorlayer在框架2上为空。我清楚地将HairStyle2命名为框架2中的“ Colorlayer”。
我认为这个问题与我使用不同类别/Movieclips的同一名称有关,但我不知道如何解决问题...
我在发型MovieClips下方添加了一个方形MovieClip,名为“ Colorlevel”,并从我的发型夹中删除了名称。当我单击“下一个”按钮时,正方形可以正确维护框架的颜色。但是,拥有一个正方形并不能给我带来很多好处。 :(
我尝试将发型层转换为面具。但是,这样做会导致另一个“ null对象”错误-mc_myavatar.hair.colorlayer在框架1之后。 Movieclip可以使用。没运气。同样的错误!
这里发生了什么?当我的MovieClip清楚地定义了这些无效的对象时,为什么我会得到这些无效的对象?
我也接受有关做多种帧和颜色的更好方法的建议。
解决方案
function miClick(e:MouseEvent) {
content.gotoAndStop(e.currentTarget.parent.name);
if(e.currentTarget.parent.name == "2") {
content.addEventListener(Event.EXIT_FRAME, this.hdExitFrame);
productMenu.alpha = 1;
trace(content.products);
} else {
productMenu.alpha = 0;
}
}
function hdExitFrame(e:Event) {
trace(e.target.currentFrame + ", " + e.target.products);
content.removeEventListener(Event.EXIT_FRAME, this.hdExitFrame);
}
我已经对此进行了测试,content.products在Miclick中是无效的,但是,在HdexitFrame中,不是。希望这可以帮助。
不隶属于 StackOverflow