自从 Adobe 推出了带有 Flash Player 9 的 ActionScript 3 以来,我们中的许多人一直在缓慢地切换。简而言之,我想知道作为框架的 AS3 可以做什么,这在 AS2 中根本不可能或非常困难。我不是在谈论现成的组件,而是内置的类,例如用于 Web 远程处理、二进制数据操作、XML 处理等。
5 回答
好吧,实际上,AS3 是一种语言,而不是框架……Flash 播放器 API 具有类似特征的框架……但是好吧,我们不要争论术语……所以在 Flash Player 9 中有什么很酷(除了那些已经提到过)?
- 一些让你的生活更轻松的语言特性:方法闭包(不需要 Delegate)、可选参数(与 AS2 可选参数相比节省了大量时间,这是一种 hack)、实例范围解析(你可以访问成员来自在该实例的方法中声明的匿名函数中的实例,因此不需要 var self = this;)
- 通用 API 设计:API 更干净、更合理地打包,有正确定义的常量(在许多类中
flash.filters.BitmapFilterType
,如 package flash.net
:Socket
:真正的套接字,而不是 XML 套接字……这允许实现任何基于 TCP 的协议URLStream
:这实际上非常强大,但就个人而言,我总是使用套接字代替
package flash.display
:更干净,更一致,更细化(从而减少开销)......此外,您最终可以将对象从显示列表中移除,更改其父级等......输入事件不再通过单个处理回调(有时是一个地狱般的限制),它们以合理的方式触发(在具有焦点的对象上),它们在嵌套InteractiveObject
的 s 中触发......然后在显示列表上冒泡......Loader::loadBytes
: 允许在运行时使用 ActionScript 生成 swf 并将它们直接加载到播放器中,以及手动缓存Stage::frameRate
:最后,您可以在运行时更改它DisplayObject::getBounds
&DisplayObject::getRect
:比摆弄 AS2 等效的这个令人难以置信的愚蠢返回值要好得多...
package flash.events
:上面部分提到,与 DisplayObjectModel 结合使用,它更干净,更强大,非常可重用......做得好,真的......package flash.utils
:ByteArray
:在合理的时间内处理二进制数据……这允许 JPG 或 PNG 压缩,在客户端创建 PDF 等等Dictionary
:允许将对象映射到对象...这非常方便(您可以将其破解到 AS2 中,但这不是您的问题,对吗?)...例如,这对于创建集合或映射对象非常有用到处理程序等Proxy
:代理类非常强大,玩起来非常有趣,真的......将它用于代理,集合,AOP等......Timer
: 好的,现在这可以很容易地在 AS2 中重新实现,但除此之外,我认为它比摆弄setInterval
...
package flash.text
:TextField
: 更大的 API,允许许多很酷的东西,例如获取字符/行度量等。...Font.registerFont
:允许在运行时嵌入字体- 整体设计更加干净和强大
package flash.sampler
: 这真的很有帮助,当你试图找到瓶颈时package flash.media
: 更好的 API,特别SoundChannel
是SoundTransform
非常有用...
请注意,事件模型和显示列表可以在 AS2 中以额外的性能成本重新实现,但我认为这是关于内置功能...
我想,就是这样……
问候
back2dos
一个很大的优点是速度。 AS3 比 AS2 快得多。这显然允许您进行更密集的编码/动画。
还有一种说法是,所有新推出的东西(内置 3D、像素弯曲等)都是针对 AS3 的,所以如果你坚持使用 AS2,那么你已经落后于“尖端”3 年左右.
作为一个列表:
- 本地加载和保存
- flash.text.engine 及其所有新功能(相当大)
- 原生 2.5D(Matrix3D、PerspectiveProjection 等)
- 自定义 URL 请求
- 二进制数据操作(在 AS2 中非常简单)
- “快速”位图操作(它允许的比 AS2 多得多)
- 自定义滤镜(Pixel Bender)
- 新的绘图 API 有一些新功能
- E4X XML
- 炼金术
- 反向运动学
- DRM 媒体(不确定在 AS2 中是否可行)
我可能忘记了很多...
除了转向更类似于 Java 的 OO 方法(更严格)之外,缺少的许多东西之一是将舞台变成位图的能力。您可以使用显示列表更好地控制影片剪辑的位置。一个例子是,如果剪辑 A 包含剪辑 B,您可以通过代码重新排列 B,使其包含 A。有很多类似的东西可以实现更多控制。XML 更易于使用,事件处理更符合现代语言。一个很酷的功能是能够将字节数组发送到服务器端脚本,它允许您将 jpg、gif 和 png 直接从闪存保存到服务器上。
还有更多的例子,但我现在想不出任何例子
Peter Elst 有一个不错的视频播客,介绍了 ActionScript3 中可用的功能