ActionScript 3.0 完整教程
第一部分:基础入门
什么是 ActionScript 3.0?
ActionScript 3.0 (简称 AS3) 是 Adobe Flash Player 和 Adobe AIR 的编程语言,它是一种功能强大的、基于 ECMAScript 标准的面向对象编程语言。

AS3 的主要特点:
- 性能飞跃:与之前的 AS2 相比,AS3 的性能提升了 10 倍以上,这得益于其全新的虚拟机 AVM2 (ActionScript Virtual Machine 2)。
- 真正的面向对象:完全支持面向对象编程,包括类、继承、封装、多态等核心概念,结构更严谨。
- 事件驱动模型:采用事件驱动机制,用户交互(如点击、鼠标移动)或程序内部状态变化都会触发“事件”,你可以编写“事件监听器”来响应这些事件。
- 强大的显示列表:引入了全新的“显示列表”概念,用于管理屏幕上所有可见对象(影片剪辑、按钮、文本等),使对象的管理和操作更加高效和直观。
开发环境
你需要一个代码编辑器来编写 AS3,最常用的是:
- Adobe Animate (前身为 Flash Professional):这是最传统和集成的环境,你可以在一个 FLA 文件中同时进行可视化的时间轴操作和 ActionScript 代码编写。
- Flash Builder (前身为 Flex Builder):一个基于 Eclipse 的专业 IDE,专注于纯代码开发,提供强大的代码提示、调试和项目管理功能,适合大型项目。
- 第三方代码编辑器:如 Visual Studio Code (配合插件)、FlashDevelop (免费且非常强大) 等。
对于初学者,我们推荐从 Adobe Animate 开始,因为它能让你直观地看到代码如何与视觉元素交互。
第一个程序:"Hello, World!"
在 Animate 中创建一个新的 ActionScript 3.0 项目。

使用时间轴
-
在时间轴上选择第一帧。
-
打开“动作”面板 (快捷键 F9)。
-
输入以下代码:
(图片来源网络,侵删)trace("Hello, World!"); -
按
Ctrl + Enter(Windows) 或Cmd + Enter(Mac) 测试影片,在“输出”面板中,你会看到 "Hello, World!"。
trace() 函数是 AS3 中最常用的调试工具,它会在输出面板中打印信息。
使用外部 ActionScript 文件 (推荐)
这是更专业、更规范的做法,符合面向对象的思想。
-
在 Animate 中,选择
文件->新建->ActionScript 文件。 -
保存文件,例如命名为
Main.as。 -
在
Main.as中输入代码:package { import flash.display.MovieClip; import flash.text.TextField; import flash.text.TextFormat; public class Main extends MovieClip { public function Main() { // 构造函数 var helloText:TextField = new TextField(); var format:TextFormat = new TextFormat(); format.size = 24; format.color = 0x000000; // 黑色 helloText.text = "Hello, World!"; helloText.setTextFormat(format); helloText.x = 100; helloText.y = 100; this.addChild(helloText); // 将文本添加到显示列表 } } } -
回到你的 FLA 文件,在“属性”面板中,将“类”设置为
Main。 -
测试影片,你将在舞台上看到 "Hello, World!" 文本。
第二部分:核心概念
语法基础
AS3 的语法与 C++、Java、JavaScript 等语言非常相似。
-
变量与常量
- 使用
var关键字声明变量。 - 强类型是 AS3 的核心特性,必须为变量指定数据类型。
var myNumber:int = 10; // 整数 var myPi:Number = 3.14159; // 浮点数 var myName:String = "Alice"; // 字符串 var isCool:Boolean = true; // 布尔值 var myArray:Array = [1, 2, 3]; // 数组 var myObject:Object = {name: "Bob", age: 30}; // 对象 - 使用
-
常量:使用
const声明,赋值后不能再修改。const MAX_PLAYERS:int = 4;
-
注释
// 单行注释 /* 多行注释 */
数据类型
数据类型分为两种:
- 原始数据类型:
int,uint(无符号整数),Number,String,Boolean,它们存储的是实际的值。 - 复杂数据类型:
Object,Array,Date,RegExp等,它们存储的是对内存中对象的引用。
类型转换: 当需要将一种数据类型转换为另一种时,可以使用构造函数或全局转换函数。
var myString:String = "123"; var myNumber:int = int(myString); // 使用构造函数 var myNumber2:Number = Number(myString); // 使用构造函数 var myNumber3:int = parseInt(myString); // 全局函数,适合解析字符串
运算符
与大多数语言类似,包括:
- 算术运算符: , , , , (取模)
- 比较运算符: (值相等), (值和类型都相等), ,
<,>,<=,>= - 逻辑运算符:
&&(与), (或), (非)
注意:在 AS3 中, 会进行类型转换,而 不会,推荐尽可能使用 以避免意外的行为。
var a:int = 5; var b:Number = 5.0; var c:String = "5"; trace(a == b); // true trace(a == c); // true (5 == "5" 会将 "5" 转换为 5) trace(a === b); // false (类型不同) trace(a === c); // false (类型不同)
流程控制
-
条件语句
var score:int = 85; if (score >= 90) { trace("优秀"); } else if (score >= 60) { trace("及格"); } else { trace("不及格"); } -
循环语句
// for 循环 for (var i:int = 0; i < 5; i++) { trace("i 的值是: " + i); } // while 循环 var j:int = 0; while (j < 5) { trace("j 的值是: " + j); j++; } // for...in 循环 (遍历对象的可枚举属性) var myObj:Object = {name: "Tom", age: 25, city: "New York"}; for (var prop:String in myObj) { trace(prop + ": " + myObj[prop]); } // for each...in 循环 (遍历对象的属性值) for each (var value:* in myObj) { trace(value); }
第三部分:面向对象编程
这是 AS3 的精髓。
类与对象
- 类:是创建对象的蓝图或模板,定义了对象的属性和方法。
- 对象:是类的实例,是真实存在的实体。
创建一个简单的类 Person.as:
// Person.as
package {
public class Person {
// 属性
public var name:String;
public var age:int;
// 构造函数,在创建对象时自动调用
public function Person(name:String, age:int) {
this.name = name;
this.age = age;
}
// 方法
public function sayHello():void {
trace("你好,我的名字是 " + this.name + ",我 " + this.age + " 岁。");
}
}
}
**在 FLA 文件中使用
