版本之间的主要区别是什么?
答案 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代码相互通信。网上有很多关于这个的方法。