ActionScript 3.0 完整教程
目录
-
(图片来源网络,侵删)- 什么是 ActionScript 3.0?
- 开发环境搭建
- 第一个程序:"Hello, World!"
- 代码注释
-
- 变量与数据类型
- 运算符
- 条件语句
- 循环语句
- 函数
-
- 什么是类和对象?
- 创建自定义类
- 属性和方法
- 构造函数
- 继承
-
- 显示列表
- 使用 ActionScript 创建图形
- 事件处理模型
- 动画基础
-
(图片来源网络,侵删)- 动态类与
for...in/for each...in循环 - 错误处理
- 加载外部资源
- Sound (声音) API 简介
- 动态类与
-
- 官方文档
- 推荐书籍
- 社区与论坛
第一部分:基础入门
什么是 ActionScript 3.0?
ActionScript (AS) 是 Adobe Flash 平台和 Adobe AIR 的编程语言,它基于 ECMAScript,类似于 JavaScript。
ActionScript 3.0 的主要特点:
- 性能飞跃: 相比 AS2,AS3 的虚拟机 (AVM2) 性能提升了 10 倍以上,尤其是在处理图形和计算密集型任务时。
- 面向对象: AS3 是一门完全的面向对象编程语言,拥有严格的类和对象模型,支持封装、继承和多态。
- 错误处理: 引入了
try...catch...finally结构,使得程序在运行时发生错误可以被捕获和处理,而不是直接崩溃。 - 事件模型: 采用更强大、更统一的事件处理机制,使代码更清晰、更易于管理。
- 显示列表: 引入了全新的显示列表架构,用于管理屏幕上所有可视元素,比 AS2 的深度管理更强大、更直观。
重要提示: ActionScript 3.0 主要用于开发 Adobe Flash Professional (FLA) 项目、Flex/AIR 应用程序和 Flash 游戏,随着 Adobe 对 Flash Player 的停止支持,AS3 的主要应用场景已转向 游戏开发 (使用如 Starling, Away3D 等框架) 和 遗留项目维护,但对于学习编程基础和 OOP 概念,它仍然是一门非常优秀的语言。
(图片来源网络,侵删)
开发环境搭建
你有两个主要选择:
-
Adobe Animate (前身为 Flash Professional):
- 这是目前官方推荐的、用于创建 FLA 和 AS3 动画/应用的主要工具。
- 你可以在时间轴上写代码,也可以创建外部 ActionScript 文件 (
.as)。
-
Flash Builder / Flex SDK:
- Flash Builder 是一个基于 Eclipse 的专业 IDE,主要用于开发 Flex 和 AIR 应用程序。
- Flex SDK 是一个免费的软件开发工具包,你可以使用任何代码编辑器(如 VS Code)配合它进行开发。
对于初学者,Adobe Animate 是最友好的选择。
第一个程序:"Hello, World!"
在 Adobe Animate 中创建一个新的 ActionScript 3.0 项目。
在时间轴上写代码
-
按
F9打开“动作”面板。 -
在第一帧上输入以下代码:
trace("Hello, World!"); -
按
Ctrl + Enter(Windows) /Cmd + Enter(Mac) 测试影片。 -
打开“输出”面板 (
Shift + F2),你将看到 "Hello, World!"。
trace() 函数 是 AS3 中最常用的调试工具,它会在输出面板中打印信息。
使用外部类文件 (推荐)
这是更专业、更符合 OOP 思想的方式。
-
在 Animate 中,创建一个新的 ActionScript 文件 (
文件->新建->ActionScript 文件)。 -
保存为
Main.as。 -
在
Main.as中输入以下代码:package // 包声明 { import flash.display.MovieClip; // 导入 MovieClip 类 public class Main extends MovieClip // Main 类继承自 MovieClip { public function Main() // 构造函数 { trace("Hello, World from an external class!"); } } } -
回到你的
.fla文件,在“属性”面板中,将“类”设置为Main。 -
测试影片,你同样会在输出面板看到结果。
代码解释:
package: 包,用于组织代码,防止命名冲突。import flash.display.MovieClip;: 导入MovieClip类,因为我们的Main类要继承它。public class Main: 定义一个名为Main的公共类。extends MovieClip: 表示Main类是MovieClip的子类,拥有MovieClip的所有功能(比如可以在舞台上显示)。public function Main(): 这是构造函数,当类的对象被创建时,它会被自动调用。
代码注释
注释是写给程序员看的,解释代码的作用,不会被编译器执行。
- 单行注释:
// 这是单行注释 - 多行注释:
/* 这是多行注释 可以写很多行 */
第二部分:核心语法
变量与数据类型
变量是存储数据的容器。
// 声明变量并赋值 var myName:String = "Alice"; var age:int = 30; var isStudent:Boolean = true; var score:Number = 95.5; var hobbies:Array = ["reading", "gaming"]; // 声明但不赋值 var message:String; // message 的值为 null
常用数据类型:
| 类型 | 描述 | 示例 |
|---|---|---|
String |
字符串,用双引号或单引号括起来 | "hello", 'world' |
int |
32 位整数,用于整数运算 | 100, -50 |
uint |
32 位无符号整数,用于颜色值 | 0xFF0000 (红色) |
Number |
双精度浮点数,用于带小数的数字 | 14, 0 |
Boolean |
布尔值,只有 true 或 false |
true, false |
Array |
数组,用于存储一组数据 | ["a", "b", "c"] |
Object |
对象,用于存储键值对 | {name: "Tom", age: 25} |
void |
表示没有返回值 | public function myFunc():void {} |
运算符
- 算术运算符: , , , , (取模)
- 赋值运算符: , , , , (
x += 5等同于x = x + 5) - 比较运算符: (等于), (不等于),
>(大于),<(小于),>=,<= - 逻辑运算符:
&&(与), (或), (非)
var a:int = 10; var b:int = 20; var result:Boolean; result = (a > b); // false result = (a < b && a > 0); // true
条件语句
根据条件执行不同的代码块。
var score:int = 85;
if (score >= 90) {
trace("优秀");
} else if (score >= 60) {
trace("及格");
} else {
trace("不及格"); 
