(Flash专业版,AS3)
我正在开发一个自定义的头像系统,你可以在其中选择不同的标志和颜色。例如,我有一个有10种发型的“头发”电影剪辑。每帧都有一个不同发型的电影剪辑(HairStyle1、HairStyle2等)。我还有一个可以改变颜色的colorPicker。
下面是我的代码:
var hairColor:ColorTransform;
hairColor = mc_myAvatar.hair.colorLayer.transform.colorTransform;
hairColor.color = 0xCCCC00;
mc_myAvatar.hair.colorLayer.transform.colorTransform = hairColor;这会正确地更改初始颜色。我有一个"nextHair“按钮让mc_myAvatar.hair前进到下一帧。当我单击该按钮时,我收到一条错误消息,指出我有一个空的对象引用。我添加了跟踪,第2帧上的mc_myAvatar.hair.colorLayer为空。为什么?在第2帧中,我已经明确地将HairStyle2命名为"colorLayer“。
我认为这个问题与我对不同的类/电影片段使用相同的名称有关,但我不知道如何解决这个问题……
我在我的hairStyle电影剪辑下面添加了一个方形电影剪辑,将该方形命名为"colorLevel",并从我的hairStyle剪辑中删除了该名称。当我单击“下一步”按钮时,正方形会正确地保持帧与帧之间的颜色。然而,有一个正方形对我来说并没有太大的好处。:(
我尝试将hairStyle层转换为蒙版。然而,这样做会导致另一个“空对象”错误-第1帧之后的mc_myAvatar.hair.colorLayer为空。我甚至尝试在所有帧(没有关键帧)中“跨越”我的colorLevel,认为这只会给我一个电影剪辑来处理。不走运。同样的错误!
这是怎么回事?为什么我会得到这些空对象,当它们在我的电影剪辑中被明确定义时?
我也乐于接受更好的方式来做多种框架和颜色的建议。
发布于 2011-12-01 00:01:23
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中却不是。希望这能有所帮助。
https://stackoverflow.com/questions/8320178
复制相似问题