FlashMXProfessional2004V2组件的研发

2008-04-02 11:06:49来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  在Flash MX Professional 2004中,研发人员开能够在项目中自己创建新的V2组件。在开始研发V2组件之前,首先要了解MovieClip类、UIObject类和UIComponent类,因为他们是Flash V2组件的基类,任何Flash自带的组件都是他们的直接或间接子类。研发一个组件能够从原先的父类继承,扩展现有的组件类,使被创建的组件在父类的基础上进一步扩展。另外,也能够创建一个不带父类的组件,以实现一些其他的功能。在这里将重点讨论如何扩展现有的组件类。扩展一个现有组件类,通常包括以下几个步骤:

  1、组件首先作为一个电影剪辑(MovieClip)被创建,在该电影剪辑中创建两个图层,分别用于组件界面元素和脚本。然后在库的下拉菜单中选择Component Defination,在该对话框中的AS2.0 Class中输入该组件所要关联的类的完全限定名。当界面元素定义完成以后,就能够在外部文档中创建组件的属性、事件和方法,当然,组件的界面元素也能够在类中使用代码动态创建。

  2、在定义组件类文档时,首先必须导入所需要的类,前面已说过,MovieClip类、UIObject类和UIComponent类是V2组件的基类,所以假如当前创建的组件是从V2组件的任意组件扩展,那么就必须了解这三个基类,和其下的相关组件类。关于组件的特性能够查看Macromedia公司发布的组件字典,也能够直接在FlashInstalDir\en\First Run\Classes目录查看类文档代码。

  3、确定组件所要扩展的类以后,就要为组件类编写构造函数(Constructor)。一般情况下,构造函数建议为空,这样才能用对象的属性接口来定义对象属性。此外,根据初始化调用顺序的不同,有时在构造函数中配置属性会导致覆盖默认值。

  4、接下来要做的是添加组件的版本信息,假如当前研发的组件是作为组件包的一部分,那么能够把版本信息放到另外一个外部文档中。在定义版本信息时,能够继承UIObject类的静态字符串属性version。另外还需要定义三个比较重要的属性:symbolName,symbolOwner和className;他们都是从组件基类继承的。symbolName定义为静态的字符串变量,用于指定组件符号的名称;symbolOwner定义为静态的Object类型,是该类的一个完全限定名,他将在createClassObject() 方法的内部调用中被使用;className定义了组件类名称。

  5、当这些都完成以后,就要开始定义组件功能相关的属性和方法。在属性和方法定义时,比较好的做法是确定每一个属性和方法的访问特性,使组件为用户提供一个良好的应用程式接口(API)。所以在定义属性和方法时要使用private和public来声明属性的可访问性,并使用setter和getter函数来配置和获取属性的值。这样就更好的地实现了组件的封装,使用户无须了解组件的内部细节。

  任何组件必须实现两个核心方法:始化方法和大小调整。假如不在自定义组件的类文档中覆盖两个方法,Flash Player 可能会产生错误。Flash 在创建类时调用初始化方法。初始化方法应该调用父类的初始化方法,因为只有在调用此方法之后,才能正确配置width、height 和和其他的影片剪辑参数。

  
function init(Void):Void

  {

  // 调用父类的初始化方法

  super.init();

  //在这里添加和本组件相关的初始化代码

  }

  大小调整的方法也和初始化方法类似:

  function size(Void):Void

  {

  super.size();

  //在这里添加和本组件相关的大小调整代码

  }


  6、为了让属性在研发面板中可见,还必须为属性声明相关的元数据(Metadata)。元数据标记能够定义组件属性、数据绑定属性和事件。Flash 能够解释这些语句并相应地更新研发环境。元数据和类声明或单个的数据字段相关。元数据语句绑定到脚本的下一行。例如,在定义组件属性时,在属性声明的前一行添加元数据标记。在定义组件事件时,在类定义之外添加元数据标记,以便将事件绑定到整个类。对属性而言,有两个比较重要的元数据:Inspectable和InspectableList。

  Inspectable元数据定义了在“组件检查器(Component Inspector)”面板中向用户显示的组件的属性。语法如下:

  [Inspectable( value_type=value [,attribute=value,...] ) ]

  property_declaration name:type;

  Inspectable元数据还包括若干元数据标记:

  ?name:类型为String(可选),属性在研发面板中的显示名称。

  ?type:类型为String(可选)指定属性的类型。假如省略,则使用属性的类型。以下下是可接受的值: Array、 Object、List、String、Number、Boolean、Font Name、Color。

  ?defaultvalue:类型能够是String或Number(必需)。指定属性的默认值。

  ?enumeration:类型为String(可选)。指定以逗号分隔的属性合法值列表。

  ?category:类型为String(可选)。将属性划分到属性检查器中的某个特定子类别中。

  InspectableList 元数据关键字用于确切地指定属性检查器中应显示可检查参数的哪个子集。能够将 InspectableList 和 Inspectable 组合使用,这样即可隐藏子类组件的继承属性。假如不给组件的类添加 InspectableList 元数据关键字,任何可检查的参数(包括组件父类的可检查参数)都会显示在属性检查器中。其的语法如下:

  [InspectableList("attribute1"[,...])]

  // class definition

  InspectableList 关键字必须紧挨着类定义且在他之前,因为他应用于整个类。

  7、定义组件的事件,首先要使用Event元数据关键字声明事件。Event 元数据关键字用于定义组件事件。其语法如下:

  [Event("event_name")]

  在类文档中必须把 Event 语句添加到类定义之外,以便将他们绑定到类,而不绑定到类的特定成员。首先组件类会继承基类事件。假如当前定义组件的基类是UIComponent,那么该组件中已包括了MovieClip类、UIObject类和UIComponent类的28个事件。但事实上,这28个事件并不是都能够用的。其原因很简单,因为组件能够有他的组成结构,组件内部可能更有组件或是其他的元件实例。组件要为用户提供一个统一的接口,就必须抽取其内部结构的某些事件并把他们定义为组件的事件,这是一种基于组件内部组成结构的事件。比如说组件包括两个文本框T1和T2,这时能够根据组件的功能需要把T1的change事件发布为组件的PP事件,而把T2的change事件发布为组件的UU事件,当然关于组件事件的名称能够由组件研发人员自己定义。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: FLASHMX2004AS实例:《开心快乐》

下一篇: 用Flash制作一个网站流言板