- 浏览: 40809 次
- 性别:
- 来自: 上海
最新评论
本文是我(aw)在整理了相关文档和讨论之后,结合自己的亲自实验总结出来的一些经验和心得。我尽量描述详尽,避免模糊概念,当然也希望所有看官提出批评意见。为了表述方便,其中术语不限定语言,如我可能会一会儿用class,一会儿用“类”。
面向对象的难点部分就是理解变量作用域修饰符(modifier)其实也就是面向对象中我们已经熟悉的public、protected、private等等。本文还深入讨论了ActionScript3中新增的internal等概念。下面我依次列出:
一、关于package以及internal
package,用“形而上学”的方式理解,就是物理目录下的类集合。在AS2中只需要保证文件系统的路径匹配,然后用类似“import com.awflasher.someUtils”的方法导入即可。而AS3则要求您在所有的类中声明package关键词。package的大括号对 “{}”内,我们只能定义一个类,我们可以在这个大括号外面定义一些辅助类,不过这些类只能被当前这个类(你在package大括号对内定义的类)访问。当然,一个package大括号对内只有一个类,这并不代表一个package内只有一个类。你可以在同一目录下定义多个属于该package(指代这个目录)的类。它的意义绝不是简单的“类文件集合容器”,而是一个让各种应该协同工作的类集中到一起的项目包。值得一提的是,所谓“协同工作”是指至少有一个class要引入其他一些class 来进行功能设计,而这时候采用internal修饰可以省去很多getters和setters。我自己回忆起在湖南卫视的项目中用AS2开发的Vplayer,两个类AVCore和AVControl就有很多getter和setter,搞的特别麻烦。internal类似public,但限定在一个 package内了。在同一个package内的类可以访问同一个package内其他类的internal变量,而其他包内的类无法访问。package 与类的继承性毫无关系,比如TextField和Sprite、MovieClip都继承自DisplayObject类,但TextField属于 flash.text包,而MovieClip和Sprite属于flahs.display包。也就是说,包对类的限定是与继承链毫无关联的、一个新的 “维度”的限定。
附:使用一个类的时候,我们必须import这个类,或者包含这个类的package。AS2时直接写完整包路径的使用方法在AS3中不管用了,本文后面有详细介绍。
二、关于public
public定义的类或者属性可以在任何作用域内由任何来源访问。构造函数永远都是public的,Flex中的应用程序类(Application Class)和Flash CS3中的文档类(Document Class)必须是public的。且不能缺省public这个关键词声明。我在测试中发现,如果不声明public,Flash根本就不会获取类的定义,进而编译无法通过。
三、关于protected
protected声明类似AS2的private,它定义的属性只能在自己子类中可见,而其它场合都是不可见的。这一点与Java等传统OOP语言类似。
四、关于private
注意AS3的private和AS2的private大不相同,它定义的属性只属于自己,子类可以定义毫无牵连的同名属性。
dynamic 和原来AS2的dynamic一样,用dynamic声明的类可以动态的加入属性。这些属性也可以通过delete来删除。动态加入的属性一旦被切断所有的引用就会被垃圾回收机制自动回收。有时候用System.totalMemory检测不到内存释放是因为垃圾回收机制并不是即时运行的。
五、关于dynamic
动态(dynamic)类允许在运行时动态地添加属性,常见的动态类有MovieClip和顶级(top-level)的Array。如果您的自定义类要继承于动态类,那么请也定义为动态的,不要省略dynamic关键词。
六、关于继承(extends)和override
继承其实并不太复杂,唯一要说明的就是:子类的构造函数一定要用“super”调用一次父类的构造函数,否则报错!对于继承后的子类,如果要重新定义父类的非private方法,必须使用override关键词。在ovpackage {
import flash.display.MovieClip;
public class SuperExample extends MovieClip
{
public function SuperExample()
{
var myExt:Extender = new Extender()
trace(myExt.thanks()); // output: Mahalo nui loa
}
}
}
class Base {
public function thanks():String
{
return “Mahalo”;
}
}
class Extender extends Base
{
override public function thanks():String
{
return super.thanks() + ” nui loa”;
}
}
override不能用于重载变量(成员属性)。但是却可以用于重写getter和setter函数,例如:(官方帮助的例子)
package
{
import flash.display.MovieClip;
public class OverrideExample extends MovieClip
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1860.html
发表评论
-
Flv网络播放器制作全攻略
2010-04-10 09:54 690***************************** ... -
flash中NetConnection与NetStream知识整理
2010-04-10 09:54 754NetConnection只有一个connect方法,NetS ... -
flv制作工具大全
2010-04-10 09:53 553Collected links to Flash Vid ... -
FLV播放器汇总
2010-04-10 09:53 555http://www.dengjie.com/weblog/c ... -
FCS阅读笔记27 FCS安全问答
2010-04-10 09:53 567[1b]什么是FlashCom Server ... -
【as3】ActionScript 3.0体验试教学视频教程
2010-04-09 12:51 475很不错的视频教程 原文地址: http://blog.sina ... -
as3 使用sound类(翻译)-暂停和继续播放声音
2010-04-09 12:51 571[1b]问题十[/1b] 如何暂停声音,如何从暂停的地 ... -
flash as3面向对象心得
2010-04-09 12:50 664本文是我(aw)在整理了相关文档和讨论之后,结合自己的亲自实验 ... -
AS3数据存取方式效率比较
2010-04-09 12:50 610通常我们存取数据有如下几种方式:Array, Object, ... -
as3游戏开发之打气球系列(二)
2010-04-09 08:30 509HI,经过了昨天疯狂的理 ... -
我对as3声音架构的理解
2010-04-09 08:30 744一直都对as3的声音架构 ... -
as3.0游戏开发之打气球系列(一)
2010-04-09 08:30 563好久没有写正经的文章 ... -
as3按钮事件
2010-04-09 08:29 608在刚开始学As3时,如果不知道按钮的事件如onPress的话 ... -
【as3】ActionScript 3.0体验试教学视频教程
2010-04-09 08:29 538很不错的视频教程 原文地址: http://blog.sina ... -
动画人物运动规律与节奏
2010-04-08 07:54 525本文转自:h ... -
Flash绘制美丽风景画之海滩
2010-04-08 07:54 566过前段时间学习,我们掌握了鼠绘的一些初步知识,今天我们来综合一 ... -
Flash制作卷轴水墨画展开动画效果
2010-04-08 07:54 607北京奥运会开幕式上那充满诗意的卷轴,以及它所呈现给我们的一幅幅 ... -
Flash鼠绘入门第十三课:绘制美丽春日飞燕
2010-04-08 07:54 457相传燕子于春天社日北 ... -
跑动的小火柴人(flash动画)
2010-04-08 07:53 576本教程描绘的是完全用ActionScript做的一个火柴棍小人 ... -
As2 Class 的 Private 属性
2010-04-07 10:24 671今天和Chun研究了一下 class 的 private 和 ...
相关推荐
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立体墙