Actionscript 3 在上层开始电影剪辑。还是可变问题?
在嵌套实例中使用Actionscript 3 在上层开始电影剪辑。还是可变问题?,actionscript-3,flash,Actionscript 3,Flash,在嵌套实例中使用ENTER\u FRAME事件触发顶层实例上的gotoAndPlay()时遇到问题(场景1) 在主时间轴上,我有两个电影剪辑:neuron1\u mc和fiber\u mc 在fiber\u mc的第2帧上,我有一个名为“flex”的帧标签。在neuron1\u mc内部有一个名为elec\u mc的实例 在actions层的elec_mc的最后一帧中,我有以下代码: addEventListener(Event.ENTER_FRAME, muscleTwitch); funct
ENTER\u FRAME
事件触发顶层实例上的gotoAndPlay()
时遇到问题(场景1)
在主时间轴上,我有两个电影剪辑:neuron1\u mc
和fiber\u mc
在fiber\u mc
的第2帧上,我有一个名为“flex”的帧标签。在neuron1\u mc内部有一个名为elec\u mc
的实例
在actions层的elec_mc的最后一帧中,我有以下代码:
addEventListener(Event.ENTER_FRAME, muscleTwitch);
function muscleTwitch(event:Event): void
{
fiber_mc.gotoAndPlay("flex");
removeEventListener(Event.ENTER_FRAME, muscleTwitch);
}
在过去的几天里,我在不同的事情上使用过几次,效果很好,但每次我使用它时,它都会在时间线内播放一个实例。现在,我试图让帧事件触发一些级别的事件-因此Flash不知道“flex”在哪里(或什么),因为我没有告诉它fiber\u mc在哪里
你可以看出我很没经验。我比我的技能更准确地理解我想要什么
任何关于这一特定案例的帮助都将非常棒,对于这类案例的一般建议也将非常棒
谢谢 您的问题是范围问题(您似乎已经猜到了) 在
elec\u mc
的范围内没有名为fiber\u mc
的项,因此您可能会收到一个关于空对象引用的#1009错误
从您所展示的内容来看,您似乎需要执行以下操作之一,以获得对fiber\u 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");
您的问题是一个范围问题(正如您似乎已经猜到的) 在
elec\u mc
的范围内没有名为fiber\u mc
的项,因此您可能会收到一个关于空对象引用的#1009错误
从您所展示的内容来看,您似乎需要执行以下操作之一,以获得对fiber\u 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");
您没有正确使用enterframe。enterframe只有一个用途:多次(至少两次)运行同一代码。如果情况并非如此,并且代码只需运行一次,则根据定义,不应使用enterframe。在您的例子中,您的代码可以恢复到以下简单的行:fiber_mc.gotoAndPlay(“flex”);因此,似乎从
elec\u mc
中的代码访问fiber\u mc
您需要执行以下操作:parent.parent.fiber\u mc
或者,您可以执行root.fiber\u mc
。您不能简单地访问fiber\u mc
,因为它不在同一范围内。此外,除非您有意等待一帧,否则enterframe处理程序没有什么意义。您没有正确使用enterframe。enterframe只有一个用途:多次(至少两次)运行同一代码。如果情况并非如此,并且代码只需运行一次,则根据定义,不应使用enterframe。在您的例子中,您的代码可以恢复到以下简单的行:fiber_mc.gotoAndPlay(“flex”);因此,似乎从elec\u mc
中的代码访问fiber\u mc
您需要执行以下操作:parent.parent.fiber\u mc
或者,您可以执行root.fiber\u mc
。您不能简单地访问fiber\u mc
,因为它不在同一范围内。此外,这是事实,除非您有意等待一帧,否则输入帧处理程序没有什么意义。。。。另外,正如@BotMaster所提到的,这里不需要ENTER\u FRAME
事件监听器,您可以使用:MovieClip(root).fiber\u mc.gotoAndPlay('flex')
…@akmozo-我已经就此发表了评论,因为它与手头的问题无关,我觉得没有必要在回答中提及它。因为OP显然是初学者,所以任何建议都是受欢迎的,对于任何需要你的答案的人以及通常不关心/没有时间阅读评论的人来说,这样做更好(我认为)把它写在答案里。谢谢你的帮助!我在2号以上工作,工作很顺利。但就我的教育而言,我不明白为什么不需要输入帧事件侦听器。正如你们中的一些人可能已经猜到的mc的名字,这是一个展示运动神经元如何与肌肉相互作用的动画。我有一个动作电位(小的电吐温)沿着轴突向下移动到突触终端。在二人组结束时,我希望肌肉收缩。从我对Flash的有限理解!我认为AP tween的最后一帧需要“启动”flex tween。不为什么不呢?有什么更好的方法吗?我真的无法告诉你我有多感激你的帮助。我偶尔会用Flash做一些小事情,只是为了给那些只懂Powerpoint的人留下深刻印象,但这主要是为了展示我的艺术技能,而不是编码。你们真是太棒了!。。。另外,正如@BotMaster所提到的,这里不需要ENTER\u FRAME
事件监听器,您可以使用:MovieClip(root).fiber\u mc.gotoAndPlay('flex')
…@akmozo-我已经就此发表了评论,因为它与手头的问题无关,我觉得没有必要在回答中提及它。因为OP显然是初学者,所以任何建议都是受欢迎的,对于任何需要你的答案的人以及通常不关心/没有时间阅读评论的人来说,这样做更好(我认为)把它写在答案里。谢谢你的帮助!我在2号以上工作,工作很顺利。但就我的教育而言,我不明白为什么不需要输入帧事件侦听器。正如你们中的一些人可能知道的那样