【问题标题】:TypeError: A term is undefined?TypeError:一个术语未定义?
【发布时间】:2012-03-23 17:38:22
【问题描述】:

我制作了一个 as3 帧来故意重新启动影片剪辑,但是我为每个调用的影片剪辑都收到了打字错误。

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);
    }
});

【问题讨论】:

    标签: actionscript-3 flash-cs5 movieclip


    【解决方案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 的 instances 都是这样命名的,您在图像中显示的是符号属性选项卡中的类和符号名称,而不是 实例名称。要设置实例名称,请在舞台上选择您的 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 侦听器,因为它们在性能方面非常昂贵。例如,在此示例中,您可能不需要询问每一帧电影剪辑“动画”是否已达到其第 500 帧,认为这有点像汽车后座上的烦人孩子大喊“我们到了吗?我们到了吗?”每隔几秒钟。我建议你应该学习一些关于 ActionScript 3 的初学者教程,以习惯语法并更熟悉代码背后的逻辑。

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 1970-01-01
      • 2017-03-19
      • 2012-08-16
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      相关资源
      最近更新 更多