在上层开始一个影片剪辑。还是变量问题?

Starting a movie clip on an upper level. Or variable issue?

我在嵌套实例中使用 ENTER_FRAME 事件触发顶层实例(场景 1)的 gotoAndPlay() 时遇到问题。

在主时间线上我有两个 MovieClips: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 在哪里。

正如您所见,我缺乏经验。我比我的技能更准确地理解我想要什么。

对于这种特定情况的任何帮助都很棒,对于这种情况的一般建议也很好。

谢谢!

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

elec_mc 的范围内没有名为 fiber_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");