`
hgfghww6
  • 浏览: 42081 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

flash AS3的面向对象特点概述

阅读更多

 本文是我(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
分享到:
评论

相关推荐

    flashas3 api使用手册

    AS3中的所有数据都是对象,这使得它更接近于传统的面向对象编程语言。基础知识点包括变量声明(var关键字)、数据类型(Number、String、Boolean等)、操作符(赋值、比较、逻辑)、流程控制(if语句、for循环、...

    FLASH AS3 入门各类实例源码

    1. **ActionScript 3概述**:AS3是Flash Professional和FlashDevelop等开发工具中的核心语言,相比于AS2,它具有更严谨的类型系统、更好的性能和更现代的面向对象特性。AS3的语法更接近于Java和C#,提供了更强大的...

    flash as3.0入门

    本资源摘要信息涵盖了 Flash AS3.0 的基础知识点,并提供了对 ActionScript 3.0 的概述、发展历史、新特点、应用领域和 Flash CS3 的动作面板介绍等方面的知识点,为学习 Flash AS3.0 提供了一个系统的入门指南。

    flashAS3小游戏范例

    同时,这也可以帮助我们理解AS3的面向对象编程思想,掌握类的继承、封装和多态性。 总结,Flash AS3小游戏范例提供了一个宝贵的实践平台,让开发者有机会深入理解ActionScript 3的核心特性,提升游戏开发技能。无论...

    Flash AS3 游戏

    - **ActionScript 3.0 (AS3)**:AS3 是一种强大的面向对象编程语言,用于创建应用程序、游戏和服务,通常与 Adobe Flash Player 和 Adobe AIR 结合使用。 - **Sprite 类**:在 Flash 开发中,`Sprite` 是一个非常...

    flash as3 cs5的API文档

    AS3是Flash Player中的脚本语言,相比之前的AS2,它引入了更多的面向对象特性,如类、包和命名空间,提高了代码的可维护性和性能。AS3的强类型系统也使得代码更加严谨,减少运行时错误。 二、Flash CS5 API基础 ...

    as3教程,手把手教你在flashbuilder4下开发as3

    **语言概述** 提供了 AS3 的整体框架,包括其设计哲学、基本特点等。 **对象和类** 是 AS3 的核心概念。深入理解对象和类的关系,可以帮助开发者更好地设计和组织代码。 **包和命名空间** 的使用有助于组织代码...

    flash毕设含论文 as脚本

    在AS3版本中,它引入了面向对象编程的概念,包括类、对象、包和接口,这使得开发者能够构建更复杂的应用程序。 在“撞砖块.fla”文件中,我们可能看到的是一个经典的弹球打砖块的游戏。FLA文件是Flash的源文件格式...

    flash actionscript3 as3编写的 仿雷电 战机游戏.zip

    ActionScript3是Flash Professional和Flex Builder等Adobe开发工具中的编程语言,它带来了面向对象编程的完全支持,提高了代码执行速度,使得创建复杂的交互式内容成为可能。与AS2相比,AS3的类和包结构更为严谨,...

    AS3殿堂之路完整版非扫描高清适合as初学者

    1. **基础语法**:AS3采用面向对象编程(OOP),包括类、对象、封装、继承和多态等概念。学习者需要了解变量声明、数据类型(如Number、String、Boolean等)、运算符、流程控制语句(如if-else、for、while)以及...

    Flash.ActionScript.as3.0 詳細教程(中文).pdf

    - **关于ActionScript**:ActionScript 是一种强大的、面向对象的脚本语言,主要用于Flash 平台上的交互式内容开发。随着版本的演进,ActionScript 3.0 在性能、安全性和易用性方面有了显著提升。 - **ActionScript ...

    flv播放器(as3)

    ActionScript 3相较于早期版本有显著提升,语法更接近现代面向对象语言,提高了性能和代码的可读性。AS3中的核心概念包括类、对象、包、接口等,这些都为构建复杂的播放器提供了坚实的基础。 **Video类** 在AS3中,...

    as3学习好资料

    - **面向对象编程 (OOP)**:AS3 支持封装、继承和多态等面向对象编程特性,使得代码更加模块化和易于维护。 - **事件处理**:事件系统是 AS3 的核心组成部分之一,通过监听器可以响应用户的输入或外部条件的变化。 -...

    AS 编程 FLASH

    ActionScript是一种面向对象的脚本语言,最初由Macromedia公司为Flash平台开发,后来随着Flash的发展而成为其核心组成部分之一。ActionScript被用来控制动画、创建交互式用户界面、实现数据处理等功能,极大地扩展了...

    as3移动开发教程

    AS3采用面向对象编程,理解类的继承、封装和多态性是至关重要的。 2. Adobe AIR概述:AIR是一个运行时环境,允许开发者使用标准Web技术(如HTML、CSS、JavaScript或AS3)创建桌面和移动设备的应用程序。理解AIR的...

    AS3.0语言在Flash编程中的应用

    - **ActionScript 3** (AS3): 是ActionScript的一个重要版本,显著提高了性能,并引入了许多新特性,如面向对象编程(OOP)支持、垃圾回收机制等。 - **AS3的优点**: - 性能大幅提升。 - 更强大的OOP支持。 - ...

    《网页制作与设计》立体化电子课件第章-Flash之AS编程(“事件”相关文档)共64张.pptx

    总之,《网页制作与设计》课程中的Flash AS编程部分深入介绍了ActionScript语言的基础,包括其历史、语法特点、面向对象编程的概念,以及如何在Flash环境中编写和运行ActionScript代码。这为学生提供了创建动态网页...

    AS3.

    虽然技术发展日新月异,但AS3所蕴含的核心编程理念和实践,如面向对象编程、性能优化、事件驱动等,对于任何领域的软件开发都具有深远的影响和借鉴价值。因此,深入学习和理解AS3,不仅能帮助开发者在特定领域内取得...

Global site tag (gtag.js) - Google Analytics