ActionScript 2.0 和 ActionScript 3.0 有啥区别

Posted

技术标签:

【中文标题】ActionScript 2.0 和 ActionScript 3.0 有啥区别【英文标题】:What is the difference between ActionScript 2.0 and ActionScript 3.0ActionScript 2.0 和 ActionScript 3.0 有什么区别 【发布时间】:2011-08-31 15:44:01 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

AS2 原型:

MovieClip.prototype.flip = function():Void

    this._rotation += 180;

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

package

    import flash.display.MovieClip;

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

虽然在创建您自己的类时需要更多代码,但您现在可以扩展该类并简单地从其中调用flip() 来运行flip() 方法。在 AS2 中,您必须与 MovieClip.prototype.flip() 函数在同一范围内才能访问它,这可能会导致混乱。

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

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】:

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

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

【讨论】:

还有一个非技术性附录:AS2 是传统语言,AS3 是当前语言。添加到 Flash 播放器的新功能通常无法从 AS2 中使用。【参考方案3】:

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

但是,大多数 AS2 代码具有直接的 AS3 等效项,并且在时间线代码的情况下,名称通常相同(例如 gotoAndPlay、stop 等)。你可以在这里找到一个方便的备忘单: http://actionscriptcheatsheet.com/downloads/as3cs_migration.pdf 通常,如果没有与您的 AS2 中的 AS3 等效的 AS3,则可以使用更好、更健壮的方法来代替。

还有一本名为“ActionScript 3.0 迁移指南”的书,您可能也想看看。

您还可以通过 LocalConnection 使 AS2 和 AS3 代码相互通信。网络上有很多关于此的操作方法。

【讨论】:

以上是关于ActionScript 2.0 和 ActionScript 3.0 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Actionscript 2.0 变量和按钮问题

ActionScript 2.0 和 swc

Actionscript 2.0 if 和 else 功能不起作用?

ActionScript 2.0 - 数值效果结尾

flash actionscript 2.0 和 php

我遇到了矩阵级联代码的/ Actionscript 2.0 问题