我制作了一个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);
}
});
答案 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的初学者教程来熟悉语法并更熟悉代码背后的逻辑。