由《AS3 Cookbook》中的两个疏漏所想到的

由于Flash CS3的Document Class又可以从Sprite继承,因此此文描述的一些问题尚待考证。值得肯定的是text仍然继承自DisplayObject,但却不属于flash.display包,而是flash.text包!

相信很多人肯定都拿到了早先放出的《ActionScript 3.0 Cookbook》 在手。其中第16章第4节 《Recipe 16.4. Reading Video Duration》讲到的例子在某些的Flash 9 Public Alpha 中是无法正常编译的。在一些老的Public Alpha 中也会有问题。主要就是两个方面

一、Document Class必须从MovieClip继承,而不能从Sprite 继承了。

二、TextField、TextFieldAutoSize类并不属于flash.display包,而属于flash.text包了。

其中,MovieClip-Sprite的问题只存在于某一些Flash9的PublicAlpha。具体我也说不上是哪些版本,在我这边,自己的Laptop上能跑Sprite下来的Document Class,而台式电脑上却必须从MC继承了。否则会提示一个错误信息:“ReferenceError: Error #1065: Variable addFrameScript is not defined.”。而TextField类两边都必须从flash.text中得到。

一方面,我们看的出来Adobe Flash Team还是很重视文本渲染能力的。另一方面,概念上把text相关的渲染机制与flash.display分离,是否意味着今后的渲染引擎要分开?是否意味着如现在Apollo中那样,会对TextField类提供一套类似WebKit一样的“轻量级”文本渲染引擎?毕竟官方解释的“flash.display.*负责一切显示在屏幕上的元素”在这种环境下优点自相矛盾。

很早就抱怨过Flash的文本渲染能力之差,在一切疑团揭开之前。只能寄希望于Apollo的HTML渲染引擎了,但让我担心的是,两套渲染引擎同时跑(WebKit-HTML和Flashplayer-flash.display.*)最终的性能到底能有多好……

前几天听sohu的朋友老赵说AS3的包结构还会调整,真是晕了。

ActionScript 3.0 VS 2.0 官方详细差别

有一些方法被彻底废除,包括一些8刚加入的函数,如 “loadBitmap”
call() chr() #endinitclip #include #initclip eval() set/getProperty() removeMovieClip() ….

官方地址 HTML本地下载

看了一下MC的新定义,挺庄重的,有点MSDN的味道,我顺便翻译了一下
The MovieClip class inherits from the following classes: Sprite, DisplayObjectContainer, InteractiveObject, DisplayObject, and EventDispatcher. Unlike the Sprite object, a MovieClip object has a Timeline.

The MovieClip class is the base class for Flex components. However, while Macromedia supports some of the MovieClip interface for use in Flex applications, much of the interface has been overridden by Flex. For more information on using the MovieClip class with Continue reading “ActionScript 3.0 VS 2.0 官方详细差别”