Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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 1-2更改为actionscript 3_Actionscript 3_Flash_Actionscript_Actionscript 2 - Fatal编程技术网

Actionscript 3 如何将actionscript 1-2更改为actionscript 3

Actionscript 3 如何将actionscript 1-2更改为actionscript 3,actionscript-3,flash,actionscript,actionscript-2,Actionscript 3,Flash,Actionscript,Actionscript 2,在flash中,我创建了一个按钮,并将此代码赋予该按钮(在AS1-AS2中) 由于无法在AS3中为按钮指定特定的操作,因此我为按钮指定了一个实例名称(按钮实例名称现在为“runButton”),然后决定在操作层中执行此操作 runButton.addEventListener(MouseEvent.CLICK, startAnimation); function startAnimation(event:MouseEvent){ gotoAndPlay(5); tellTa

在flash中,我创建了一个按钮,并将此代码赋予该按钮(在AS1-AS2中)

由于无法在AS3中为按钮指定特定的操作,因此我为按钮指定了一个实例名称(按钮实例名称现在为“runButton”),然后决定在操作层中执行此操作

runButton.addEventListener(MouseEvent.CLICK, startAnimation);


function startAnimation(event:MouseEvent){

    gotoAndPlay(5);
    tellTarget("/Anim")
    {
        gotoAndPlay(5);
    } // End of TellTarget

}
但它给了我一个错误,即在

函数startAnimation(事件:MouseEvent):void{

这句话的意思是最后一行出现了一个意外的“}”。你知道如何解决这个问题吗


注意:动画是主时间轴上的一个动画剪辑。当我双击动画剪辑时,它有自己的时间轴。我希望该时间轴与主时间轴一起播放,因此在执行“tellTarget(动画)”之后播放“gotoandPlay(5)”,然后再播放另一个gotoandPlay。

tellTarget
,因为Flash 5而被弃用。()

使用“with”而不是tellTarget。但我不建议这样做。 相反:


与Discipol的回答类似,但我认为您需要先播放电影片段:

MovieClip(this[ "/Anim" ]).gotoAndPlay(5);

好吧,找到答案了,结果我需要改变

tellTarget("/Anim") //'Anim' is just short form for 'an animation'

{
    gotoAndPlay(5);
} // End of TellTarget
公正

Anim.gotoAndPlay(5)

它成功了。

@Arlaudhm,我删除了void,但现在当我按下按钮时,它不会启动和播放(5)您需要在函数声明后添加事件,或者它没有任何意义。由于作用域的变化,AS1/AS2每当您调用函数时,“this”-指针的常规作用域被设置为调用它的对象,在as3中为“this”参考movieclip拥有runButton,因此您基本上需要使用
runButton.gotoAndPlay(5)
&
runButton.Anim.gotoAndPlay(5)
@DanielMesSer runButton是一个简单的按钮。当我尝试runButton.gotoAndPlay(5)时它说在flash.display.simpleButton上找不到hotoAndPlay非常正确,但这不是问题的答案。取决于您的意思,标题上写着“将as1/as2更改为as3”,问题显示了as3中使用的一些旧as1代码,问题还说明了一个编译器错误。此外,该代码包含此范围的问题,因为它在as3中与旧版本的as中不同。@DanielMesSer Hm,当我这样做时,它给出了一个错误说明在flash.display.SimpleButton上找不到属性gotoAndPlay,并且没有默认值。在flashFile::MainTimeline/startAnimation()“aah,因此它是一个SimpleButton,这意味着它没有要“播放”的动画"因为它没有时间线。所以只需省略该代码行。基本上在AS1/AS2中,舞台上的一切都是电影剪辑,在AS3中不再是这样。如果您使用SimpleButton,这意味着视图状态在按钮内部处理。ppl通常做的是按原样使用SimpleButton,或者转换为t如果您需要更高级的行为,请使用movieclips,然后从代码中触发任何动画。@DanielMesSer嗯,动画是主时间线第1层上的一个电影剪辑。当我双击动画movieclip时,它有自己的时间线,我想在按下runButton时播放它。(当点击runButton时,动画时间线应该与主时间线一起播放。)嗯,当我这样做时,它说“无法访问空对象引用的属性或方法。在flashFIle::MainTimeline/startAnimation”中,“/Anim”位于根时间线吗?进一步思考后,我相信正确的命令是:
MovieClip(这个.getChildByName('/Anim')).gotoAndPlay(5)
“/Amim”位于精灵内部。基本上,当点击runButton时,我希望时间线从5开始播放(gotoAndPlay(5)),我希望精灵也从它的时间线开始播放。精灵是一个图形。(事实上,我正在工作中调试/切换一个以前的员工从AS1-2工作到AS3,所以我不完全了解发生了什么,但我正在尝试以最好的方式解释。如果我不清楚或者是否需要回答其他问题,请告诉我。哦,等等,动画是一部电影的名称,请单击时间线的第1层,如果你单击电影剪辑,它会打开它自己的独立时间线,当MovieClip(这个.getChildByName('/Anim')).gotoAndPlay(5)行被执行时,它应该从5秒开始播放,对吗?或者我完全错了吗?嗯,当我这样做时,它会说“一个术语没有定义,没有属性。在flashFile::MainTimeline/StartImation()'可能是因为/Anim是显示对象的无效名称。可能称为Anim。请确保在使用该代码时它就存在。
MovieClip(this[ "/Anim" ]).gotoAndPlay(5);
tellTarget("/Anim") //'Anim' is just short form for 'an animation'

{
    gotoAndPlay(5);
} // End of TellTarget
Anim.gotoAndPlay(5)