2015-11-13 41 views
1

我在嵌套实例中使用ENTER_FRAME事件触发顶级实例(场景1)中的gotoAndPlay()时遇到问题。在较高级别上启动影片剪辑。或变量的问题?

在主时间轴上,我有两个动画片段:neuron1_mcfiber_mc

在第2帧的fiber_mc我有一个名为“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不知道在哪里(或什么)“弯曲”是因为我没有告诉它在哪里fiber_mc是。

正如你所说我很缺乏经验。我明白我想要的东西比我的技能准确得多。

对这种特殊情况的任何帮助都很棒,而且对这种情况的一般建议也会很好。

谢谢!

+0

您没有使用正确enterFrame事件。输入框仅用于一个目的:多次运行相同的代码(至少两次)。如果情况并非如此,并且您的代码只需要运行一次,则不应使用定义框架。在你的情况下,你的代码可以恢复到这个简单的行:fib_mc.gotoAndPlay(“flex”); – BotMaster

+0

因此,从'elec_mc'中的代码看来,访问'fiber_mc'需要执行以下操作:'parent.parent.fiber_mc'或者,您可以执行'root.fiber_mc'。你不能简单地访问'fiber_mc',因为它不在同一个范围内。此外,这是真的,除非你故意等待一帧,否则输入帧处理程序没有多大意义。 – BadFeelingAboutThis

回答

0

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

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"); 
    
+0

...另外,正如@BotMaster所提到的,在这里你不需要'ENTER_FRAME'事件监听器,你可以使用:'MovieClip(root).fiber_mc.gotoAndPlay('flex');'... – akmozo

+0

@akmozo - 我已经对此发表了评论,因为它与手边的问题无关,我不觉得有必要在答案中解决它。 – BadFeelingAboutThis

+0

由于OP显然是初学者,因此任何建议总是受欢迎的,对于任何人来说也是如此需要您的答案,并且谁通常不在意/有时间阅读评论,所以最好(我认为)在答案中。 – akmozo