Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在上层开始电影剪辑。还是可变问题?_Actionscript 3_Flash - Fatal编程技术网

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
的引用

  • 向上爬网父对象,直到找到两个对象的公共父对象fiber\u mc和elec\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
    的引用

  • 向上爬网父对象,直到找到两个对象的公共父对象fiber\u mc和elec\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号以上工作,工作很顺利。但就我的教育而言,我不明白为什么不需要输入帧事件侦听器。正如你们中的一些人可能知道的那样