Dem*_*cht 6

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

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

  • 还有一个非技术性附录:AS2是传统语言,AS3是当前的语言.添加到Flash播放器的新功能通常无法从AS2使用. (4认同)

Mar*_*rty 1

在 AS3 中,您可以更有策略地构建和组织您的应用程序。它比 AS2 更快、更简洁并且更值得推荐。主要区别在于,您可以开发比 AS2 具有更强 OOP 影响力的 Flash 应用程序。

AS3 使得使用第三方代码变得更加容易,例如 Greensock 的 Tweenlite、Papervision 3D 和 box2d。

在 AS2 中,您必须使用原型来杂乱地实现类在 AS3 中可以为您做的事情。例子:

AS2原型:

MovieClip.prototype.flip = function():Void
{
    this._rotation += 180;
}
Run Code Online (Sandbox Code Playgroud)

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

package
{
    import flash.display.MovieClip;

    public class MyMovieClip extends MovieClip
    {
        public function flip():void
        {
            rotation += 180;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

AS3:

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

addChild(mc);
Run Code Online (Sandbox Code Playgroud)

AS2::

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