【发布时间】:2011-08-31 15:44:01
【问题描述】:
版本之间的主要区别是什么?
【问题讨论】:
标签: actionscript-3 actionscript actionscript-2
版本之间的主要区别是什么?
【问题讨论】:
标签: actionscript-3 actionscript actionscript-2
在 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();
【讨论】:
除了库更改之外,Actionscript 3 是为完全不同的虚拟机 (AVM2) 编译和运行的,该虚拟机是从头开始重写的。据报道,它执行编译的 AS3 代码的速度比为 AVM1 虚拟机编译的代码脚本快 10 倍。
您应该查看this doc 了解 AS2 和 AS3 之间的差异列表,因为在 SO 上无法更好地解释它们:)
【讨论】:
正如其他一些人所说,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 代码相互通信。网络上有很多关于此的操作方法。
【讨论】: