ActionScript 2.0和ActionScript 3.0之间有什么区别

时间:2011-05-24 05:32:21

标签: actionscript-3 actionscript actionscript-2

版本之间的主要区别是什么?

3 个答案:

答案 0 :(得分:6)

除了库更改之外,还会在完全不同的虚拟机(AVM2)上编译并运行Actionscript 3,该虚拟机从头开始重新编写。据报道,它执行编译的AS3代码的速度比为AVM1虚拟机编译的代码脚本快10倍。

您应该查看this doc以获取AS2和AS3之间的差异列表,因为它们在SO上无法更好地解释:)

答案 1 :(得分:1)

在AS3中,您可以更具战略性地构建和组织应用程序 lot 。它比AS2更快,更整洁,更值得推荐。主要区别在于您可以开发具有比AS2强得多的OOP影响的闪存应用程序。

AS3可以更轻松地利用第三方代码,例如Greensock的Tweenlite,Papervision 3D和box2d。

在AS2中,您必须使用原型来实现类在AS3中为您做的事情。例如:

AS2原型:

MovieClip.prototype.flip = function():Void
{
    this._rotation += 180;
}

AS3类,可用作所有MovieClip的基类:

package
{
    import flash.display.MovieClip;

    public class MyMovieClip extends MovieClip
    {
        public function flip():void
        {
            rotation += 180;
        }
    }
}

虽然创建自己的类有更多代码,但您现在可以扩展此类,只需从其中调用flip()即可运行flip()方法。在AS2中,您必须与MovieClip.prototype.flip()函数处于相同的范围才能访问它,这可能会导致混乱。

以下是创建MovieClip的AS2和AS3比较,将其添加到舞台然后使用flip()函数:

<强> AS3:

var mc:MyMovieClip = new MyMovieClip();
mc.flip();

addChild(mc);

<强> AS2 ::

MovieClip.prototype.flip = function():Void
{
    this._rotation += 180;
}
var mc:MovieClip = attachMovie("your_library_mc", "newname", this.getNextHighestDepth());
mc.flip();

答案 2 :(得分:0)

正如其他几个人所说,AS2和AS3是不同的语言,甚至可以在flash播放器,AVM和AVM2(Actionscript虚拟机)中的不同虚拟机上运行。

但是,大多数AS2代码都具有直接的AS3等价物,而在时间线代码的情况下,名称通常是相同的(例如gotoAndPlay,stop等)。你可以在这里找到一个方便的备忘单: http://actionscriptcheatsheet.com/downloads/as3cs_migration.pdf 一般来说,如果AS3中没有与你的AS2相同的AS3,那么就有更好更强大的方式。

您还可以查看一本书“The ActionScript 3.0 Migration Guide”,也可以查看。

此外,您可以通过LocalConnection使AS2和AS3代码相互通信。网上有很多关于这个的方法。