我正在使用项目中的几个嵌套的movieclip对象。但是我在嵌套的动画片段中创建和实现的按钮遇到了麻烦:
以简单的方式描述它: 我有一个主要的动画片段,有五个帧,包括两个带有听众的按钮,可以在帧之间浏览。然后在一个Frame内部我有另一个带有自己按钮的movieclip。我不是通过代码手工实现它,而是给它一个特定的名称,如“nestedMc”。
现在我不想在嵌套的movieclip类的类中为这些按钮构建监听器,但是在它的父类中,它可以正常工作,直到我转到主动画片段时间轴中的另一帧并返回。
显然每次flash进入一个帧时,它的内容都会重新创建(因此获得新的实例名称)。我现在可以尝试通过代码填充帧来解决这个问题。
但也许有另一种方法可以确保每次进入时帧都包含相同的实例?
答案 0 :(得分:1)
时间轴脚本是一项肮脏的业务,实际上是carry-over compatibility layer for Actionscript 2 projects。只要有可能,我强烈建议不要这样做,只需将所有代码保存在文档类中。正如您所经历的那样,时间线代码会引起麻烦。
相反,只考虑创建舞台的两种状态(听起来就像是你的两个按钮之间的跳跃)并简单地将它们隐藏在舞台之外或将其alpha设置为零并将mouseEnabled状态设置为false。此外,如果您的帧的目的是播放动画(补间),请考虑切换到更强大的套件,例如TweenLite。将对象移动超过一百个像素(平滑)可以像以下一样简单:
TweenLite.to(redBall, 3, {x:100});
现在,如果您手动将这些项目添加到舞台上,只要该对象是动态对象,您就可以为其指定一个实例名称,该名称将在帧加载之间保存。请注意,对象名称与实例名称不同。例如:
var redBall:Ball = new Ball();
redBall.name = "bubbles";
对象的名称为Ball
,但它表示为名为redBall
的变量。它的实际DisplayList名称可能不明确(例如“Instance71”),我可以手动将其定义为"bubbles"
。同一个对象的3个不同名称,都非常不同和必要。
即使你给对象一个displayList名称,你也可能无法通过代码引用它,除非你启用自动声明阶段实例,它基本上在每个对象上创建一个指向displayList对象的指针。
也就是说,你总是可以通过其他方式获取对象。显然,你的按钮总是出现,但你试图在舞台上找到一个非常具体的对象。此时,我们可以使用getChildByName()或getChildAt()。
希望有所帮助。 -Cheers