是可以在舞台显示的一切对象,包括可以直接看得见的图形、动画、视频、文字等,也包括一些看不见的显示对象容器。在ActionScript 3.0中,任何的复杂的图形都是由显示对象和显示对象的容器共同构成。
(2)显示类表
利用ActionScript 3.0构建的Flash播放文件都有都有一个由显示对象构成的层次结构,这个结构称为“显示列表”。这个显示列表按照一定的等级和层次在舞台上显示出来,构成复杂的显示对象。
ActionScript 3.0 支持的显示对象的结构类似于“树状结构”,以舞台为根,SWF文件为干,显示对象为枝叶
显示列表就是一个显示对象的清单(显示对象 显示容器),只要在Flash Player中显示出来的对象,都是该显示列表中的内容。
在ActionScript 3.0中,显示对象能否显示出来,取决于是否加入了显示列表。如果加入了显示列表,该对象就会被显示出来;否则,即使该对象已经被创建,也不能被显示出来。(但是enterFrame事件可以被响应)
(3)公共基类DisplayObject
属性(索引器或者是公共属性:用起来等价)
DisplayObject类共有25个属性,6个方法和6个事件:该类总结了大部分显示对象的共有的特征和行为。
类{类属性 方法 事件}
显示对象的属性共有25个,本节将介绍常用的一些基本属性。
横坐标x:显示对象注册点距离自己父级容器注册点之间的水平距离,以象素为单位。如果父容器是舞台,那么就是自身注册点与舞台原点间的水平距离。
纵坐标y:显示对象注册点与父级容器注册点之间的竖直距离,以象素为单位。若父容器为根对象root,则为自身注册点与舞台原点之间的竖直距离。
宽度width:显示对象最左边到最右边之间的距离,以象素为单位。
高度height:显示对象最上边到最下边之间的距离,以象素为单位。
横向缩放比例scaleX:一个比例值,0~1之间的数字。控制显示对象的横向缩放比例。
纵向缩放比例scaleY:一个比例值,0~1之间的数字。控制显示对象的纵向缩放比例。
鼠标横向横坐标mouseX:鼠标相对于当前显示对象注册点之间的水平距离。
鼠标横向纵坐标mouseY:鼠标相对于当前显示对象注册点之间的竖直距离。
顺时针旋转角度rotation:显示对象绕轴点顺时针旋转的角度。0~180度表示顺时针旋转角度,0~-180度表示逆时针旋转角度。如果超过了这个范围,则自动减去360的整数倍。
透明度alpha:0~1之间的值,0表示完全透明,1表示完全不透明。
可见性visible:Boolean值,用于控制显示对象是否可见。true表示将对象显示,false表示不显示对象。但不管设置成何值,该显示对象始终位于显示对象列表中。
遮照mask:持有的引用是用来遮照的显示对象。
显示对象名字name:通常生产显示对象时,会分配默认的名字。若有需要,可以使用代码进行修改。(使用场合:trace)
父容器parent:在显示列表中每个显示对象都有其父容器。parent属性指向显示对象的父容器,若显示对象不在父容器,则该属性为null。
根对象root:返回SWF文件主类的实例。若显示对象不在父容器,则该属性为null。(文档类或者是MainTimeline)
舞台stage:该属性持有的引用指向该显示对象所在的舞台。每个Flash程序,都有一个舞台。
除了以上的16个属性之外,DisplayObject对象还有9个属性,分别为:loaderInfo、cacheASBitmap、filters、scale9Grid、blendMode、accessibilityProperties、opaqueBackground、scrollRect和transform。这些属性在后面的章节中根据需要进行讲解。
规律 flash IDE 为圆圈(中心点) flashAS为十字(注册点)
基本方法
显示对象的基本方法有6个,常用的方法如下:
getBounds()方法:返回一个矩形区域,该矩形定义相对于显示对象所在坐标系的显示对象区域。
getRect()方法:返回一个矩形区域,该矩形定义相对于显示对象所在坐标系的显示对象区域,注意该区域不包含形状上的笔触宽度。
hitTestObject()方法:返回一个Boolean值,若为true,表示两个对象重叠或相交,否则为不相交。
hitTestPoint()方法:返回一个Boolean值,若为true,表示该对象对应点重叠或相交,否则为不相交。
基本事件(系统事件)
显示对象的事件有6个,常见的如下:
added事件:将显示对象添加到显示列表中时会调度该事件。下面的两种方法会触发此事件:将显示对象添加到容器、将显示对象添加到容器的某一层次。
addedToStage事件:将显示对象直接添加到舞台显示列表或将包含显示对象的子对象添加至舞台显示列表中时会调度该事件。下面的两种情况下会触发此事件:将显示对象添加到容器、将显示对象添加到容器的某一层次。
removed事件:要从显示列表中删除显示对象时会调度该事件。以下两种情况下会生成此事件:将显示对象容器的某个显示对象删除、将显示对象容器中的某个层次的显示对象删除。
removedFromStage事件:要从显示列表中删除显示对象或者删除包含显示对象的子对象时会调度该事件。以下两种情况下会生成此事件:将显示对象容器的某个显示对象删除、将显示对象容器中的某个层次的显示对象删除。
enterFrame事件:播放头进入新帧时调度该事件。若播放头不移动,或者只有一帧,则会继续以帧频调度此事件。
ender事件:在显示器刷屏之前调度该事件。当使用render事件的显示对象进入舞台时,或者显示对象存在于显示列表时才会触发该事件。要保证render事件在当前帧触发,必须调用stage.invalidate()。(且在enterFrame事件之后)
(4)显示对象的管理
显示对象容器就是用来储存和显示显示对象的对象。要实现在显示对象容器中显示对象,就需要把显示对象加入到显示对象列表中。
容器
所有的显示对象都要放入显示对象容器中才能够显示,为了方便区分,把显示对象容器简称为容器。容器是可以嵌套的,容器中可以放置非容器显示对象,也可以放置子容器对象。
功能
提供访问、添加、删除显示对象的功能。
具有深度管理功能。
其中深度管理也就是管理容器中子对象的叠放次序。所谓的叠放次序,表示显示对象重叠时从前到后的显示顺序。处
于显示顺序最前面的完整显示,后面的对象依次被前面的对象遮挡,甚至有的不能显示出来。(越后越好)
(5)添加显示对象
在ActionScript 3.0中,要把一个对象显示在屏幕中,需要作两步工作
,一是创建显示对象,
只要是继承自DisplayObject类或者其子类的的实例都可以添加到显示对象列表中,比如Sprite,MovieClip,TextField,或自定义类。
二是把显示对象添加到容器的显示列表中。加入显示列表的方法有addChild()和addChildAt()。
层次加入,这到root或者stage
(6)删除显示对象
1.移除指定名称的显示对象(name属性)
要移除已经知道显示对象名称的显示对象,可以使用显示对象类的removeChild()方法其用法格式如下:
容器对象.removeChild(显示对象)
2.删除指定索引的显示对象要删除指定位置索引的显示对象,可以使用显示对象类的removeChildAt()方法。其用法格式如下所示。
容器对象.removeChildAt(位置索引)
(7)深度管理
深度:位置索引 用于说明同一个容器中同一级别的所有显示对象从前到后的叠放次序。
特点
深度由各自的容器对象所管理。每一个容器都知道自己有多少个子对象,这个数目记录在自己容器的numChildren属性中。每一个对象在容器显示列表中的位置索引代表了其深度值。每一个容器的深度范围为0~numChildren-1。
添加显示对象会自己调整各个显示对象的深度,避免层次冲突。比如某一个深度已经有了一个显示
(8)访问显示对象
1.通过深度访问显示对象:通过深度来访问显示对象,要使用getChildAt()方法。用法格式如下:
容器对象.getChildAt(深度)
2.通过名字访问显示对象:每一个显示对象都有一个名称,该名称可以使用该显示对象的name属性进行访问和设置。在创建显示对象的时候,可以指定显示对象的名字,也可以不指定显示对象的名字。若没有指定,Flash Player会自动的分配给该显示对象一个默认的名字,如:“instance1”“instance2”等。
3.通过坐标访问显示对象:在ActionScript 3.0中,可以通过坐标来访问置于该坐标之上的所有显示对象。getObjectsUnderPoint()方法的用法格式如下:
容器对象. getObjectsUnderPoint(点对象);
(9)处理显示对象
。这些都要通过DisplayObject类及其子类的属性和方法来实现。
位置:xy属性
缩放:scalex scaley属性
旋转:rotation属性
淡化:alpha属性
拖拽:仅仅sprite及其子类才有
显示对象.startDrag(锁定位置,拖动范围);
格式说明如下:
显示对象:Sprite对象及其子类生成的对象
锁定位置:Boolean值,true表示锁定对象到鼠标位置中心,false表示锁定到鼠标第一次单击该显示对象所在的点上。可选参数,不选默
认为flase。
拖动范围:Rectangle 矩形对象,相对于显示对象父坐标系的一个矩形范围。可选参数,默认值为不设定拖动范围。
遮罩:mask
在ActionScript 3.0中,遮罩效果要使用显示对象的mask属性来实现。用法格式如下:
显示对象1.mask=显示对象2;
若不想继续使用遮罩,那么将显示对象的mask属性设置为null即可。用法格式如下:
显示对象1.mask=null;
碰撞检测
显示对象1.hitTestObject(显示对象2);
说明:该方法用于检测两个显示对象是否发生碰撞,返回一个Boolean值,若为true,表示两个对象发生了碰撞,否则为没有碰撞。
显示对象.hitTestPoint(x,y,检测方法);
第8章 使用与控制影片剪辑
(1)MovieClip类
通过MovieClip类的属性和方法,可以控制影片剪辑的播放与停止,正放和倒放,也可以动态的控制影片剪辑的播放顺序。
影片剪辑其使用主要用于需要时间轴支持的显示对象,对于不需要事件轴的显示对象,尽可能的使用Shape类或者Sprite类以提高显示性能。
只要是在Flash中创建的影片剪辑元件,Flash就会自动的将该元件添加到文档的库中。MovieClip会默认其为该类的一个实例,也就具有了该类的属性和方法。(是MC一个实例:具有属性方法 也可以连接类)
将库中的影片剪辑的实例放在舞台上时,如果该影片剪辑有多帧,那么它会按照其时间轴进行循环播放,除非通过使用ActionScript代码进行控制。
(2)处理MovieClip对象
在Flash中使用编译器把fla文件发布为SWF文件时,舞台上的所有影片剪辑实例都会转为MovieClip(影片剪辑)对象。
利用“属性”面板中的“实例名称”文本输入框指定影片剪辑的实例名称,进而通过访问该名称实现对其访问和控制。
影片剪辑中还嵌套有其它的影片剪辑,则通过使用点语法加影片剪辑来访问和控制。
(3)影片剪辑的控制
加载swf
若要加载并控制外部的SWF影片,需要执行下面的操作:
先创建一个URLRequest对象,用于储存要载入文件的URL。
创建一个Loader对象。
调用Loader对象的load()方法,并把URLRequest对象作为参数传递给Loader对象。
建立一个空的显示对象容器,使用addChild()方法将其添加到舞台,用于加载外部载入的影片。
建立事件侦听函数,侦听加载事件是否完成。
加载完成之后,使用addChild()方法将Loader对象添加入空白显示对象容器。
使用显示对象的属性控制该显示对象容器的位置和大小。
使用MovieClip类的播放控制方法控制外部影片的播放。
第9章 AS3.0动画编程
(1)原理
ActionScript 3.0的动画编程主要关注两方面的情形:
一是通过改变显示对象的属性创建动画效果;
二是利用Shape类的绘制类进行代码绘制,渲染效果。
ActionScript 3.0的动画编程按照实现的方式可以分为两种:
对显示对象的显示属性进行控制,调整每次刷新屏幕时显示对象的显示属性实现动画效果,这种称为显示属性动画。
利用绘制API在每帧中使用代码绘制不同的形状,从而产生的动画效果,这种称为代码绘制动画。
通过编程实现刷新屏幕,ActionScript 3.0中提供了两种方式可供选择:
帧循环更新:利用Flash本身的帧频速度,在每次刷新屏幕时改变显示对象。此方法需要使用事件侦听器侦听显示对象的Event.ENTER_FRAME事件。
定时器更新:利用Timer类的定时更新功能,每隔一定的事件使显示对象改变一次。此方法需要使用事件侦听器侦听显示对象的TimerEvent.TIMER事件。
(2)代码绘制动画效果
代码绘制动画效果,就是每帧绘制的图形有所变化,这样播放起来就形成了动画。绘制代码主要使用Graphics类的绘制API来进行绘制。
(3)借助Timer类实现动画效果
使用Timer类产生的动画效果和使用帧循环ENTER_FRAME事件产生动画的原理一样,都是通过间隔一定的时间进行一次刷屏来实现动画效果。(均是通过事件响应达到刷频)
Timer类的TimerEvent.TIMER事件,可能与Flash的刷屏不同步,会产生延迟现象。
使用Timer类实现动画还有几个好处:
可以利用Timer.stop()方法控制动画的播放与停止;
可以在构建Timer对象时控制动画的刷新次数,实现预期动画效果;
可以利用TimerEvent.TIMER_COMPLETE事件,在停止播放时侦听,从事开始新的动作。
注:其他用了再说
第10章 数组
(1)分类
数组一般分类两类:索引数组和关联数组。
索引数组:数组中的每个元素都存储在指定编号的位置中,这个位置称为该数组的索引。数组的元素都用唯一的整数下标来索引。该索引的起始值为0,每个元素保存在索引指定的位置。多维数组也可以通过索引来访问数组,也是索引数组。
关联数组:数组中的每个元素都有对应的键值,此键值为唯一的字符串,作为数组元素的索引。关联数组是Object类的实例,每个键值都与一个属性名称对应。关联数组就是键和值对的无序集合。
(2)索引数组常见操作
(3)关联数组
关联数组类似于哈希表或映射。关联数组中使用字符作为元素的索引,该字符通常称为关键字或者属性
有三种方法可以选择:利用Object构造函数创建、使用对象文本创建和使用数组元素创建。
1.利用Object构造函数:构造函数创建关联数组,其格式如下所示。
var 对象数组:Object={关键字1:值,关键字2:值}
2.使用对象文本创建关联数组:该方式在创建时先创建一个对象,不需要初始化对象数据,在使用时再动态的添加关键字和值。
3.使用数组元素创建关联数组:该方式同样先创建一个空白的对象,然后使用数组操作符[]把关联数组的关键字和值追加到关联数组中。
(4)多维数组
第15章 文本
(1)文本
文本是显示编程的基础,使用文本,才能够把信息通过舞台显示,才能实现信息的设置和获取。在ActionScript 3.0中,文本一般使用文本字段来显示,有时也会利用系统提供的UI组件显示。
(2)显示文本
Flash中三种文本类型分别为:静态文本、动态文本和输入文本。
静态文本是一些不会改变的文字。此种文本类型只能通过Flash创作工具来创建,而不能使用 ActionScript 3.0创建静态文本实例。此类型文本广泛用于Flash创作,用于在Flash种显示不变的文本。这些文字在发布为SWF格式文件后,显示出来的文字不再改变,不能够再更改。要更改,必须通过修改源文件来实现。在ActionScript 3.0中,虽然无法创建静态文本,但是可以利用ActionScript3.0的StaticText类和 TextSnapshot类来访问和操作静态文本实例。
动态文本是文本内容可以利用ActionScript3.0脚本动态改变的文本类型。此种文本类型使用TextFiled类来管理,需要创建该类的实例。动态文本的内容可以使用脚本语言利用TextFled类的text属性来实现设定;也可以外部源(例如文本文件、XML 文件以及远程Web服务)加载的内容;还可以接受HTML格式的文本。动态文本可以通过TextField类的实例来访问。
输入文本和动态文本类型相似,都是可以动态的改变文字内容,唯一的区别是输入文本类型可以让使用者输入内容。输入文本可以利用样式表来设置输入文本的格式,也使用TextFormat类为输入内容指定文本字段的属性。输入文本也可以通过TextField类的实例来访问。
第16章 字符串
(1)字符串处理
第17章 正则表达式
(1)构成
正则表达式一般由两个部分组成。一部分是在双斜杠内部的字符串,称为匹配模式,用来表示要匹配的字符串的特征;另一部分是在第二个斜杠的后面,是一个字母,叫做正则表达式的标志位,由五个字母组合而成,具体请参见17.2.5节。
匹配模式由两部分组成,分别为:普通字符(例如字符a到z)和特殊字符(称为元字符)。正则表达式描述在查找字符串时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
正则表达式的定义方法有两种,一种是上例中的方法,使用双斜杠来定义,语法格式如下所示:
var 正则表达式:RegExp=/匹配模式/标志位
第18章 位图和滤镜
(1)Bitmap类
Bitmap类用来表示位图图像的显示对象。这些图像可以是使用显示对象的Loader类加载的外部图像,也可以是使用Bitmap()构造函数创建的图像。Bitmap类创建的图像,其信息可以使用其BitmapData属性来引用并处理。Bitmap对象是一种显示对象,因此可以使用显示对象的属性和方法来进行操作和控制。此外,Bitmap对象还有两个常用的属性:PixelSnapping象素贴紧和smoothing平滑。
PixelSnapping象素贴紧属性用于控制Bitmap对象是否贴紧至最近的像素。PixelSnapping属性包括以下可能值:
PixelSnapping.NEVER:不进行像素贴紧。
PixelSnapping.ALWAYS:图像始终与最近的像素贴紧,与变形无关。
PixelSnapping.AUTO:如果绘制图像时未应用旋转或倾斜效果,并且图像是以99.9%到100.1%的缩放系数绘制的,则图像将与最近的像素贴紧。
(2)BitmapData类
BitmapData类用于处理Bitmap对象的像素数据,也可以使用BitmapData类的方法创建任意大小的透明或不透明位图图像,并在运行时采用多种方式操作这些图像。此类还可以访问使用显示对象的Loader类加载的位图图像的BitmapData值。
(3)创建位图
创建位图,需要把Bitmap类和BitmapData类结合使用。使用Bitmap类创建位图对象,使用BitmapData类创建Bitmap对象的数据信息,最后使用Bitmap对象的构造函数或bitmapdata属性获得BitmapData创建的数据。
Bitmap类的构造函数格式如下所示:
Bitmap(bitmapData,pixelSnapping,smoothing)
参数说明如下:
bitmapData:被引用的BitmapData对象数据。默认值为null。
pixelSnapping:确定Bitmap对象是否贴紧至最近的像素。默认值为“auto”。
smoothing:确认在缩放时是否对位图进行平滑处理。默认值为false。
(4)其他处理
第19章 日期与时间
(1)Date类
在ActionScript 3.0中,Date类是顶级类,用于表示日期和时间信息。Date类的实例表示一个特定时间点(时刻),也可以查询或修改该时间点的属性,比如月、日、小时和秒等信息。
(2)创建时间日期
要创建一个日期和时间,需要使用Date类的构造函数。使用此方法,可以构造一个新的Date对象,并未该对象保存指定的日期和时间。依据对构造函数指定的参数不同,可以使用不同的方法来构建不同的日期和时间,具体有4种方式可以选择。
1.不使用参数
2.使用Number类型数据为参数
3.使用String类型数据作为参数
4.使用Date对象的多个参数
(3)获取时间日期
在ActionSctipt 3.0中,可以使用Date类的属性或方法从Date对象中提取各种时间单位的值。下面介绍常用的Date属性用于获取Date对象中的一个时间单位的值:
fullYear:按照本机时间返回Date对象中的完整年份值,用四位数表示。
month:返回当前的月份,以数字格式表示,分别以0到11表示一月到十二月。
date:表示月中某一天的日历数字,范围从1到31
day:以数字格式表示一周中的某一天,其中0表示星期日,6表示星期六。
hours:用于表示当前的小时数,范围从0到23。
minutes:表示当前的分钟。
seconds:表示当前的秒。
milliseconds:表示当前的毫秒。
(4)获取月份日期
无论是使用day和months属性,还是使用getDay()和getMonths()方法,获取的星期和月份格式都与中国的使用习惯不同,所以有必要对月份和星期进行处理,以实现更好的使用效果。
(5)获取时间间隔
(6)使用Timer
Timer类有4个属性,3个方法,2个事件。下面来简单介绍这些属性和方法。
currentCount:计时器从0开始后执行代码的总次数。此属性在重置计时器后,只计入重置后的执行次数。
delay:计时器事件间以毫秒为单位的延迟时间。如果在计时器正在运行时设置延迟间隔,则计时器将按相同的重复执行次数重新启动计时器。
running:反映计时器的当前状态。如果计时器正在运行,则为true,否则为false。
reset()方法:如果计时器正在运行,则停止计时器,并将当前执行次数属性设回为0,在调用start()方法后,将在此执行程序代码。
start()方法:启动计时器的方法。
stop()方格:停止计时器。若在调用stop()后调用start(),则将继续运行计时器实例,运行次数为剩余的重复次数。
Timer事件:每当Timer对象达到根据delay属性指定的间隔时调度。
timerComplete事件:每当它完成repeatCount设置的执行次数后调度此事件。
第21章 XML
(1)XML
XML的语法非常简单、直白,是一种自描述的语法。一个XML文档最基本的组成包括声明、命名、标记、元素和注释。具体介绍如下:
1.文档声明
<?xml version="1.0" encoding="GB2312"?>
2.命名规则
3.元素与标记
元素是构成XML文档的主要内容。XML的元素又是通过标记来定义的,常用的定义方式有两种:非空标记和空标记。
4.注释
注释是在文档中用于说明相关内容的语句,其在文档中没有实际的作用。
要设计一个优秀的XML文档,需要实现下面的几个特征:
元素分类要清晰,同类元素的标记要一致,结构相同。
父级子级元素逻辑关系清晰。
要有长远的考虑,便于扩展。
属性和子元素的使用在整个文档中要保持一致。