5
5
本章内容将会一起研究一些 AS3 中一些重要的知识点,也是展示 AS3 特性的知识。
6
6
7
7
## 可视化对象列表
8
- ---
9
8
10
9
ActionScript 3.0 和 Flash Player 9 的渲染模型已经和以前的版本有很大不同。以前 MovieClip是渲染的焦点。swf 电影的根节点就是 MovieClip (现在用Stage). 根节点MovieClip 可以包含子节点 MovieClips, 子节点还可包含更多的子节点MovieClips。这样的层次结构用来控制MovieClips 的绘制(深度越深表示显示在最顶层) 。createEmptyMovieClip( ), attachMovie( ), 或duplicateMovie- Clip( ) 用来创建MovieClips。一旦MovieClip 被创建,它就自动添加到这个可视化层级列表中通过渲染器进行绘制。MovieClips 在层级列表中不能移动位置,非要这么做则只有删除当前的,然后在指定位置创建。
11
10
@@ -20,6 +19,9 @@ stage 是可视化对象列表层级的根节点。每个电影有一个stage
20
19
* ** 可视化对象**
21
20
可视化对象就是一个可显示的元素。有两种一种是可视化对象容器,比如MovieClip,另外是可视化对象,比如一个TextField。可视化对象创建后不会立即被显示出来,只有被添加到可视化对象容器后才被显示。
22
21
22
+ ** 类层级图:**
23
+ ![ 类层级图] ( images/1-1.png?raw=true )
24
+
23
25
### 对象操作
24
26
25
27
使用DisplayObectContainer类的addChild( ) 和addChildAt( ) 方法
@@ -59,7 +61,6 @@ stopDrag( )。startDrag( ) 方法可在任何Sprite 实例上调用,要想停
59
61
60
62
61
63
## 事件流机制
62
- ---
63
64
64
65
AS3.0的类继承设计是深思熟虑的,所有的可视对象所属类都是DisplayObject的子类, DisplayObject又是EventDispatcher的子类,因此它们就都可以派发Event(事件)了。
65
66
@@ -74,6 +75,7 @@ useCapture:Boolean(default = false)确定侦听器是运行于捕获阶段、目
74
75
当事件发生后生成一个携带数据的对象,然后检查目标对象是否存在显示层中,并遍历从根容器一直到目标对象所在位置的所有对象,以树形势表示。自动检测所经过的节点是否注册了监听器。
75
76
76
77
事件流按运行流程分为3步:
78
+ ![ 事件流流程图] ( images/1-2.png?raw=true )
77
79
78
80
* 捕获阶段:捕获事件 capturing,从根节点开始顺序而下,检测每个节点是否注册了监听器。同时,Flex 将事件对象的currentTarget 值改为当前正在检测的对象。如果注册了监听器,则调用监听函数。
79
81
* 目标阶段:检测目标的监听器 targeting:触发在目标对象本身注册的监听程序
@@ -203,7 +205,7 @@ As3提供了双击事件的调用,但有时候碰到双击事件无法响应
203
205
如果你需要子对象也要接受事件响应,那么把所有容器子对象的属性 doubleClickEnabled = true。
204
206
205
207
## 绘图于遮罩
206
- ---
208
+
207
209
在ActionScript中,Shape, Sprite, Button, 和MovieClip每个类都有个graphics 属性,它是flash.display.Graphics 类实例。Graphics 类定义了一些绘图内容的API。这里讨论的基本上是如何使用Graphics类的部分API。因为Shape, Sprite, Button, 和MovieClip 类已经定义了graphics 属性,它就是Graphics实例的引用,所以没有必要再构造新的Graphics 对象。对象的graphics 属性可在对象内绘图。
208
210
209
211
### 设置线条
@@ -358,7 +360,7 @@ matrix 默认下不需要应用转换,也可指定flash.geom.Matrix对象进
358
360
sampleSprite.mask = maskSprite;
359
361
360
362
## 位图
361
- ---
363
+
362
364
和Flash 8 中的BitmapData类一样,这是非常重要的一个类,起初,Flash只是基于矢量的一个工具,矢量图形是由数学方法描述图形元素,比如一条直线是从x0, y0 扩展到x1, y1。 而一个位图,它把图形描述为一个矩形区域值集合,每个点都对应一个颜色值。矢量图有两大优势:缩放和文件大小。当你缩放矢量图时,图像总能保持清晰,而位图当放大时就会出现锯齿状变得不清晰。
363
365
364
366
正因为矢量图是一个线条,曲线和图形的坐标组成的列表,所以它的文件和位图相比小很多。而位图要记录每个点的颜色值,信息量非常大,也就导致了文件的庞大。矢量图的这种优势使它作为Flash媒体格式的最好形式,但是位图也有它自己的优点,比如位图能很好的表现照片,如果用矢量图去描述照片的所有颜色和图形,那结果就是比位图的文件还要大了。
@@ -415,7 +417,7 @@ sourceBmp是源的BitmapData,srcRect是flash.geom.Rectangle类实例,destPoi
415
417
416
418
417
419
## 加载外部资源
418
- ---
420
+
419
421
### Loader、URLLoader和URLStream的使用区别Loader
420
422
421
423
Loader 类可用于加载 SWF 文件或图像(JPG、PNG 或 GIF)文件。 使用 load() 方法来启动加载。被加载的显示对象将作为 Loader 对象的子级添加。因为loader是继承与容器类的,所以首先它是个容器,而URLLoader 是继承与EventDispatcher,它不是容器。
@@ -544,7 +546,7 @@ URLoader用于加载外部文本数据(txt/xml)和二进制数据,也能加
544
546
545
547
546
548
## 文件管理
547
- ---
549
+
548
550
在Flash播放器8以前的版本中并没有提供管理文件的功能,也没有一种机制用于上传和下载文件,因此大多数Web程序都是基于HTML的方式上传和下载文件,基于Flash的应用程序必须自己来实现上传和下载文件功能,从Flash播放8开始,系统提供了一套新的APIs 来支持文件的上传和下载。Flash 播放器允许用户浏览本地文件,并使用 FileReference 和 FileReferenceList 类上传和下载文件,本章将讨论这些 APIs 。
549
551
550
552
### 下载文件
@@ -660,7 +662,7 @@ upload( )方法抛出的异常和 download( )方法相同, 比如都会抛出
660
662
661
663
662
664
## ActionScript 3.0 与 JavaScript 互相调用
663
- ---
665
+
664
666
665
667
有时候会有这样的需求,需要 ActionScript 3.0(AS3) 于 JavaScript(js) 之间互相调用。
666
668
@@ -687,7 +689,7 @@ js 代码:
687
689
在什么情况下需要这样使用呢,真实的例子,腾讯平台或者是Facebook都提供有邀请好友的功能,那么我们在游戏中需要邀请腾讯上的QQ好友就需要用到,腾讯提供了js的API,加载他们提供的API的js 文件代码后,就可以直接使用他们提供的 API,通过在游戏中调用腾讯提供的 js API 函数,发送邀请好友请求,然后会弹出邀请好友界面,选择好友,点击确定后,腾讯API提供回调功能,在js回调函数中编写调用AS3的函数来回调到flash中,来执行发奖励等操作,下次读者开发的应用或者游戏有机会上平台就可以用上了。
688
690
689
691
## SourceMate
690
- ---
692
+
691
693
SourceMate 是 Flash Builder 开发工具的一个插件,非常好用的,可以设置代码快速生成模板,可以给整个文件快速导入所有累,提供重构许多工具,变量提取等。再加上自定义自己的高速快捷键,开发AS3项目时就如虎添翼了。
692
694
693
695
0 commit comments