Flash AS3.0 基础教程
第一章:AS3.0 是什么?为什么是它?
- ActionScript (AS) 是 Flash 的编程语言,用来控制动画、处理用户交互(如点击鼠标、按下键盘)、加载外部数据等。
- ActionScript 3.0 (AS3.0) 是一个重大更新,于 2007 年随 Flash CS3 发布,相比之前的 AS1.0 和 AS2.0,AS3.0 有以下核心优势:
- 性能大幅提升:运行速度是 AS2.0 的数倍,尤其适合开发复杂的游戏和应用程序。
- 面向对象编程:提供了更强大、更规范的结构,让代码更易于管理和复用。
- 错误处理更健壮:引入了
try...catch...finally结构,能更好地捕获和处理运行时错误。 - 事件模型更完善:提供了统一、强大的事件处理机制。
重要提示:从 Flash CC 2025 开始,Adobe 已停止对传统 Flash Professional 的更新,并推出了新的动画工具 Adobe Animate,Animate 在制作传统帧动画和 AS3.0 编程方面完全兼容旧的 FLA 文件,是目前学习 AS3.0 的首选软件。
(图片来源网络,侵删)
第二章:你的第一个 AS3.0 程序 - "Hello, World!"
我们将学习最基础的编程概念:输出文本。
-
创建新文档:
- 打开 Adobe Animate (或 Flash Professional)。
- 选择
ActionScript 3.0作为文档类型,创建一个新文件。
-
打开动作面板:
- 按
F9键,或者点击菜单栏的窗口->动作。 - 你会看到一个带有语法高亮的代码编辑器。
- 按
-
编写代码:
(图片来源网络,侵删)- 在代码编辑器中输入以下代码:
trace("Hello, World!"); -
测试影片:
- 按
Ctrl + Enter(Windows) 或Cmd + Enter(Mac)。 - 你会看到一个黑色的控制台窗口弹出来,里面显示着
Hello, World!。
- 按
代码解释:
trace()是 AS3.0 中一个非常重要的调试函数,它会把括号内的内容输出到调试控制台,方便程序员查看变量的值或程序的执行流程,在实际发布的 SWF 文件中,trace语句是不会被执行的。
第三章:核心概念 - 变量与数据类型
变量就像一个带标签的盒子,用来存储数据。
1 变量声明
在 AS3.0 中,使用 var 关键字来声明变量。

// 语法: var 变量名:数据类型 = 值; var myName:String = "张三"; var age:int = 25; var isStudent:Boolean = true; var score:Number = 95.5;
2 常用数据类型
| 数据类型 | 描述 | 示例 |
|---|---|---|
String |
字符串,用双引号括起来。 | "你好 AS3.0" |
int |
整数,用于存储没有小数部分的数字。 | 100, -50 |
uint |
无符号整数,只能存储 0 或正整数。 | 255 (常用于颜色值) |
Number |
数字,可以包含小数。 | 14, -99.9 |
Boolean |
布尔值,只有两个值:true (真) 或 false (假)。 |
true, false |
Array |
数组,用来存储一个列表的值。 | ["苹果", "香蕉", "橙子"] |
Object |
对象,最灵活的数据类型,可以存储键值对。 | {name:"李四", age:30} |
3 严格数据类型
AS3.0 是一种强类型语言,这意味着你在声明变量时必须指定它的数据类型,这有助于编译器在早期就发现错误,使代码更可靠。
// 正确 var message:String = "你好"; var count:int = 10; // 错误!编译器会报错,因为 "10" 是字符串,不能赋值给 int 类型的变量 // var count:int = "10";
第四章:显示对象与舞台
在 AS3.0 中,舞台上所有可视的元素(如形状、影片剪辑、文本等)都被称为显示对象。
1 舞台
舞台是最终显示内容的地方,你可以通过 stage 属性来访问它。
2 创建显示对象
我们可以通过代码动态创建图形。
// 1. 创建一个形状 var myShape:Shape = new Shape(); // 2. 在形状上绘制内容 // 设置线条样式 myShape.graphics.lineStyle(2, 0x000000); // 线宽为2,颜色为黑色 // 开始填充 myShape.graphics.beginFill(0xFF0000); // 填充颜色为红色 // 绘制一个矩形 (x, y, width, height) myShape.graphics.drawRect(100, 100, 150, 100); // 结束填充 myShape.graphics.endFill(); // 3. 将形状添加到舞台的显示列表中,让它可见 addChild(myShape);
代码解释:
new Shape():创建一个新的Shape对象实例。myShape.graphics:访问该形状的绘图API。lineStyle(),beginFill(),drawRect()等是绘图方法。addChild():这是 AS3.0 中最核心的方法之一,用于将一个显示对象添加到舞台上或另一个显示对象内部。
第五章:事件处理 - 让程序“动”起来
事件是 AS3.0 的灵魂,用户点击、鼠标移动、键盘按下、动画播放到某一帧等,都会触发事件,我们需要编写事件侦听器来“响应”这些事件。
1 事件处理的基本模式
对象.addEventListener(事件类型, 处理函数);
- 对象:你要监听哪个对象的事件(比如一个按钮)。
- 事件类型:你要监听什么事件(比如鼠标点击
MouseEvent.CLICK)。 - 处理函数:当事件发生时,要执行的代码块。
2 实例:创建一个可点击的按钮
- 在 Animate 中,用绘图工具画一个矩形,并按
F8将其转换为“按钮”符号(Button)。 - 给这个按钮实例命名一个实例名,
myButton(在属性面板中设置)。 - 在主时间轴的
动作面板中,输入以下代码:
// 定义一个函数,用来响应点击事件
function onButtonClick(event:MouseEvent):void {
// trace 语句会在点击按钮时执行
trace("按钮被点击了!");
// 我们还可以改变舞台上的某个对象
// 假设我们有一个名为 myShape 的矩形
myShape.x += 10; // 每次点击,矩形向右移动10像素
}
// 为 myButton 按钮添加一个事件监听器
// 当它被点击时,调用 onButtonClick 函数
myButton.addEventListener(MouseEvent.CLICK, onButtonClick);
代码解释:
function onButtonClick(event:MouseEvent):void:定义了一个名为onButtonClick的函数。event:MouseEvent:这个参数会自动传递事件对象,里面包含了事件的相关信息(如点击的坐标等)。void:表示这个函数没有返回值。
myButton.addEventListener(...):将onButtonClick函数“挂载”到myButton的CLICK事件上。
第六章:控制时间轴
通过 AS3.0,你可以精确地控制动画的播放。
1 播放和停止
假设你有一个名为 myMovieClip 的影片剪辑。
// 播放影片剪辑 myMovieClip.play(); // 停止影片剪辑 myMovieClip.stop();
2 跳转到指定帧并播放/停止
// 跳转到第 30 帧并停止
myMovieClip.gotoAndStop(30);
// 跳转到标签为 "ending" 的帧并播放
myMovieClip.gotoAndPlay("ending");
第七章:交互实例 - 制作一个简单的计数器
这个例子将综合运用我们学过的知识:变量、文本显示、事件处理和时间轴控制。
-
准备舞台:
- 在舞台上创建三个动态文本框(
Dynamic Text),并分别给它们设置实例名:countText,increaseBtn,decreaseBtn。 - 在
increaseBtn和decreaseBtn文本框上,分别绘制一个“+”和一个“-”的图形,并将它们转换为按钮符号,给按钮实例命名为plusButton和minusButton。
- 在舞台上创建三个动态文本框(
-
编写代码:
- 在主时间轴的
动作面板中输入以下代码:
// 1. 初始化变量 var count:int = 0; // 计数器初始值为 0 // 2. 更新显示文本的函数 function updateDisplay():void { // 将 count 变量的值转换成字符串,赋给文本框 countText.text = String(count); } // 3. 定义增加计数的函数 function onIncrease(event:MouseEvent):void { count++; // count = count + 1 的简写 updateDisplay(); // 每次增加后,更新显示 } // 4. 定义减少计数的函数 function onDecrease(event:MouseEvent):void { count--; // count = count - 1 的简写 updateDisplay(); // 每次减少后,更新显示 } // 5. 添加事件监听器 plusButton.addEventListener(MouseEvent.CLICK, onIncrease); minusButton.addEventListener(MouseEvent.CLICK, onDecrease); // 6. 初始调用一次,让文本框显示初始值 0 updateDisplay(); - 在主时间轴的
第八章:面向对象编程 入门
OOP 是 AS3.0 的核心思想,它将数据和操作数据的方法封装在一起,形成一个“对象”。
1 创建一个自定义类
假设我们要创建一个 Player 类来表示游戏中的玩家。
-
创建类文件:
- 在 Animate 中,新建一个 ActionScript 文件 (
File -> New -> ActionScript 3.0 Class)。 - 保存为
Player.as。注意:文件名必须与类名(Player)完全一致,并且和你的 FLA 文件放在同一个目录下。
- 在 Animate 中,新建一个 ActionScript 文件 (
-
编写类代码:
- 在
Player.as中输入以下代码:
// Player.as package { // 导入必要的类 import flash.display.Sprite; // public class 类名 public class Player extends Sprite { // 1. 属性 (变量) public var name:String; public var health:int; // 2. 构造函数 (当 new Player() 时调用) public function Player(name:String, health:int) { // 给属性赋值 this.name = name; this.health = health; // 可以在这里做一些初始化工作,比如创建一个圆形代表玩家 this.graphics.beginFill(0x00FF00); this.graphics.drawCircle(0, 0, 20); this.graphics.endFill(); } // 3. 方法 (函数) public function takeDamage(amount:int):void { health -= amount; trace(name + " 受到了 " + amount + " 点伤害,当前生命值: " + health); } } } - 在
-
在 FLA 中使用这个类:
- 回到你的主 FLA 文件,在主时间轴的动作面板中:
// 创建一个 Player 对象实例 var player1:Player = new Player("英雄", 100); // 设置它的位置 player1.x = 200; player1.y = 200; // 将它添加到舞台 addChild(player1); // 调用它的方法 player1.takeDamage(10); // 输出: 英雄 受到了 10 点伤害,当前生命值: 90
代码解释:
package:包,用于组织代码,避免命名冲突。public class Player:定义一个名为Player的公共类。extends Sprite:表示Player类继承自Sprite类。Sprite是一个没有时间轴的显示对象,非常适合用作游戏中的角色或物体。public function Player(...):这是构造函数,在创建对象时自动调用,用于初始化对象的属性。
第九章:资源加载
你可以从外部加载图片、SWF 文件、数据文件等。
// 创建一个 Loader 对象
var myLoader:Loader = new Loader();
// 创建一个 URLRequest 对象,指定要加载的文件路径
var myRequest:URLRequest = new URLRequest("image.jpg");
// 开始加载
myLoader.load(myRequest);
// 当加载完成时,触发 Event.COMPLETE 事件
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
function onLoadComplete(event:Event):void {
// 将加载进来的图片添加到舞台
addChild(myLoader);
// 可以调整位置
myLoader.x = 100;
myLoader.y = 100;
}
第十章:总结与下一步
恭喜你!你已经掌握了 AS3.0 的基础知识,你已经学会了:
- 如何编写和调试代码。
- 如何使用变量和数据类型。
- 如何通过代码创建和控制显示对象。
- 如何响应用户交互(事件处理)。
- 如何控制动画播放。
- 如何使用面向对象的思想来组织代码。
- 如何加载外部资源。
下一步可以学习什么?
- 动画与缓动:学习使用
Tween类(如TweenLite)或fl.transitions包来制作更流畅的动画效果。 - 游戏开发:学习碰撞检测、物理引擎(如 Box2D)、游戏状态管理等。
- 数据交互:学习如何加载和解析 XML、JSON 等数据格式,实现与后端服务器的通信。
- 音视频控制:学习如何使用
Sound和Video类来播放和控制多媒体内容。
AS3.0 是一个非常强大且成熟的编程语言,虽然 Flash 平台本身不再是主流,但 AS3.0 的许多思想(如事件驱动、显示列表、面向对象)在现代前端开发(如 JavaScript)中依然广泛存在,学好 AS3.0,将为你的编程之路打下坚实的基础。

