TypeError:一个术语未定义?

时间:2012-03-23 17:38:23

标签: actionscript-3 flash-cs5 movieclip

我制作了一个as3帧来故意重启动画片段,但我为每个我称之的动画片段得到了一个typerror。

TypeError: Error #1010: A term is undefined and has no properties.

我尝试过使用和不使用AS Linkage,但结果是一样的。

代码:

    //Loop animation.
addEventListener(Event.ENTER_FRAME, function (Reiniciar) {
    if (MovieClip(root).Animacion.currentFrame==500){
        MovieClip(root).Animacion.gotoAndPlay(1);
        MovieClip(root).Personaje.gotoAndPlay(1);
        MovieClip(root).Personaje.Guy.gotoAndPlay(1);
    }
});

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

在这些代码行中:

if (MovieClip(root).Animacion.currentFrame==500){
            MovieClip(root).Animacion.gotoAndPlay(1);
            MovieClip(root).Personaje.gotoAndPlay(1);
            MovieClip(root).Personaje.Guy.gotoAndPlay(1);
        }

您正在尝试访问名为 Animacion 的变量和另一个名为 Personaje 的变量,其中包含另一个名为 Guy 的变量。确保Flash舞台上的MovieClip的实例都是这样命名的,您在图像中显示的是符号属性选项卡中的类和符号名称,而不是实例名称。要设置实例名称,请在舞台上选择您的MovieClip(将出现蓝色轮廓),然后查看属性选项卡

此外,变量名称通常为小写,驼峰大小写(大写的每个单词的第一个字母)为类名保留以便于阅读。

在这一行:

//Loop animation.
addEventListener(Event.ENTER_FRAME, function (Reiniciar) {

您正在创建侦听输入框架事件的匿名函数。我想你想要命名你的函数“Reiniciar”,但是括号之间的是函数得到的Event参数的名称,而不是函数名。

您的代码的首选语法是:

import flash.events.Event;

//add event handler
addEventListener(Event.ENTER_FRAME, reiniciar);

//loop function      
function reiniciar(e:Event):void
{

   if (MovieClip(root).animacion.currentFrame==500)
   {
            //animacion is the instance name of the Symbol Animacion
            //and is placed in your main timeline
            MovieClip(root).animacion.gotoAndPlay(1);

            //there is a movieclip instance named personaje in your main timeline
            MovieClip(root).personaje.gotoAndPlay(1);
            //personaje has inside a movieclip instance named guy
            MovieClip(root).personaje.guy.gotoAndPlay(1);

        }
}

这应该可行,但我建议你尽量不要过度使用ENTER_FRAME监听器,因为它们在性能方面非常昂贵。例如,在这个例子中,如果MovieClip“animacion”已达到其第500帧,你可能不需要询问每一帧,认为它有点像你车后座的讨厌的孩子大喊“我们在那里吗?我们到了吗?”每隔几秒钟。我建议你应该遵循一些关于ActionScript 3的初学者教程来熟悉语法并更熟悉代码背后的逻辑。