第一部分:准备工作与基础概念
什么是 ActionScript 3.0 (AS3.0)?
ActionScript 3.0 (简称 AS3) 是 Flash 的编程语言,它是一种强大的、基于 ECMAScript 标准的面向对象编程语言,与之前的 AS2.0 相比,AS3.0 性能更高、更规范、更易于维护,是现代 Flash 开发的标准。

环境准备
-
软件:
- Adobe Animate:这是目前 Adobe 官方推荐的、仍在更新的 Flash 创作工具,它完全支持 AS3.0。
- Adobe Flash Professional CS6:这是一个经典的版本,仍然被广泛使用,完全支持 AS3.0。
- (可选)代码编辑器:如 Flash Builder, Visual Studio Code (配合插件) 等,它们提供更好的代码提示和调试功能,但通常需要与 Flash IDE 配合使用。
-
新建 AS3.0 文档:
- 打开 Animate 或 Flash。
- 选择
文件->新建。 - 在
常规选项卡中,选择ActionScript 3.0。 - 点击
创建。
AS3.0 的核心概念
在开始写代码前,必须理解三个最基本的概念:
- 时间轴:Flash 动画的主线,由帧组成,代码可以附加在特定帧上,当播放头到达该帧时,代码就会执行。
- 舞台:你看到的白色矩形区域,是最终动画显示的地方,所有可见的元素(图形、实例)最终都会出现在舞台上。
- 库:存放你创建的所有元素(图形、按钮、影片剪辑、声音等)的地方,你可以将这些元素从库中拖到舞台上,它们就变成了“实例”。
第二部分:第一个 AS3.0 程序
"Hello, World!"
这是编程的入门仪式。

-
新建一个 AS3.0 文档。
-
选择
窗口->动作,或者按F9键,打开“动作”面板。 -
确保“动作”面板顶部的目标对象是
图层 1的第 1 帧。 -
在代码编辑区输入以下代码:
(图片来源网络,侵删)trace("Hello, World!"); -
按
Ctrl + Enter(Windows) 或Cmd + Enter(Mac) 测试影片。
结果:你会看到一个新的播放器窗口,但舞台上什么都没有,在播放器的输出窗口中,你会看到一行文字:Hello, World!。
解释:trace() 是一个调试函数,它会将括号内的内容输出到“输出”面板,方便我们查看变量值或确认代码是否执行。
显示文本
让我们在舞台上显示文字。
-
新建一个 AS3.0 文档。
-
选择
文本工具,在舞台上拖出一个文本框。 -
在右侧的
属性面板中,将文本类型设置为 "动态文本"。 -
给这个文本框一个 实例名称,
myTextField,实例名称就像这个对象的“身份证号”,代码通过它来操作这个对象。 -
选中第 1 帧,按
F9打开动作面板,输入以下代码:// 访问文本框实例,并改变其 text 属性 myTextField.text = "你好,AS3.0!";
-
按
Ctrl + Enter测试。
结果:现在你应该能在舞台上看到 "你好,AS3.0!" 这段文字了。
第三部分:AS3.0 核心编程基础
变量与数据类型
变量是用来存储数据的容器。
// 声明一个变量 var myName:String = "张三"; // 声明一个数字变量 var myAge:int = 25; // 声明一个布尔值变量 var isStudent:Boolean = true; // trace 它们 trace(myName); // 输出: 张三 trace(myAge); // 输出: 25
常用数据类型:
String:字符串,用双引号 括起来。int:整数,用于表示没有小数的数字。Number:浮点数,用于表示有小数的数字。Boolean:布尔值,只有true(真) 和false(假) 两个值。Array:数组,用于存储一组数据。Object:对象,可以存储键值对。
函数
函数是一段可以重复使用的代码块。
// 定义一个函数
function sayHello(name:String):void {
trace("你好, " + name + "!");
}
// 调用(执行)这个函数
sayHello("李四"); // 输出: 你好, 李四!
sayHello("王五"); // 输出: 你好, 王五!
解释:
function:关键字,表示定义函数。sayHello:函数名。(name:String):参数,函数接收的输入。name是参数名,String是参数类型。void:返回值类型。void表示这个函数不返回任何值。- 函数体,包含要执行的代码。
事件监听器
这是 AS3.0 的核心!AS3.0 是一个事件驱动的语言,你不能直接让某个按钮“被点击”,而是要“监听”它是否被“点击”,一旦“点击”事件发生,就执行你指定的代码。
语法:对象.addEventListener(事件类型, 处理函数);
示例:点击按钮改变文本
-
新建一个 AS3.0 文档。
-
在舞台上创建一个动态文本框,实例命名为
myText。 -
在舞台上创建一个按钮(或者用矩形画一个,然后按
F8转换为“按钮”元件),实例命名为myButton。 -
选中第 1 帧,打开动作面板,输入代码:
// 导入事件类 (在 AS3.0 中,很多事件都需要导入) import flash.events.MouseEvent; // 定义一个处理函数,当按钮被点击时执行 function changeText(event:MouseEvent):void { myText.text = "按钮被点击了!"; } // 为按钮添加鼠标点击事件监听 // 当 MouseEvent.CLICK 事件发生时,调用 changeText 函数 myButton.addEventListener(MouseEvent.CLICK, changeText); -
按
Ctrl + Enter测试,现在点击按钮,舞台上的文字就会改变。
常用事件:
MouseEvent.CLICK:鼠标点击。MouseEvent.MOUSE_OVER:鼠标移到对象上。MouseEvent.MOUSE_OUT:鼠标移出对象。Event.ENTER_FRAME:每一帧都触发一次(用于制作动画)。
第四部分:与库中的元件交互
这是最常用的功能之一,我们通常把图形、动画制作成“影片剪辑”元件,然后通过代码来控制它们。
创建影片剪辑
- 按
Ctrl + F8(或Cmd + F8) 新建元件。 - 选择“影片剪辑”,给它起个名字,
MyBall。 - 在影片剪辑的编辑界面里,画一个圆。
- 回到主场景,从库中将
MyBall拖到舞台上。 - 选中这个圆,在属性面板中给它一个实例名称,
ball_mc。mc是MovieClip的常用后缀。
控制影片剪辑
// 假设 ball_mc 的实例名称是 ball_mc
// 1. 改变位置
ball_mc.x = 100; // 设置 X 坐标
ball_mc.y = 200; // 设置 Y 坐标
// 2. 改变大小 (缩放)
ball_mc.scaleX = 2; // X 轴放大到 2 倍
ball_mc.scaleY = 2; // Y 轴放大到 2 倍
// 3. 改变透明度
ball_mc.alpha = 0.5; // 50% 透明
// 4. 改变旋转角度
ball_mc.rotation = 45; // 旋转 45 度
// 5. 拖动
ball_mc.addEventListener(MouseEvent.MOUSE_DOWN, startDragBall);
ball_mc.addEventListener(MouseEvent.MOUSE_UP, stopDragBall);
function startDragBall(event:MouseEvent):void {
ball_mc.startDrag(); // 开始拖动
}
function stopDragBall(event:MouseEvent):void {
ball_mc.stopDrag(); // 停止拖动
}
第五部分:实战案例——简单的弹球游戏
让我们综合运用上面的知识,做一个简单的弹球游戏。
目标:一个球在屏幕内弹跳,碰到边界就反弹。
-
创建元件:
- 按
Ctrl + F8创建一个名为Ball的影片剪辑,在里面画一个圆。 - 将
Ball从库拖到主舞台,实例命名为ball_mc。
- 按
-
编写代码:
- 选中第 1 帧,打开动作面板。
- 输入以下代码:
// 导入事件类 import flash.events.Event; // 定义球的速度 var speedX:Number = 5; var speedY:Number = 3; // 添加一个 ENTER_FRAME 事件监听 // 这个事件会在每一帧都触发,非常适合做动画 ball_mc.addEventListener(Event.ENTER_FRAME, moveBall); // 定义移动函数 function moveBall(event:Event):void { // 1. 更新球的位置 ball_mc.x += speedX; ball_mc.y += speedY; // 2. 获取舞台的宽度和高度,用于边界检测 var stageWidth:Number = stage.stageWidth; var stageHeight:Number = stage.stageHeight; // 3. 检测是否碰到左右边界 if (ball_mc.x <= 0 || ball_mc.x >= stageWidth - ball_mc.width) { speedX = -speedX; // 反转 X 方向速度 } // 4. 检测是否碰到上下边界 if (ball_mc.y <= 0 || ball_mc.y >= stageHeight - ball_mc.height) { speedY = -speedY; // 反转 Y 方向速度 } } -
测试:按
Ctrl + Enter,你会看到球在舞台上弹跳!
第六部分:进阶方向与资源
当你掌握了以上基础后,可以探索更高级的主题:
- 动画编程:深入学习
Tween类(如TweenLite)来实现更流畅的动画效果,而不是只用ENTER_FRAME手动计算。 - 游戏开发:碰撞检测(
hitTestObject,hitTestPoint)、游戏状态管理(开始、暂停、结束)、分数系统、键盘控制(KeyboardEvent)。 - 加载外部资源:使用
Loader类加载外部的图片、SWF 文件或 XML 数据。 - 面向对象编程:创建自己的类来组织代码,
Player类、Enemy类,让代码结构更清晰、更易于扩展。 - Sound API:控制背景音乐和音效的播放。
推荐资源
-
官方文档:
- Adobe Animate 官方文档:最权威的参考资料。
- Adobe ActionScript 3.0 参考:所有类、属性、方法的详细说明。
-
在线教程网站:
- Gamedev.tutsplus.com:有大量高质量的 Flash 游戏开发教程。
- Kirupa.com:一个非常经典的 Flash/AS3 教程网站,内容深入浅出。
- Bilibili / YouTube:搜索 "Flash AS3 教程" 或 "Animate AS3 教程",有大量中文视频教程。
-
书籍:
- 《Essential ActionScript 3.0》:AS3.0 的“圣经”,适合深入学习。
- 《Flash Game Programming for Dummies》:适合初学者的游戏开发入门书籍。
学习 AS3.0 的关键在于 “理解事件驱动” 和 “实践”,不要只看代码,亲手去写,去修改,去尝试,从简单的交互开始,逐步构建复杂的逻辑,虽然原生 Flash 的使用场景有所减少,但 AS3.0 的编程思想(事件、面向对象)在现代前端开发(如 JavaScript)中依然非常重要,祝你学习愉快!
