(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中,不是。希望这可以帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top