在较高级别上启动影片剪辑。或变量问题?

时间:2015-11-13 16:42:13

标签: actionscript-3 flash

我在嵌套实例中使用ENTER_FRAME事件时无法在顶层(场景1)的实例上触发gotoAndPlay()

在主时间轴上,我有两个MovieClip:neuron1_mcfiber_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在哪里。

你可以说我很缺乏经验。我理解我想要的东西,其精确度远远高于我的技能。

对这个具体案例的任何帮助都会很棒,对这类案件的一般建议也会很棒。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的问题属于范围问题(您似乎已经猜到了)。

fiber_mc范围内没有名为elec_mc的项目,因此您可能会收到关于空对象引用的#1009错误。

根据您展示的内容,您似乎需要执行以下操作之一才能获得对fiber_mc的引用。

  1. 抓取您的父母,直到您找到两个对象的公共父对象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
    
  2. 使用root关键字作为对主时间轴的引用。

    MovieClip(root).fiber_mc.gotoAndPlay("flex");