as3.0显示对象类结构
AS3中的显示列表

AS3中的显⽰列表每个AS3程序都有⼀个管理显⽰对象的机制,被称作显⽰列表。
显⽰列表包含了应⽤中所有可见的元素。
显⽰元素通常归为以下⼏类:•舞台:舞台是显⽰对象最基础的容器。
每个程序都有⼀个舞台对象,包含所有屏幕上的显⽰对象。
舞台是最⾼层的容器,位于显⽰列表的顶端。
每个SWF⽂件有⼀个关联的AS类,也就是SWF⽂件的主类。
当Flash播放器在HTML页⾯打开⼀个SWF⽂件时,Flash播放器将调⽤那个类的构造函数,所创建的实例(⼀般都是显⽰对象)会被作为⼦对象添加到舞台对象中。
主类⼀般继承Sprite类。
你可以通过任何显⽰对象实例的stage属性获得舞台对象。
•显⽰对象:在AS3.0中,⼀个应⽤中所有屏幕上出现的元素都是不同种类的显⽰对象。
flash.display包包含DisplayObject类,它是⼀个被许多其他类所继承的基类。
这些不同的类代表了不同的显⽰对象,⽐如⽮量形状,影⽚剪辑和⽂本框等。
•显⽰对象容器:显⽰对象容器是特殊种类的显⽰对象,除了他们⾃⼰有视觉特性之外,还能容纳⼦显⽰对象。
DisplayObjectContainer类是DisplayObject类的⼀个⼦类。
⼀个DisplayObjectContainer对象可以在其⼦列表中包含多个显⽰对象。
尽管所有显⽰对象继承⾃DisplayObject类,它们的类型都是DisplayObject类的⼀个明确的⼦类。
你只能创建有明确定义的外表的显⽰对象的实例。
⽐如,你可以通过合适的构造函数创建⼀个Sprite类,Shape类或Video类实例,但你不能通过调⽤DisplayObject()构造函数来创建DisplayObject类的实例。
AS应⽤的显⽰列表包含应⽤中的所有可视对象。
你可以把显⽰列表看做树结构,其中舞台是在所有内容之后的。
舞台包含SWF⽂件主类的实例(⽐如,Flash SWF中的主时间轴或者Flex SWF的应⽤组件)。
FlashAS3_0编程题库及答案

FlashAS3_0编程题库及答案河南科技⼤学--Flash AS3.0编程1、选择题:19题1、关于Flash CS4中的as3.0代码,下⾯说法正确的是()A.只能写在帧上B.只能写到ASDoc⽂件(.as)中C.可以写在帧上或者ASDoc⽂件(.as)中D.可以写在元件实例上正确答案是: C 你选择的答案是:未选 ×2、下列关于AS3.0,说法不正确的是()A.AS3.0 是⾯向对象的。
B.AS3.0 源于ECMAScript标准C.AS3.0 使⽤虚拟机AVM3来运⾏D.AS3.0 由两个部分组成:核⼼语⾔和Flash Player API正确答案是: C 你选择的答案是:未选 ×3、关于AS3.0代码中的注释,下列说法不正确的是()A.使⽤注释,既可以⽅便⾃⼰阅读,⼜可以让别⼈更好、更快地理解代码B.注释会影响程序的执⾏效率C.既可以使⽤单⾏注释,也可以使⽤多⾏注释D.在调试程序时,注释代码要⽐删除代码有更多的好处正确答案是: B 你选择的答案是:未选 ×4、下列关于trace语句的使⽤,不正确的是()A.trace(hello)B.trace(1)C.trace(true)D.trace(stage)正确答案是: A 你选择的答案是:未选 ×5、下列显⽰对象中,不能⽤来做容器的是()A.图形B.⽂本C.舞台D.影⽚剪辑正确答案是: B 你选择的答案是:未选 ×6、下列关于MainTimeline类的说法,不正确的是()A.MainTimeline类的实例名字为rootB.MainTimeline类在AS3.0中没有公开C.MainTimeline类是静态类,不能动态地添加属性D.MainTimeline类是默认的⽂档类正确答案是: C 你选择的答案是:未选 ×B.mc.xsacle=0.1;C.mc.width=0.1;D.mc.sacle=0.1;正确答案是: A 你选择的答案是:未选 ×8、x = Math.random(), x的取值范围为()A.0 < x < 1B.0 < x <= 1C.0<= x < 1D.0 <= x <= 1正确答案是: C 你选择的答案是:未选 ×9、下列说法哪⼀个是正确的:( )A.int(-0.9)==Math.floor(-0.9)B.int(-0.9)==Math.ceil(-0.9)C.int(-0.9)==Math.round(-0.9)D.没有正确答案正确答案是: B 你选择的答案是:未选 ×10、下⾯哪⼀个不能⽤来做变量名?()A. stuNameB. _abcC. 123aD. XS正确答案是: C 你选择的答案是:未选 ×11、定义变量的形式如var a;则trace(a)的结果为()A.NaNB.0C.nullD.undefined正确答案是: D 你选择的答案是:未选 ×12、有如下代码:const XYZ:int=100;XYZ=200;XYZ++;则trace(XYZ)的结果为()A.100B.200C.201D.系统报错正确答案是: D 你选择的答案是:未选 ×13、下⾯数据类型中属于复杂数据类型的是()A.intB.uintC.ArrayD.Boolean正确答案是: C 你选择的答案是:未选 ×14、有如下代码:D.234正确答案是: D 你选择的答案是:未选 × 15、有如下代码:var i:int=1;var boo:Boolean=i;trace(i==boo);trace(i===boo);则输出的结果是()A.truetrueB.truefalseC.falsetrueD.falsefalse正确答案是: B 你选择的答案是:未选 × 16、有如下代码:var a:int=10;var b:int=20;var m:int;var n:int;m=a++;n=--b;trace(m,n);则输出的结果是()A.10 19B.10 20C.11 19D.11 20正确答案是: A 你选择的答案是:未选 × 17、有如下代码:var num:int=1;if(num=2)trace(num);则输出的结果是()A.0B.1C.2D.⽆输出结果正确答案是: C 你选择的答案是:未选 × 18、有如下代码:var day,n:int;day=6;n=1;while(day>=1){ n=(n+1)*2;正确答案是: B 你选择的答案是:未选 ×19、有如下代码:var i:int;var sum_odd:int=0;var sum_even:int=0;for(i = 1;i<=100;i++){if(i%2==0)sum_even += i;elsesum_odd += i;}trace(sum_odd,sum_even);则输出的结果是()A.2500 2500B.2500 2550C.2550 2500D.2550 2550正确答案是: B 你选择的答案是:未选 ×本次测试成绩:0分河南科技⼤学--Flash AS3.0编程1、选择题:16题1、⾃定义函数要使⽤的关键字是()A.varB.voidC.functionD.const正确答案是: C 你选择的答案是:未选 ×2、要实现Flash player播放器窗⼝⾃动全屏的AS3.0代码是()A.fscommand("fullscreen");B.fscommand("fullscreen",true);C.fscommand("fullscreen","true");D.fscommand("fullscreen","false");正确答案是: C 你选择的答案是:未选 ×3、有如下代码:function maxNum(a:int,b:int,c:int):int{var max:int;if(a>b)max=a;return(max);}var m:int;m=maxNum(23,78,45);trace(m);则输出的结果是()A.23,78,45B.23C.78D.45正确答案是: C 你选择的答案是:未选 ×4、AS3.0中定义函数,表⽰⽆返回值使⽤()A.undefinedB.NaNC.nullD.void正确答案是: D 你选择的答案是:未选 ×5、有如下代码:var a:int=3;var b:int=6;function test(a:int,b:int):void{a++;b++;trace(a,b);}test(a,b);trace(a,b);则输出的结果是()A.3 63 6B.3 64 7C.4 73 6D.4 74 7正确答案是: C 你选择的答案是:未选 ×6、有如下代码:var obj:Object={name:"张三",age:20,dclass:"动漫1班"};function stuInfo(obj1:Object):void{/doc/6a00200a4a7302768e9939fb.html ="李四"; trace(/doc/6a00200a4a7302768e9939fb.html ); }stuInfo(obj);trace(/doc/6a00200a4a7302768e9939fb.html );则输出的结果是()A.张三张三B.张三李四正确答案是: D 你选择的答案是:未选 ×7、数组myArr定义如下:var myArr:Array = [{label:”同意”,data:”yes”},{label:”反对”,data:”no”},{label:”取消”,data:”cancel”}];则trace(myArr[2].data)的结果是()A.yesB.noC.cancelD.以上都不正确正确答案是: C 你选择的答案是:未选 ×8、有如下代码:var arr1:Array=new Array(2);arr1.push("abcd");trace(arr1.length);则输出的结果是()A.1B.2C.3D.4正确答案是: C 你选择的答案是:未选 ×9、有如下代码:var arr1:Array=[1,2,3,4,5];var arr2:Array=[6,7,8];var arr3:Array=arr1.concat(arr2);trace(arr3);则输出的结果是()A.1,2,3,4,5,6,7,8B.1,2,3,4,5C.6,7,8D.6,7,8,1,2,3,4,5正确答案是: A 你选择的答案是:未选 ×10、有如下代码:var arr:Array=[1,2,3,4,5];trace(arr1.join("@"));则输出的结果是()A.@1,2,3,4,5B.1,2,3,4,5@C.@1,2,3,4,5@D.1@2@3@4@5正确答案是: D 你选择的答案是:未选 ×11、有如下代码:var arr1:Array=[1,2,3,4,5];var arr2:Array=arr1.slice(1,2);trace(arr2);则输出的结果是()正确答案是: B 你选择的答案是:未选 ×12、有如下代码:vararr:Array=["MIKE","TOM","JACK","JONE","ECHO","ELLEN"];var pos:int=/doc/6a00200a4a7302768e9939fb.html stIindexOf("ECHO "); trace(pos);则输出的结果是()A.1B.2C.4D.5正确答案是: C 你选择的答案是:未选 ×13、在使⽤sort()⽅法的参数时,不会改变原数组的是 ( )A.Array.RETURNINDEXEDARRAYB.Array.NUMERICC.Array.CASEINSENSITIVED.Array.DESCENDING正确答案是: A 你选择的答案是:未选 ×14、在AS3.0的所有类中,有⼀个类是其它所有类直接或间接的⽗类,该类为()A.Stage类B.MovieClip类C.Event类D.Object类正确答案是: D 你选择的答案是:未选 ×15、AS3.0中类⽂件名的后缀是 ( )A..asB..cssC..xmlD..as3proj正确答案是: A 你选择的答案是:未选 ×16、下⾯关于类的创建,说法不正确的是 ( )A.类必须放在包(package)内,且类必须放在⼀个包中B.⽂件名,类名,类的构造函数名三者必须保持⼀致,包括⼤⼩写C.类名的第⼀个字母必须要⼤写D.所有的..as⽂件都需要在fla⽂件中使⽤正确答案是: C 你选择的答案是:未选 ×2、填空题:2题1、Array对象[15,5,0,10]使⽤sort()⽅法排序后的结果你的答案: ×参考答案:^[0,10,15,5]^^^^^^^^2、var arr:Array = [1,2,3,4];}你的答案: ×参考答案:^4,3^^^^^^^^本次测试成绩:0分Copyright © 2006 All rights reserved 河南科技⼤学--Flash AS3.0编程建议使⽤:800×600以上分辨率IE4.0以上版本浏览器河南科技⼤学--Flash AS3.0编程1、选择题:10题1、类的修饰词中,使⽤哪⼀个修饰词的类可以被其他任何类访问。
2023大学_Flash AS3.0中的事件处理详解

2023Flash AS3.0中的事件处理详解2023Flash AS3.0中的事件处理详解flash as3.0 关于按键事件的运用鼠标事件在ActionScript3.0之前的语言版本中,常常使用on(press)或者onClipEvent(mousedown)等方法来处理鼠标事件。
而在ActionScript3.0中,统一使用MouseEvent类来管理鼠标事件。
在使用过程中,无论是按钮还是影片事件,统一使用addEventListener注册鼠标事件。
此外,若在类中定义鼠标事件,则需要先引入(import)flash.events.MouseEvent类。
MouseEvent类定义了10中常见的.鼠标事件,具体如下:CLICK:定义鼠标单击事件 DOUBLE_CLICK:定义鼠标双击双击事件MOUSE_DOWN:定义鼠标按下事件 MOUSE_MOVE:定义鼠标移动事件MOUSE_OUT:定义鼠标移出事件 MOUSE_OVER:定义鼠标移过事件MOUSE_UP:定义鼠标提起事件 MOUSE_WHEEL:定鼠标滚轴滚动触发事件ROLL_OUT:定义鼠标滑入事件 ROLL_OVER:定义鼠标滑出事件键盘事件键盘操作也是Flash用户交互操作的重要事件。
在ActionScript 3.0中使用KeyboardEvent类来处理键盘操作事件。
它有两种类型的键盘事件:KeyboardEvent.KEY_DOWN 和 KeyboardEvent.KEY_UP。
KeyboardEvent.KEY_DOWN:定义按下键盘时事件KeyboardEvent.KEY_UP:定义松开键盘时事件注意:在使用键盘事件时,要先获得它的焦点,如果不想指定焦点,可以直接把stage作为侦听的目标。
时间事件在ActionScript3.0中使用Timer类来取代ActionScript之前版本中的setinterval()函数。
AS3.0编程

AS3.0编程对⽂本进⾏格式化⽂本格式化,也就是通过编程设计,设置⽂本对象的显⽰格式。
要实现⽂本格式化,在ActionScript3.0中有三种⽅式可供选择,分别为:使⽤HTML标签、使⽤TextField.setTextFormat()⽅法和使⽤CSS设置⽂本框的StyleSheet样式。
setTextFormat⽅法介绍TextField类的setTextFormat()⽅法⽤于使⽤TextFormat样式来格式化⽂本(具体的样式属性,请参见15.4.2节的内容)。
其⽤法格式如下所⽰。
setTextFormat(format,beginIndex,endIndex)参数说明如下:format:TextFormat对象,⼀个包含字符和段落格式设置信息的TextFormat对象。
beginIndex:数字,指定所需⽂本范围内第⼀个字符的从零开始的索引位置。
默认值为-1。
endIndex:数字,指定所需⽂本范围内最后⼀个字符的从零开始的索引位置。
默认值为-1。
TextFormat格式化属性介绍TextFormat格式化⽅法使⽤TextFormat类来实现。
使⽤TextFormat类可以为⽂本字段创建特定的⽂本格式。
此类设置的⽂本格式不仅可以作⽤于动态⽂本字段,也可以作⽤于静态⽂本字段。
TextFormat类的属性可以设置使⽤设备字体和嵌⼊字体。
但是,嵌⼊字体、粗体或斜体⽂本需要特定字体才能实现。
也就是说,如果要使⽤嵌⼊字体来显⽰粗体或斜体⽂本,则需要嵌⼊该字体的粗体和斜体变体。
要创建TextFormat⽂本格式,先需要使⽤new TextFormat()⽅法创建TextFormat对象,才能设置该构造函数的属性。
格式化输⼊⽂本格式化输⼊⽂本,就是设置输⼊⽂本的默认格式,在⽂本输⼊的时候,同时使⽤默认的格式。
要实现此⽅法,只需把TextFormat对象应⽤于⽂本对象的defaultTextFormat属性上。
学习as3.0常用语句

ActionScript是Flash的脚本语言,通过ActionScript才能在Flash中创作具有很强交互性的动画,而该语言的最新版本是ActionScript3.0。
学习基础知识:表达式、变量和函数等;有8个实例方法:play(); :让播放头开始或继续播放stop(); :停止播放gotoAndPlay(帧数或标签,场景); :从(转到)某帧开始播放。
gotoAndStop(帧数或标签,场景); :转到某帧并停止nextFrame(); :跳到下一帧,并停止prevFrame(); :跳到上一帧,并停止nextScene(); :跳到下一场景prevScene(); :跳到上一场影有实例属性6个:currentFrame: 记录当前播放的是第几帧currentLabel: 记录当前播放帧的标签totalFrames: 记录当前影片共有多少帧currentScene: 持有当前scene场景对象引用scenes: 一个数组,记录影片含有的全部场景对象数组currentLabels:记录着当前场景下所有FrameLabel标签对象的数组。
enabled: 默认为true.控制影片对象是否可以具有按钮行为。
常用属性语句在Flash CS中,利用属性语句可对影片剪辑的属性进行设置(如位置、大小、透明度等)。
1、侦听器在as3.0中,如要让特定的事件发生,执行预先设定的某个交互动作(如单击“播放”按钮时开始播放动画),就需要通过使用侦听器来实现。
若要确保程序响应特定的事件,必须先将侦听器添加到对应的事件目标中,或添加到作为事件对象事件流的一部分的任何显示列表对象中。
在Flash CS中,侦听器的基本结构如下:function eventResponse(eventobject:EventType):void{//要执行的脚本}eventTarget.addEventListener(EventType.EVENT_NAME,eventResponse);以上结构执行两个操作:首先定义一个函数,然后addEventListener()语句对源对象进行侦听,当特定指定的事件发生时,就执行先前定义的函数中的动作。
AS3中的stage,this,root的区别

要了解这个问题就要先对flash中的显示对象结构有一个大概的了解:第一级:舞台;第二级:当前SWF;第三级:各种容器及可视对象(如:文本框,位图……);以此类推…………stage:其中舞台(Stage)是最根本的容器,包含当前SWF的所有显示对象,每个flash程序只能有一个舞台容器。
所有显示对象的stage属性指向舞台。
root:在舞台下面的也是一个容器,被称作当前SWF主类的实例(注:AS3.0中所有容器直接或间接继承自DisplayObjectContainer类),在AS3.0中,每一个SWF都和一个类相关联,这个类就称为SWF的主类,如果没有设定文档类,则MainTimeline类(注:MainTimeLine是MovieClip 的子类)就是主类。
而root就指向当前SWF主类的实例(注:在AS2.0中,_root.指代绝对路径)。
this:this关键字持有对当前对象的引用,编译器将this关键字加在类中每一个调用实例属性和实例方法的地方。
this关键字常见使用情况:(1)向第三方提供对象自身的引用。
(2)与return结合,在类方法中返回自身的引用。
(3)和局部变量,方法参数,静态属性同名时,加上this关键字明确指定使用实例属性。
1.STAGE是根,是最顶层的容器!可以通过STAGE的任何子容器或显示对象以DisplayObjectContainer.stage(需注意的是stage是小写,如果在时间轴上trace(stage.width)是正确的,如果写成trace(Stage.width则会报错))或DisplayObject.stage访问到Stage类的唯一实例stage.就连主时间轴也是stage容器的子容器。
例如。
你在主时间轴上写上代码:trace(this);输出的是什么呢?因为你是在主时间轴上写的。
所以返回的是一个对象:MainTimeLine,也就是主时间轴了。
AS 3.0代码简介

}
测试上面两段代码,你可以看到,第一个对象Gougou在上面,坐标是(275,100),下面的Gougous生成了10个副本,横坐标从50到500依次展开,纵坐标是300,缩放率为50%.
复制代码
for(var i=0;i<3;i++){for(var j=0;j<3;j++){for(var k=0;k<3;k++){
复制代码
for(var i=0;i<10;i++){
var xGougou:Gougou=new Gougou();
xGougou.x=50*i+50;
xGougou.y=300;
xGougou.z=150*i+50;
xGougou.scaleX=.5;
xGougou.scaleY=.5;
一个布尔值,指示影片剪辑是否处于活动状态。 MovieClip
filters : Array
包含当前与显示对象关联的每个滤镜对象的索引数组。 DisplayObject
focusRect : Object
指定此对象是否显示焦点矩形。 InteractiveObject
framesLoaded : int
指定此对象是否接收 doubleClick 事件。 InteractiveObject
dropTarget : DisplayObject
[只读 (read-only)] 指定拖动 sprite 时经过的显示对象,或放置 sprite 的显示对象。 Sprite
enabled : Boolean
AS3.0

┏━━━━━━━━━━━━━━━━━━┓┃第一部分:ActionScript 3 语言基础┃┗━━━━━━━━━━━━━━━━━━┛================================================第2章ActionScript 3 语言基本元素================================================2.1.2 数据类型概述简单数据类型Boolean(布尔)、int(有符整型)、Number(浮点)、String(字符串)、uint(无符整型)复杂数据类型Array(数组)、Date(日期)、Error(异常)、Function(函数)、RegExp(正则表达)、XML、XMLList2.2.1 变量声明var 变量:类型var 变量:类型= 值;2.3 声明常量const 常量名:类型= 值;2.4 基础数据类型1.布尔值Boolean(初始化为false)2.数字:int uint Numberint 有符号32位整数-2(31次方) - +(2(31次方)-1)uint 无符号32位整数0 - 2(32次方)-1Number 64位浮点能用整数优先用int uint,有正负之分,用int。
只处理整数,用uint,有小数,用Number。
2.4.6 Object及关联数组var 对象:Object = new Object()var 对象:Object = {};2.4.8 Null、NaN、undefined及各自应用对象:变量的默认值数据类型默认值int 0uint 0Number NaNString nullBoolean falseArray null没声明undefined* undefined注意:必须声明初值,否则容易出错。
2.5 运算符,表达式及运用2.5.11 typeof、is、astypeof,用字符串返回对象类型,格式:typeof(对象)is ,判断操作符左边的对象是否属于右边的类型,返回值为Boolean,格式:对象is 数据类型as ,判断操作符左边的对象是否属于右边的类型,属于则返回数据,不属于则返回null,格式:对象as 数据类型typeof对象类型与返回结果对照表对象类型返回结果Array objectBoolean booleanFunction functionint numberNumber numberObject objectString stringuint numberXML xmlXMLList xml2.5.12 inin ,判断操作符左边的对象是否作为右边对象中的键(Key)或索引,返回值为Boolean比如:var a:Array = ["q","w","e"];trace(2 in a); //数组中有索引2,返回truetrace(3 in a); //数组中没有索引3,返回false2.5.13 delete关键字AS2.0中可以删除任意任意对象的delete关键字,在AS3.0中只能用于删除对象的动态实例属性,非动态属性不能删除。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
先给两张图对比一下20.1 什么是显示对象在舞台上显示的对象,在AS3中统一被称为显示对象(Display Object)显示对象除了包含能看得见的显示对象外,也包括不能看见但却真实存在的显示对象容器(Display Object Container)20.1.1 ActionScript3 中显示对象等级结构当前SWF(文档类或MainTimeline)容器显示对象20.1.2 显示列表:显示对象模型AS3中所有显示对象归使用显示列表(Display List)的方式进行管理,只有在列表中列出的对象才会在舞台上显示。
显示对象有两种:在显示列表中(on-list)和不在显示列表中(off-list),在显示列表中的对象会被渲染,不在显示列表中的对象依然存在,不被渲染罢了。
20.2 ActionScript3中显示对象的种类20.1 ActionScript2中的MovieClipMovieClip是万能的,但缺点是一旦创建,就拥有了一大堆时间轴等属性,非常浪费资源,有时候只将它作为空白容器。
MovieClip的地位在AS3中减弱了很多。
20.2.2 ActionScript3显示对象种类划分:一个统一、两个层次一个统一,AS3中所有显示对象都统一于DisplayObject类第一大层次:是否可以接受互动事件,可以接受的,称为可互动的显示对象(InteractiveObject); 不可以交互的,称为非互动显示对象.可互动的显示对象(InteractiveObject):指能够接受鼠标单击、键盘敲击等人机交互事件。
位图、形状、视频等就不能接受这些事件,所以归入不可以交互类。
第二大层次:是否可以作为容器,可以容纳其它显示对象的,称为显示对象容器(Display Object Container)20.3 显示对象类库架构以下很好反映了一个统一、两个层次这个概念所有显示对象都是继承自父类DisplayObject这个抽象类,而父类DisplayObject则继承自EventDispatcher类,说明所有显示对象都能发送事件。
DisplayObject、InteractiveObject、DisplayObjectContainer是显示对象架构中的三个核心对象,它们都是不能被实例化的抽象类EventDispatcher(事件类)┃┃根类DisplayObject(抽象类,不允许实例化,只能实例化子类)┃┃InteractiveObject(可以交互)━━━━━━ (不可以交互) ┏Bitmap(位图) - Shape(容器) ┃┣Video(视频) - AVM1Movie(AS1.0 2.0影片) ┃┗[StaticText(静态文本框)* - MorphShape(形状补间)*]┃有*的为必须在舞台上手动创建┃┃DisplayObjectContainer(可以作为容器) ━ (不可以作为容器) [SimpleButton(简单按钮) - TextField(文本框)]┃┃┃Sprite(简单容器,简化版MovieClip) ━━ Stage(舞台) - Loader(加载)┃┃┣━━━━━━━━━━━━━mx.core.FlexSprite - mx.core.UIComponent(Flex)┃┃┗━━MovieClip(影片剪辑)┃┃┗━mx.flash.UIMovieClip20.3.1 InteractiveObject类和非InteractiveObject类InteractiveObject类可以接受人机交互事件非InteractiveObject类不可以接受人机交互事件不可以接受人机交互事件的类中有6个同级对象:AVM1Movie、Bitmap、MorphShape、Shape、StaticText、Video其中再细分 MorphShape 和StaticText不可以用代码创建StaticText是Flash编辑环境下用文本工具创建的MorphShape是在flash中创建形状渐变时自动生成的AVM1Movie:Actionscript Virtual Machine1(ActionScript虚拟机1),即使用AS1.0 AS2.0创建的Flash影片,为了向下兼容,当载入使用以上版本AS创建的影片时,会自动创建这个类,以同AVM2区分开来。
20.3.2 容器类和非容器类第二层是InteractiveObject类的对象包含三类,使用容器与非容器的概念来区分。
容器:可以在它里面加载其它的DisplayObject的容器非容器对象:TextField、SimpleButtonTextField就是动态文本框SimpleButton是Flash API剩下的就是DisplayObjectContainer(显示对象容器)类,其下有:Sprite、Loader、StageStage是舞台类Loader是原有MovieClip中加载外部资源的方法集合。
20.3.3 Sprite 和MovieClipSprite将是我们在AS3中接触最多的容器,可以把它理解成去掉时间轴的MovieClip。
Sprite中含有Graphic对象,可以像MovieClip那样直接在自身绘图,但Sprite不同于Shape,区别在于Sprite是容器,而Shape不是。
MovieClip是Sprite的子类,只保留了一些与时间轴控制相关的gotoAndStop方法和currentFrame属性等。
20.3.4 非Flash API的几个显示对象类需要在Flex中使用到的显示对象,必须是UIComponent类的子类或实现IUIComponent的接口(Interface)20.4 ActionScript3 视觉架构的优越性20.4.1 更高效的渲染,更好的内存利用AS3中影片剪辑被弱化成绘制矢量使用轻量的Shape对象,需要容器使用轻量的Sprite对象,降低了时间轴的使用,也同时降低了内存的浪费。
20.4.2 自动化的深度管理AS3中的显示对象深度由程序自动管理。
每个DisplayObjectContainer实例都有numChildren属性,用于显示对象容器中的子对象数目显示对象容器列表中对象的索引从0开始,到numChildren-120.4.3 完整遍历显示列表在AS3中,可以访问显示列表中的所有对象,包括使用ActionScript创建的对象及在IDE中绘制的对象。
20.4.4 列表外的显示对象只有在显示列表中的对象才会被显示在舞台上,添加到显示列表的方法是调用addChild()或addChildAt()================================================第21章DisplayObject类与矢量图、位图================================================21.1.1 显示对象的可视属性列表AS3中所有原有对象的属性前面的下划线都去掉了,直接使用字母,比如_x _y _alpha 之类变成x y alpha注意的是:scaleX scaleY alpha 之类原来0-100的值,在AS3中变成了0-1,其中的百分比使用小数显示对象基本有11个可视属性(共有25个):x、y、width、height、scaleX、scaleY、mouseX、mouseY、rotation、alpha、visible21.1.2 显示对象的其它属性显示对象除了11个可视属性外,还有5个常用属性和9个不太常用的属性。
除此之外,DisplayObject还拥有6个实例方法,能发出6种事件。
5个常用属性:name: 显示对象名字,与AS2不同的是,创建对象时,name会自动分配parent: 父容器,指向显示列表的父容器,当显示对象不在显示列表中时,该属性为null root: 返回当前SWF主类的实例引用。
stage: 舞台mask: 遮罩,指向用来遮罩的对象。
21.2 所有显示对象的抽象父类:DisplayObject类DisplayObject类是一个不能被实例化的抽象类,也不能创建直接继承DisplayObject的子类,而只能继承自DisplayObject具体子类DisplayObject类具有7个子类,分成两类,一类是InteractiveObject抽象类,另一类是非InteractiveObject类的六个具体类,这六个类都是直接继承自DisplayObject类,不是InteractiveObject的子类,因此不能接受鼠标事件,也不会发出人机交互事件。
21.3 矢量图Shape类是最简单的DisplayObject类型,与父类不同的是它多了一个graphics的实例属性,这个属性持有Graphics类对象的引用。
21.3.1 Graphics对象Graphics对象只能由AS3内建的显示对象创建并调用,所有的矢量图形代码绘制均使用它创建。
Graphics对象并不是显示对象类,而是直接继承自根类Object。
也没法用代码创建Graphics 对象。
Graphics对象绘制方法分类(详细见P341 或帮助flash.display > Graphics 相关方法属性)使用代码绘图时,一般遵从顺序:设置线头样式、填色、移动绘画点、画线或绘制图形、结束填色(endFill())。
设置线头样式、填色都是可选的。
只要含有Graphics的显示对象都可以绘制矢量图。
AS3中拥有Graphics对象的DisplayObject子类有3个:Shape、Sprite、MovieClip,Shape只支持纯矢量图,Sprite可以容纳矢量图与其它对象。
21.3.2 绘制矢量图的例子var 显示对象:Shape = new Shape();显示对象.graphics.beginFill(0xff0000);显示对象.graphics.drawCircle(100,100,40);显示对象.graphics.endFill();addChild(显示对象);。