Flex 3教程中AS2和AS3可视元素的转换

开发 后端
本文向大家简单介绍一下Flex 3教程中AS2和AS3可视元素的转换,主要包括主要机制变化和主要的可视化元素类介绍两大部分内容。

Flex3有很多值得学习的地方,本文和大家重点讨论一下Flex 3教程中AS2和AS3可视元素的转换,在AS3种,可视元素有很大的变化,在flash.display包中,包含了33个类/接口,比起AS2时代的MovieClip,Button,TextField等简单几个类来说,是复杂并强大了不少。

Flex 3教程中AS2和AS3可视元素的转换

1.主要机制的变化

在AS3种,可视元素有很大的变化,在flash.display包中,包含了33个类/接口,比起AS2时代的MovieClip,Button,TextField等简单几个类来说,是复杂并强大了不少。(注:下面有的地方简称可视元素为元件)
AS3的可视元素使用方法和AS2不同,AS2时代,创建一个可视元素必须通过MovieClip.createEmptyMovie(),MovieClip.createTextField()方法来创建,不方便不说,更重要的是,一个元件从创建时,就被加到了舞台上,从舞台上移出后,这个元件就不可用了。而AS3中,你可用new来创建任何可视元素,在需要用的时候把它加到舞台上,不用的时候移除下来,等到再用的时候,还可以再放上去就是。因此非常方便。由于这个特点,不同swf里面的元件可以相互使用了,比如你在swf1的library里面做了一个图标,绑定的类是Icon1,你可以把swf1加载到swf2中,然后通过newIcon1()创建一个那个图标,然后通过addChild()方法把它加到swf2的舞台上。也许你已经意识到,我们再也不需要蹩脚的共享库(SharedLibrary)了。

2.主要的可视元素类介绍

这里简单介绍一下Flex 3教程中主要的可视元素,它们各自的特点和用途。
DisplayObject:所有可视元素都继承自DisplayObject类,DisplayObject包含了一系列基本的属性、方法和事件,比如坐标x,y,透明度alpha等,有好些属性和方法和AS2的MovieClip/Button/TextField类似,但是有的是有区别的,比如alpha的取值范围就不是0到100,而是0到1,在使用的时候注意查看文档,不要犯小错误。
InteractiveObject:所有可交互的可视元素都继承自InteractiveObject类,InteractiveObject包含了一系列可交互属性、方法和事件,比如是否可点击mouseEnabled,是否可Tab接收焦点tabEnabled等,InteractiveObject自身增加的属性和方法不多,主要是交互事件上的增加。关于事件将在下一章讲解。

Bitmap:表示一个位图,可以和BitmapData很好的结合使用。
Shape:表示一个矢量图型,可以用其graphics属性代码绘制图形。
DisplayObjectContainer:可视元件的容器,可以在其中放置其他可视元件,Stage就是一个容器,所以可以向Stage中添加可视元素。DisplayObjectContainer继承自InteractiveObject,但是不能直接构造它的实例。

Sprite:最常用的元件,他继承自DisplayObjectContainer,所以通常用它来做容器或者用来实现可交互的元件。
MovieClip:继承自Sprite,增加了时间轴(帧的设定)。这个类在AS2时代是使用最多的可视元件类型了,但是到了AS3,它被使用的频率将会大大减少,因为通常很多元件是不需要时间轴的,Sprite基本上取代了它的重要位置。

Loader:加载器元件,你可以把可视内容(图片,swf等)东西加载到它里面,然后把它放入舞台上的容器里从而显示出来,这比起AS2时代必须把东西加载到MovieClip要方便多了。
TextField:显示/编辑文字的元件,它其实是在flash.text包里面的,由于也是非常重要的可视元素,所以这里一并讲解。功能和AS2时代基本相同,在关于内容尺寸计算方面有一些增强,多了不少方法。鉴于AS3可视元素可以存在于舞台之外的特点,TextField因此可以说功能大大增强,当你不使用一个TextField的时候,把它从舞台上弄下来,他的各项属性仍然保留着,下次加上舞台的时候,完璧归赵,无任何损失。
Stage:舞台类。在AS2时代,Stage可控的东西不多,而AS3中,Stage其实就是一个DisplayObjectContainer,并且还拥有其他一些属性和方法。功能很强大。当然,由于其特殊性,有的属性和方法是不能使用的,详见帮助文档。
可视元素的继承关系图如下:

3.使用注意

Flex 3教程中在AS2中的全局变量_root已经不存在了,因此要给舞台上添加内容,不是那么容易。每个DisplayObject都有一个root属性,此属性要在此元件被添加到舞台上之后才有值,因此想直接通过root往舞台上添加元件是不容易的。root属性表示一个swf的根,如果你的影片只是一个swf,那么所有DisplayObject的root值除了null之外只可能是同一个值。但是如果你加载了另一个swf到影片里,那么就有了另一个root。

DisplayObject的stage属性将会比较重要,stage表示flashplayer的播放舞台,因此不管你的影片加载了多少个swf,所有的DisplayObject的stage属性除了null都将是同一个值。stage属性在一个DisplayObject被添加到舞台上时被自动设置,从舞台上移除后,自动归null,因此,它也是指示一个元件是否在舞台上的一个标志。
没有了全局的root,并且stage也是被添加到舞台后才被设置,那么如何往舞台上添加元件呢。对于使用FlashIDE,制作的影片在播放的时候自动会被放置到舞台上,因此通过它,间接就可以访问到root和stage,因此就可以控制放置/移除到舞台的操作了。对于使用Flex2编译器的用户,编译的主文件/类必须是继承自Sprite的类,生成的swf在播放时自动会创建一个那个主类的实例然后放置到舞台上成为root,因此通过它,你也可以控制舞台了。只是,可能用起来不如AS2中直接控制_root来的方便。
 

【编辑推荐】

  1. 解析Flex3教程中AS2和AS3之间事件转换
  2. Flex安全沙箱问题解决方法
  3. 技术前沿 看Flex客户端缓存技术如何使用
  4. 解析Flex全屏模式设置方法
  5. Flex内存泄露解决方法和内存释放优化原则

 

 

责任编辑:佚名 来源: csdn.net
相关推荐

2010-08-02 10:41:06

Flex3教程

2010-08-02 10:18:06

Flex3教程

2010-08-02 10:35:19

Flex3教程

2010-07-28 11:12:19

Flex正则表达式

2010-08-02 10:50:55

Flex3

2010-08-02 14:04:29

Flex4教程

2010-05-25 16:23:04

安装MySQL

2020-03-25 18:23:07

Vue2Vue3组件

2010-08-02 13:04:04

Flex3

2010-08-09 09:41:02

Flex3

2010-08-03 09:05:55

Flex3SDK

2022-08-01 08:02:25

单元格可视化语法

2012-01-06 13:48:59

flash

2021-06-26 06:29:14

Vue 2Vue 3开发

2010-07-27 09:37:44

Flex

2009-07-16 14:09:24

Flex3到Flex4

2012-05-10 10:55:03

CSS

2010-08-02 12:44:01

Flex3Flex4

2014-06-30 09:24:48

数据可视化

2009-07-03 08:58:22

Flex教程Flex程序
点赞
收藏

51CTO技术栈公众号