- 浏览: 40334 次
- 性别:
- 来自: 上海
最新评论
本文是我(aw)在整理了相关文档和讨论之后,结合自己的亲自实验总结出来的一些经验和心得。我尽量描述详尽,避免模糊概念,当然也希望所有看官提出[1b]批评意见[/1b]。为了表述方便,其中术语不限定语言,如我可能会一会儿用class,一会儿用“类”。
面向对象的难点部分就是理解[1b]变量作用域修饰符(modifier)[/1b]其实也就是面向对象中我们已经熟悉的public、protected、private等等。本文还深入讨论了ActionScript3中新增的internal等概念。下面我依次列出:
[1b]一、关于package以及internal[/1b]
package,用“形而上学”的方式理解,就是物理目录下的类集合。在AS2中只需要保证文件系统的路径匹配,然后用类似“import com.awflasher.someUtils”的方法导入即可。而AS3则要求您在所有的类中声明package关键词。package的大括号对“{}”内,我们只能定义一个类,我们可以在这个大括号外面定义一些辅助类,不过这些类只能被当前这个类(你在package大括号对内定义的类)访问。当然,一个package[1b]大括号对内[/1b]只有一个类,这并不代表一个package内只有一个类。你可以在同一目录下定义多个属于该package(指代这个目录)的类。它的意义绝不是简单的“类文件集合容器”,而是一个让各种应该协同工作的类集中到一起的项目包。值得一提的是,所谓“协同工作”是指至少有一个class要引入其他一些class来进行功能设计,而这时候采用internal修饰可以省去很多getters和setters。我自己回忆起在湖南卫视的项目中用AS2开发的
[url=http://www.awflasher.com/vplayer]
Vplayer
[/url]
,两个类AVCore和AVControl就有很多getter和setter,搞的特别麻烦。internal类似public,但限定在一个package内了。在同一个package内的类可以访问同一个package内其他类的internal变量,而其他包内的类无法访问。[1b]package与类的继承性毫无关系,比如TextField和Sprite、MovieClip都继承自DisplayObject类,但TextField属于flash.text包,而MovieClip和Sprite属于flahs.display包。也就是说,包对类的限定是与继承链毫无关联的、一个新的“维度”的限定。
[/1b]附:使用一个类的时候,我们必须import这个类,或者包含这个类的package。AS2时直接写完整包路径的使用方法在AS3中不管用了,本文后面有详细介绍。
[1b]二、关于public[/1b]
public定义的类或者属性可以在任何作用域内由任何来源访问。构造函数永远都是public的,Flex中的应用程序类(Application Class)和Flash CS3中的文档类(Document Class)必须是public的。且[1b]不能缺省public这个关键词声明[/1b]。我在测试中发现,如果不声明public,Flash根本就不会获取类的定义,进而编译无法通过。
非常有必要啰嗦一下
:public可以穿越package,而类又[1b]不能使用namespace(参阅FlashCS3帮助文档:Applying namespaces)。[/1b]因此,所有被文档类调用的其它包中的类,应该一致声明为public的 。因为文档类在一个独立的包中。[1b]
[/1b]
[1b]三、关于protected[/1b]
protected声明类似AS2的private,它定义的属性只能在自己子类中可见,而其它场合都是不可见的。这一点与Java等传统OOP语言类似。
[1b]四、关于private[/1b]
注意AS3的private和AS2的private大不相同,它定义的属性只属于自己,子类可以定义毫无牵连的同名属性。
dynamic 和原来AS2的dynamic一样,用dynamic声明的类可以动态的加入属性。这些属性也可以通过delete来删除。动态加入的属性一旦被切断所有的引用就会被垃圾回收机制自动回收。有时候用System.totalMemory检测不到内存释放是因为垃圾回收机制并不是即时运行的。
[1b]五、关于dynamic[/1b]
动态(dynamic)类允许在运行时动态地添加属性,常见的动态类有MovieClip和顶级(top-level)的Array。如果您的自定义类要继承于动态类,那么请也定义为动态的,不要省略dynamic关键词。如果您喜欢阅读英文教程,会看到很多“sealed class”,其含义即“非dynamic class”。只不过并没有sealed这个关键词(AS3中,类默认就是sealed的)。
[1b]注意,在AS2中,“骨子里”是没有sealed class的!在
run-time
时,所有的AS2代码都变成了AS1的语法,sealed class无从说起了。可以说这是AS3的一个新产物。更多相关内容可以参见:[/1b]
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1850.html
发表评论
-
使用 Flash Remoting in Flash Forms 制作 Live Search
2010-04-10 10:01 579即时搜索效果察看 Live Search 的程式分成两部份 ... -
Remoting中接受query类型数据方法
2010-04-10 10:00 501var listInfo = new Array() fun ... -
Remoting中接受query类型数据方法
2010-04-10 10:00 497var listInfo = new Array() fun ... -
Flash remoting参数传递与调用补充
2010-04-10 10:00 551续flash remoting中参数传递与调用,补充其他数据类 ... -
Flash remoting参数传递与调用补充
2010-04-10 10:00 638续flash remoting中参数传递与调用,补充其他数据类 ... -
Flex2/AS3在Linux下的开发环境
2010-04-09 12:58 493这次修正了万恶的“Incorrect flash playe ... -
flash AS3的面向对象特点概述
2010-04-09 12:58 828本文是我(aw)在整理了相关文档和讨论之后,结合自己的亲自实 ... -
从AS1和AS2到AS3的观念转变
2010-04-09 12:57 642[1b]AS1/2-AS3观念的转变(Meet with n ... -
从AS1和AS2到AS3的观念转变
2010-04-09 12:57 545[1b]AS1/2-AS3观念的转变(Meet with n ... -
as3打造一个非常酷的莲花曲线效果
2010-04-09 10:04 691详细代码: var radius:int=100; va ... -
AS3.0 单一职责原则设计模式
2010-04-09 10:04 690呵呵,好久没写了。因为前段时间心情不是很好,并且各种事情比较多 ... -
AS3.0 单一职责原则设计模式
2010-04-09 10:04 675呵呵,好久没写了。因为前段时间心情不是很好,并且各种事情比较多 ... -
ActionScript 3 开发的需注意的方面
2010-04-09 10:03 541这些东东都不是很难,只是方法不常用或没注意到,以后还会陆续添加 ... -
ActionScript 3 开发的需注意的方面
2010-04-09 10:03 513这些东东都不是很难,只是方法不常用或没注意到,以后还会陆续添加 ... -
《银河动画》鼠绘教程 (1)
2010-04-08 10:22 665本教程是给对flash有基础了解的人看的(最起码你得知道fla ... -
《银河动画》鼠绘教程 (1)
2010-04-08 10:22 546本教程是给对flash有基础了解的人看的(最起码你得知道fla ... -
《银河动画》鼠绘教程 (2)
2010-04-08 10:21 531先画草图!! [url=http://space.flash8 ... -
《银河动画》鼠绘教程 (2)
2010-04-08 10:21 519先画草图!! [url=http://space.flash8 ... -
《银河动画》鼠绘教程 (3)
2010-04-08 10:21 562一般的简单动画都会吧?别告诉我你连物体移动都不会!! ... -
漫画绘制技法大放送(上)
2010-04-08 08:33 482网络收集整理(jundark) [1b]一、人体基本结构[/1 ...
相关推荐
flash cs3 面向对象的编程基础知识
抽奖程序 flash as3 分一等奖二等奖三等奖. 可以作弊,可以不作弊. 主要用到数组,随机数.
Flash as3调用外部AS脚本 很小的示例
Flash as3 全网站
Flash as3 相册
FLASH AS3 雷达tuio+UDP协议示例
flash as3 截取flash舞台画面
flash as3 拖动效果
Flash AS3中文API.我把Flash CS3的本地文档剥离出来了。方便用FD开发的朋友们使用。
flash as3 调试工具
flash AS3 中文帮助文档
flash actionscript3 DesignPattern面向对象23种设计模式的实现源代码.zip
Flash AS3 中文帮助大全。包含 Flash.ActionScript.as3.0 flash_as3_programming flash_cs3_help flash_video_encoder_help
一个用as3和面向对象方式和xml开发的模拟楼宇从地拔起效果源码! 既然是面向对象的方式 当然可以自己逐步修改扩展! 任意角度 数量 等等。。自己看吧 还算灵活
Flash as3 鼠标跟随
Flash AS3从入门到精通
这是一个比较完整的FLASH AS3 手册、帮助你更好的学习,工作!!
Flash as3 动态菜单
Flash AS3 动态注册点 类 任意点旋转Flash AS3 动态注册点 类 任意点旋转Flash AS3 动态注册点 类 任意点旋转Flash AS3 动态注册点 类 任意点旋转Flash AS3 动态...类 任意点旋转Flash AS3 动态注册点 类 任意点旋转
flash as3 3d立体墙flash as3 3d立体墙flash as3 3d立体墙