Flash 组件应用与开发

原创 2004年06月07日 09:39:00

第五部分  Flash 组件应用与开发<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

一、Flash 组件概述

组件是带有参数的电影剪辑,这些参数可以用来修改组件的外观和行为。每个组件都有预定义的参数,并且它们可以被设置。每个组件还有一组属于自己的方法、属性和事件,它们被称为应用程序程接口(Application Programming InterfaceAPI)。使用组件,可以使程序设计与软件界面设计分离,提高代码的可复用性。Flash MX 2004 Flash MX Professional 2004 中包含的组件不是 FLA 文件,而是 SWC 文件。SWC 是用于组件的 Macromedia 文件格式。库项目中的电影剪辑可以被预编译成swf文件。这样可以缩短影片测试和发布的执行时间。将 SWC 文件拷贝到 First Run/Components目录后,该组件便会出现在“组件”面板中。

 

二、组件基类

       Flash 自带的组件都位于mx.controls包中。组件直接或间接继承于UIComponent类,UIComponent类对UIObject类做了扩展,而UIObject类又是MovieClip类的子类。MovieClip类不属于任何包,定义文件位于FlashInstalDir/en/First Run/Classes目录。UIComponent类和UIObject类都位于mx.core包中,定义文件位于FlashInstalDir/en/First Run/Classes/mx/core目录。

 

       UIObject类对MovieClip类进行封装,所有Flash V2组件都可以共享它的方法、属性和事件。UIObject类使组件在样式、事件和缩放比例调整上得到了实现。它提供了动态创建删除组件的方法:

       ·createObject方法:直接调用attachMovie函数,返回一个MovieClip类型的引用。

       ·createClassObject方法:调用createObject方法,创建一个指定类的组件实例,并返回所创建的组件的引用。

       ·createEmptyObject方法:创建一个空的UIObject实例。

       ·destroyObject方法:使用delete语句删除已经创建的组件实例。

UIObject还封装了其它的一些方法,包括:

·redraw方法:在当前帧重新绘制组件。

·invalidate方法:标记组件,使之在下一个帧间隔重新绘制。

·move方法:把组件移动到指定位置。

·setSize方法:设置组件大小。

·setSkin方法:设置组件皮肤。

·getStyle方法:获取样式信息。

UIObject类的属性除了scaleXscaleY外,其它都是只读属性,使用时需要注意。所以如果要在运行时调整组件外观,就必须使用UIObject类的方法。对于只读属性的赋值是无效的,即使是对非只读属性的赋值,有时也会造成组件在外观显示上的差错。UIObject类还定义了一系列的事件,包括加载事件(load)、卸载事件(unload)、移动事件(move)、重绘事件(draw)和大小调整事件(resize)。

利用UIObject类的组件创建方法,可以在运行时创建组件实例。

UIComponent类从UIObject类继承,它并不是一个可视的组件。和UIObject类一样,所有Flash V2组件都可以共享它的方法和属性。它实现了组件的焦点获取、键盘输入,组件的禁用和启用以及组件的按布局调整自动大小。

UIComponent类的主要方法有:

·getFocus方法:利用焦点管理器(Selection)返回一个当前获取焦点的对象的引用。

·setFocus方法:使组件获取焦点。

UIComponent类的enabled属性指定组件实例是否可用;tabIndex属性指定组件的焦点获取顺序。UIComponent类还定义一系列焦点和键盘事件:焦点获取事件(focusIn),焦点转移事件(focusOut)、键盘按下事件(keyDown)和键盘释放事件(keyUp)。

 

三、Flash V2 组件的基本使用方法

Flash MX 2004 Flash MX Professional 2004自带了一套组件称为Flash V2组件,它是从Flash MXV1组件升级而来的,V1组件和V2组件尽量不要一起使用以免发生一些错误。V2组件支持实时预览,使开发者在编辑状态下就能看到组件的外观效果。开发者可以自行设置是否需要实时预览和实时预览的模式,以节省计算机资源。在ControlàEnable Live Preview菜单设置是否使用实时预览,在ViewàPriview Mode菜单选择预览模式。组件实质上是一些被编译好的电影剪辑,其格式为SWCSWC文件类似与Zip文件,可以使用一般的解压缩程序进行解压查看其内容。电影剪辑可以在编辑环境中直接发布为组件,也可以直接编译存储为swc格式的组件文件,便于其他开发者使用。同样,开发者也可以从外部导入组件。

使用组件,必须把组件面板中所需要的组件拖到舞台(Stage),使组件出现在库面板。这样组件就可以象普通的库项目一样被使用。使用脚本可以动态的创建组件实例,运行时创建组件可以有三个方法:createObject()creatClassObject()attachMovie()attachMovie()MovieClip类的方法,createObject()creatClassObject()UIObject类方法,但事实上它们都是对attachMovie()的直接或间接调用。

组件被添加后可以在属性或参数面板中直接设置组件的参数。另外还要为组件定义事件,最简单的方法是使用on(eventName)进行定义。另外还可以使用侦听器和事件处理函数等定义组件事件的处理方法。组件的事件定义比较灵活,使用何种方式定义取决与个人的习惯与偏好。当事件发生时,组件会广播一个Object类型的事件参数,该参数中包括了事件发生对象和事件类型的信息。另外,使用深度管理器(DepthManager)可以对组件进行深度管理。

       Flash组件最大的特点是开发者可以自定义组件,尤其是界面元素的自定义,使其更具有吸引力。V2组件有它自己的一套默认界面方案,称为主题(Theme)。主题包括两个方面:样式(Style)和外观(Skin)。UIObject类的setStyle()getStyle()方法可以获取和设置组件的样式。样式的设置比较简单,主要有以下三种方式:

·直接设置属性:

T.color=0xff5567;

·使用简单的setStyle()名值对方法自定义样式:

instanceName.setStyle("property", value);

·把样式对象与setStyle()方法结合使用来自定义样式:

//创建一个样式对象

var styleObj = new mx.styles.CSSStyleDeclaration;

//刻画样式细节

//…… 

styleObj.fontSize = 18;

//把样式应用到组件实例

b.setStyle("styleName", styleObj);

样式的级别包括4个层次:全局样式,应用于所有组件;组件类单独的默认样式,应用于某一类的组件;自定义样式;直接设置组件实例的属性。对于不同级别的样式Flash按照一定的顺序分别把这些样式应用到组件。

首先,Flash 查找组件实例上的样式属性,如果实例上没有直接设置样式,Flash 将查看实例的styleName 属性,确定是否向它分配了样式声明。如果 styleName 属性没有被分配样式声明,Flash 将查找默认类样式声明上的属性。如果没有类样式声明,并且属性没有继承它的值,则将检查 _global 样式声明。如果属性未在 _global 样式声明中定义,则该属性为 undefined

另外,如果没有类样式声明,但属性确实继承了它的值,Flash 将查找该实例父级上的属性。如果属性未在父实例上定义,Flash 将检查父实例的 styleName 属性;如果未定义该属性,Flash 将继续查看父实例,直到 _global 级别。如果属性未在 _global 样式声明中定义,则该属性为undefined

另一方面,为了更好的使用组件,还需要修改或重新定义组件外观。Flash V2的外观定义文件位于FlashInstralDir/en/First Run/ComponentFLA文件夹下。在修改外观时,需要把原始的外观定义文件作为外部库导入(FileàOpen External Library),并把外部库中的外观定义库项目拖到当前文档的库中,外观库项目通常都是电影剪辑(MovieClip)。每一个组件外观定义库项目文件夹中都包含一个States文件夹,其中定义了组件在不同状态下的外观,每一个状态都指定了一个链接名(linkageName)作为脚本引用,如果修改了这个名称,则会使组件在该状态下的外观加载发生错误。在组件的类文件中,每一个状态都使用一个字符串属性指定其外观库项目的链接名,如果要重新定义组件某一状态下的外观,只要在脚本中修改这个字符串属性的值就可以了,当然首先必须存在可链的新的外观库项目。

了解了这样一个组件外观机制以后,组件外观的修改就变的非常简单。其关键就是修改或重新定义一组新的外观库项目并指定其链接名,然后修改组件类文件中指定组件外观的属性。开发者可以在组件实例的初始化事件(initialize)中修改组件实例的外观。修组件所有实例外观的方法比较多,例如_root的第一帧使用ClassName. prototype.stateName=value语句,该语句也可以直接在#initclip#endinitclip代码块中使用;另外还可以使用类继承的方式,在组件初始化时就为组件外观链接属性指定新的值,这里也需要用到#initclip#endinitclip代码块。#initclip#endinitclipFlash的编译器命令,作为初始化代码块的开始标记和结束标记。只要符号(symbol)被定义,那么初始化代码就被先于第一帧执行,而且紧执行一次。所以在这个代码块中,可以为整个组件类指定不同状态下的外观。

Flash 组件应用与开发(下)

              Flash 组件应用与开发(下)四、Flash V2组件开发在Flash MX Professional 2004中,开发人员开可以在项目中自己创建新的V2组件。在开始开发...
  • 9116
  • 9116
  • 2004年06月07日 09:44
  • 1566

使用flash air开发应用

由于使用flash as3生成的swf由于安全问题不能和本地文件系统进行交互,在网上查了一下,必须使用air开发,才有文件交互的类,所以简单介绍一下用flash cs6创建air。 首先我们要知道ai...
  • qq_26010491
  • qq_26010491
  • 2016年07月23日 18:35
  • 912

应用组件的名字与已安装应用有冲突

应用组件的名字与已安装应用有冲突 异常问题分享 华为手机 7.0系统 提示问题, 华为手机在安装浏览器下载的apk包是会抓取下载包的名字及内部部分组件名字去和应用市场内部软件校...
  • qq_18413391
  • qq_18413391
  • 2017年04月21日 14:35
  • 2798

NOR FLASH和NAND FLASH各应用在什么产品上

随着电子产品的功能日益丰富,成本效益高、功耗低、密度高及外型小的存储器产品的市场需求日益增加,NOR FLASH和NAND FLASH原本不同的市场定义,现在也慢慢的变得模糊起来了。我们从以下几个方面...
  • yxfabcdefg
  • yxfabcdefg
  • 2014年08月04日 11:07
  • 3104

C#与 Flash 程序开发

  可以尝试以下关键字进行搜索查找其他资料关键字(C#, FLASH, winform,flash嵌入C#...
  • lizhifiy
  • lizhifiy
  • 2008年03月18日 16:06
  • 975

AS3 OptionsList ---- 选项框列表类

Option类: package { import flash.display.Shape; import flash.events.Event; import flash.events....
  • linjf520
  • linjf520
  • 2012年04月11日 20:01
  • 1141

Flash中LIST组件使用总结

第一节、首先,看看是如何将数据添加进LIST组件中,以及如何显示鼠标点击的对象。 1、静态生成方法: my_list.addItem("labe"l,data); 实例:新建文件,将LIST组件...
  • xyy410874116
  • xyy410874116
  • 2012年03月06日 09:55
  • 1859

flash 8组件篇:ComboBox组件

 ComboBox组件这个组件可以提供一些下拉的项提供选择,在网站使用上相当广泛好一起体现一下这样的一些应用 方法一:组件参数填写第一步:把组件拖进到舞台上当我测试影片的时候会发现,并没有选项提供我们...
  • hero82748274
  • hero82748274
  • 2007年09月20日 13:17
  • 2902

创建Flash CS3组件(一) 建立组件

创建Flash CS3组件(一) 建立组件 在Flash CS3中,出现了一个全新的组件形式--fla组件,它完全改变了以前组件难于修改皮肤的缺点,使组件更加实用. Flash CS3中的组件体系...
  • wkyb608
  • wkyb608
  • 2012年09月26日 02:00
  • 1191

关于Flash CS5 自己编写组件的教程

关于Flash CS5 自己编写组件的教程 flash cs5 在自己制作图形组件时非常简单。比...
  • xinje
  • xinje
  • 2011年01月04日 02:08
  • 5153
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flash 组件应用与开发
举报原因:
原因补充:

(最多只允许输入30个字)