杰瑞科技汇

Flash AS2.0教程从哪开始学?

AS2.0 是一个历史悠久的编程语言,主要用于 Flash 8 和 Flash CS3 等早期版本,虽然现在已经被 AS3.0 和现代 Web 技术取代,但理解 AS2.0 对于维护旧项目、学习 Flash 动画制作的历史以及理解面向对象编程的基本概念仍然非常有价值。

本教程将从零开始,循序渐进,带你入门 AS2.0。


第一部分:基础入门

什么是 ActionScript 2.0 (AS2.0)?

ActionScript 是 Flash 的编程语言,AS2.0 是其第二个主要版本,它引入了“面向对象编程”(OOP)的概念,使得代码结构更清晰、更易于管理和复用,相比之前的 AS1.0 是一个巨大的飞跃。

如何编写和运行 AS2.0 代码?

主要有两种方式:

时间轴脚本 这是最直观的方式,直接写在 Flash 的时间轴上。

  1. 打开动作面板:在 Flash 中,按 F9 键,或者点击菜单栏的 窗口 -> 动作
  2. 选择帧:在时间轴上点击你想要添加代码的帧(通常是关键帧)。
  3. 编写代码:在动作面板中输入代码,确保左上角的 "动作工具箱" 选择了 "动作脚本 2.0"

外部 .as 文件 这是更专业、更推荐的方式,特别是对于复杂的项目,它将代码与动画分离。

  1. 创建 .as 文件:使用任何文本编辑器(如 Notepad++, Sublime Text, Flash 自带的脚本编辑器)创建一个纯文本文件,Main.as
  2. 在 Flash 中链接
    • 在 Flash 中,点击舞台上的主时间轴的第一帧。
    • 打开动作面板(F9)。
    • 输入以下代码来链接你的外部类文件:
      #include "Main.as"

      或者,如果使用类的方式:

      // 假设你有一个 Main.as 文件,里面定义了一个 Main 类
      var main:Main = new Main();

第二部分:AS2.0 核心语法

变量

变量是存储数据的容器。

// 语法: var 变量名:数据类型 = 值;
var myName:String = "张三";      // 字符串
var myAge:Number = 25;          // 数字
var isStudent:Boolean = true;   // 布尔值 (true/false)
var scores:Array = [90, 85, 95]; // 数组

数据类型

  • String: 文本,如 "你好"
  • Number: 数字,如 123, 14
  • Boolean: 布尔值,truefalse
  • Object: 对象,可以包含多个属性和方法。
  • Array: 数组,用于存储值的列表。
  • MovieClip: 影片剪辑,Flash 中的动画对象。
  • Void: 表示没有返回值。

函数

函数是一段可以重复执行的代码块。

// 语法: function 函数名(参数1:类型, 参数2:类型):返回类型 {
//         // 代码
//         return 返回值;
//       }
// 定义一个不带参数和返回值的函数
function sayHello() {
    trace("你好,世界!"); // trace() 是在输出面板中打印信息的函数
}
// 调用函数
sayHello(); // 输出: 你好,世界!
// 定义一个带参数和返回值的函数
function addNumbers(a:Number, b:Number):Number {
    var sum:Number = a + b;
    return sum;
}
// 调用函数并接收返回值
var result:Number = addNumbers(5, 3);
trace("结果是: " + result); // 输出: 结果是: 8

条件语句

根据不同的条件执行不同的代码。

var score:Number = 85;
if (score >= 90) {
    trace("优秀!");
} else if (score >= 60) {
    trace("及格!");
} else {
    trace("不及格!");
}

循环语句

重复执行某段代码。

// for 循环
for (var i:Number = 1; i <= 5; i++) {
    trace("循环次数: " + i);
}
// while 循环
var j:Number = 0;
while (j < 3) {
    trace("While 循环: " + j);
    j++;
}

事件处理

让程序对用户的操作(如点击鼠标、按下键盘)做出反应,这是交互式动画的核心。

最常用的事件:

  • onPress: 鼠标按下时触发。
  • onRelease: 鼠标按下并释放时触发(最常用的点击事件)。
  • onRollOver: 鼠标滑过时触发。
  • onRollOut: 鼠标滑出时触发。
  • onEnterFrame: 每一帧都触发(用于制作动画)。

如何添加事件?

假设你舞台上有一个按钮实例,名为 myButton

方法A:直接附加到按钮实例上

  1. 选中舞台上的按钮。
  2. 打开动作面板(F9)。
  3. 输入以下代码:
    on(press) {
        trace("按钮被按下了!");
    }

方法B:使用事件处理函数(推荐)

这种方法将代码写在时间轴上,更符合代码分离的思想。

  1. 在时间轴上选择一个关键帧。

  2. 打开动作面板,输入:

    // 给 myButton 添加点击事件
    myButton.onRelease = function() {
        trace("按钮被点击了!");
        // 也可以操作其他对象,比如让一个叫 ball 的影片剪辑移动
        ball._x += 10;
    };

第三部分:与 Flash 元素交互

这是 AS2.0 最强大的地方,通过代码控制舞台上的对象。

访问实例名称

每个 Flash 元素(影片剪辑、按钮、文本框)都有一个“实例名称”,这是代码中识别它的唯一标识。

  1. 在舞台上绘制一个圆形,按 F8 将其转换为“影片剪辑”。
  2. 在属性面板中,给它一个实例名称,ball_mc
  3. 在时间轴上写代码来控制它:
// 控制 ball_mc 的位置
ball_mc._x = 100; // 设置 X 坐标
ball_mc._y = 200; // 设置 Y 坐标
// 控制 ball_mc 的透明度
ball_mc._alpha = 50; // 50% 透明度
// 控制 ball_mc 的缩放
ball_mc._xscale = 150; // X轴放大到150%
ball_mc._yscale = 150; // Y轴放大到150%
// 控制 ball_mc 的可见性
ball_mc._visible = false; // 隐藏
// ball_mc._visible = true; // 显示

动态创建元素

你可以在代码中动态地创建新的影片剪辑。

// 创建一个空的影片剪辑
var newClip:MovieClip = this.createEmptyMovieClip("newClip_mc", this.getNextHighestDepth());
// 在新创建的剪辑中画一个矩形
newClip.lineStyle(2, 0x000000); // 线条样式:2像素宽,黑色
newClip.beginFill(0xFF0000);    // 填充颜色:红色
newClip.moveTo(0, 0);           // 移动到画布 (0,0)
newClip.lineTo(50, 0);         // 画线到 (50,0)
newClip.lineTo(50, 50);        // 画线到 (50,50)
newClip.lineTo(0, 50);         // 画线到 (0,50)
newClip.lineTo(0, 0);          // 画线回 (0,0)
newClip.endFill();             // 结束填充
// 设置新剪辑的位置
newClip._x = 150;
newClip._y = 150;

使用 onEnterFrame 制作动画

onEnterFrame 是一个事件,它会以每秒约 12 到 60 次(取决于你的帧速率)的速度不断触发,这是制作动画的基础。

// 假设舞台上有一个叫 "movingBall_mc" 的影片剪辑
movingBall_mc.onEnterFrame = function() {
    // 每一帧,将 movingBall_mc 的 x 坐标加 1
    this._x += 1;
    // 如果它移出了舞台右边界(550是默认舞台宽度)
    if (this._x > 550) {
        // 让它从左边重新出现
        this._x = 0;
    }
};

第四部分:面向对象编程入门

AS2.0 的核心是 OOP,它让你把相关的属性(变量)和方法(函数)封装到一个“类”中。

创建一个类

创建一个 Car.as 文件。

// Car.as
class Car {
    // 属性 (变量)
    var speed:Number;
    var color:String;
    // 构造函数,当 new Car() 时被调用
    function Car(carColor:String) {
        this.speed = 0;
        this.color = carColor;
        trace("一辆 " + this.color + " 色的汽车被创建!");
    }
    // 方法 (函数)
    function accelerate():Void {
        this.speed += 10;
        trace("加速!当前速度: " + this.speed);
    }
    function brake():Void {
        this.speed = Math.max(0, this.speed - 10); // 速度不能小于0
        trace("刹车!当前速度: " + this.speed);
    }
}

使用类

在 Flash 的主时间轴第一帧,链接并使用这个类。

// 在主时间轴的动作面板中
#include "Car.as" // 如果使用 .as 文件
// 创建一个 Car 类的实例 (对象)
var myCar:Car = new Car("红色");
// 调用对象的方法
myCar.accelerate(); // 输出: 一辆 红色 色的汽车被创建! 加速!当前速度: 10
myCar.accelerate(); // 输出: 加速!当前速度: 20
myCar.brake();      // 输出: 刹车!当前速度: 10

第五部分:实用技巧与实例

实例1:制作一个简单的跟随鼠标的动画

  1. 在舞台上画一个圆,转换为影片剪辑,实例名为 follower_mc
  2. 在时间轴上写代码:
follower_mc.onEnterFrame = function() {
    // 让 follower_mc 的位置向鼠标位置移动
    // 乘以 0.2 是一个缓动系数,让移动更平滑
    this._x += (this._parent._xmouse - this._x) * 0.2;
    this._y += (this._parent._ymouse - this._y) * 0.2;
};

_parent 指的是当前对象的父级(这里是主时间轴),_xmouse_ymouse 是鼠标的坐标。

实例2:加载外部图片

// 创建一个空的影片剪辑来装载图片
var container:MovieClip = this.createEmptyMovieClip("container_mc", this.getNextHighestDepth());
// 创建一个 Loader 对象
var my_mcl:MovieClipLoader = new MovieClipLoader();
var myListener:Object = new Object();
// 监听加载事件
myListener.onLoadComplete = function(target:MovieClip) {
    trace("图片加载完成!");
    // 可以在这里对加载完成的图片进行操作
    target._width = 200; // 设置宽度
    target._height = 200; // 设置高度
};
my_mcl.addListener(myListener);
// 开始加载图片
my_mcl.loadClip("image.jpg", container);

第六部分:学习资源与注意事项

注意事项

  1. 已过时:AS2.0 不是 学习现代 Web 开发的语言,如果你目标是做网页,请直接学习 JavaScript。
  2. 性能:AS2.0 的性能远不如 AS3.0。
  3. 调试困难:AS2.0 的错误提示不如 AS3.0 明确,调试起来更痛苦。
  4. Flash Player 淘汰:Adobe 已于 2025 年正式停止支持 Flash Player 和 Flash,这意味着在现代浏览器中,.swf 文件(Flash 动画)默认无法运行,学习 AS2.0 主要是为了维护旧项目或满足特定怀旧需求

推荐学习资源

由于 AS2.0 比较古老,新资源很少,主要依赖老教程。

  1. Adobe 官方文档 (存档)

  2. 经典教程网站 (存档)

    • Kirupa.com: 曾经是 Flash 学习的圣地,有大量高质量的 AS2.0 教程,虽然网站已转型,但通过 Wayback Machine 等方式可以访问旧内容。
    • ActionScript.org: 另一个老牌的 Flash/ActionScript 社区论坛。
  3. 视频平台

    • YouTube 上搜索 "Flash AS2.0 tutorial",可以找到很多英文的老视频教程。
  4. 中文社区

    • 闪吧: 国内最老牌、最知名的 Flash 动画和游戏社区,论坛里有海量的 AS2.0 教程、源码和问答,是寻找中文资料的最佳去处。

希望这份教程能帮助你顺利入门 ActionScript 2.0!祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇