我在嵌套实例中使用ENTER_FRAME
事件时无法在顶层(场景1)的实例上触发gotoAndPlay()
。
在主时间轴上,我有两个MovieClip:neuron1_mc
和fiber_mc
。
在fiber_mc
的第2帧上,我有一个名为“flex”的帧标签。在neuron1_mc
内,有一个名为elec_mc
的实例。
在elec_mc
的最后一帧 - 在动作层中,我有以下代码:
addEventListener(Event.ENTER_FRAME, muscleTwitch);
function muscleTwitch(event:Event): void
{
fiber_mc.gotoAndPlay("flex");
removeEventListener(Event.ENTER_FRAME, muscleTwitch);
}
在过去的几天里,我已经使用过几次不同的东西而且它运行正常,但每次我使用它时,它都在这个时间轴内播放一个实例。现在我试图让帧事件触发几个级别的东西 - 所以Flash不知道“flex”在哪里(或者是什么)因为我没有告诉它fiber_mc
在哪里。
你可以说我很缺乏经验。我理解我想要的东西,其精确度远远高于我的技能。
对这个具体案例的任何帮助都会很棒,对这类案件的一般建议也会很棒。
谢谢!
答案 0 :(得分:0)
您的问题属于范围问题(您似乎已经猜到了)。
fiber_mc
范围内没有名为elec_mc
的项目,因此您可能会收到关于空对象引用的#1009错误。
根据您展示的内容,您似乎需要执行以下操作之一才能获得对fiber_mc
的引用。
抓取您的父母,直到您找到两个对象的公共父对象fiber_mc& elec_mc。
//the first parent is neuron1_mc, and it's parent is the main timeline, to which fiber_mc is a child
parent.parent.fiber_mc.gotoAndPlay("flex");
//though to avoid a compiler warning you may need to cast the parents:
MovieClip(MovieClip(parent).parent).fiber_mc.gotoAndPlay("flex");
//casting is just telling the compiler explicitly what kind of object something is
使用root
关键字作为对主时间轴的引用。
MovieClip(root).fiber_mc.gotoAndPlay("flex");