一、准备工作:素材与环境
环境:Animate 2025(需安装完成,激活Creative Cloud)
素材:小鸡矢量动画(可自己画简单的小鸡,或导入现成矢量图,包含走路帧动画)
素材:小鸡矢量动画(可自己画简单的小鸡,或导入现成矢量图,包含走路帧动画)
1. 素材准备
- 打开Animate 2025,新建任意文档,用矢量工具画一只小鸡(或导入SVG/AI格式的小鸡矢量图);
- 制作小鸡走路的帧动画:在时间轴上创建3-5帧不同的小鸡腿部姿态,形成走路循环;
- 将小鸡动画转换为
影片剪辑(MovieClip),命名为:chicken_mc; - 制作一个简单的按钮(矩形+文字“开始走路”),转换为
按钮(Button),命名为:btn_play。
2. 舞台设置
- 舞台尺寸:800x400像素(便于观察移动效果);
- 帧率(FPS):24(动画流畅度适中);
- 背景色:浅灰色(#f0f0f0)。
二、先做AS3版本(原版本)
步骤1:新建AS3文档
- 打开Animate 2025 → 新建 → 选择「ActionScript 3.0」文档;
- 设置舞台尺寸800x400,帧率24,背景色#f0f0f0;
- 保存文档为:
chicken_as3.fla。
步骤2:布置素材到舞台
- 将库中的
chicken_mc拖到舞台左侧(x:50, y:150),确保实例名也是chicken_mc; - 将库中的
btn_play拖到舞台下方(x:350, y:300),实例名:btn_play; - 锁定图层,新建「代码层」(仅放代码,便于管理)。
步骤3:编写AS3代码
在「代码层」的第1帧,打开代码编辑器(F9),输入以下代码:
// AS3版本:按钮控制小鸡从左到右移动
stop(); // 初始暂停动画
// 定义小鸡移动速度
var speed:Number = 5;
// 按钮点击事件
btn_play.addEventListener(MouseEvent.CLICK, startWalk);
function startWalk(e:MouseEvent):void {
// 开启小鸡走路的帧动画循环
chicken_mc.play();
// 添加帧事件,每一帧移动小鸡
addEventListener(Event.ENTER_FRAME, moveChicken);
}
// 小鸡移动函数
function moveChicken(e:Event):void {
// 让小鸡x坐标增加(向右移动)
chicken_mc.x += speed;
// 到达舞台右侧(700像素位置)停止
if (chicken_mc.x >= 700) {
chicken_mc.stop(); // 停止走路动画
removeEventListener(Event.ENTER_FRAME, moveChicken); // 移除帧事件
}
}
步骤4:测试AS3版本
- 按
Ctrl+Enter测试影片; - 点击“开始走路”按钮,小鸡应从左侧(x=50)向右移动,直到x=700停止,走路帧动画同步播放。
三、迁移到HTML5 Canvas版本(核心步骤)
核心逻辑:HTML5 Canvas版本使用CreateJS(EaselJS+TweenJS)替代AS3,语法有差异,但核心逻辑(按钮事件+帧动画+坐标移动)一致。
步骤1:新建HTML5 Canvas文档
- 打开Animate 2025 → 新建 → 选择「HTML5 Canvas」文档;
- 舞台设置与AS3版本一致:800x400、24FPS、背景#f0f0f0;
- 保存文档为:
chicken_html5.fla。
步骤2:复用素材(关键)
- 打开之前的
chicken_as3.fla,打开「库」面板; - 选中
chicken_mc和btn_play,右键 → 「复制」; - 切换到
chicken_html5.fla,右键库面板空白处 → 「粘贴」; - 将
chicken_mc拖到舞台左侧(x:50, y:150),实例名:chicken_mc; - 将
btn_play拖到舞台下方(x:350, y:300),实例名:btn_play; - 锁定素材层,新建「代码层」。
步骤3:编写HTML5 Canvas代码(CreateJS)
在「代码层」第1帧,打开代码编辑器(F9),输入以下代码:
// HTML5 Canvas版本(CreateJS):按钮控制小鸡从左到右移动
// 停止初始动画
this.stop();
// 定义小鸡移动速度
var speed = 5;
// 获取舞台上的实例(this代表当前场景)
var chicken_mc = this.chicken_mc;
var btn_play = this.btn_play;
// 按钮点击事件(CreateJS事件绑定)
btn_play.addEventListener("click", startWalk);
function startWalk() {
// 开启小鸡走路的帧动画循环
chicken_mc.play();
// 添加Ticker帧事件(替代AS3的ENTER_FRAME)
createjs.Ticker.addEventListener("tick", moveChicken);
}
// 小鸡移动函数
function moveChicken() {
// 让小鸡x坐标增加(向右移动)
chicken_mc.x += speed;
// 到达舞台右侧(700像素位置)停止
if (chicken_mc.x >= 700) {
chicken_mc.stop(); // 停止走路动画
createjs.Ticker.removeEventListener("tick", moveChicken); // 移除帧事件
}
}
关键说明:
1. HTML5中无需类型声明(AS3的
2. 事件绑定:AS3的
3. 帧事件:AS3的
1. HTML5中无需类型声明(AS3的
var speed:Number = 5 → JS的var speed = 5);2. 事件绑定:AS3的
MouseEvent.CLICK → JS的"click";3. 帧事件:AS3的
ENTER_FRAME → CreateJS的createjs.Ticker。
四、AS3 vs HTML5代码对比
AS3 核心代码
- 类型声明:
var speed:Number = 5; - 事件绑定:
btn_play.addEventListener(MouseEvent.CLICK, startWalk); - 帧事件:
addEventListener(Event.ENTER_FRAME, moveChicken); - 实例访问:直接用实例名(全局)
HTML5 (CreateJS) 核心代码
- 无类型声明:
var speed = 5; - 事件绑定:
btn_play.addEventListener("click", startWalk); - 帧事件:
createjs.Ticker.addEventListener("tick", moveChicken); - 实例访问:
this.chicken_mc(当前场景下)
五、测试与导出
步骤1:测试HTML5版本
- 按
Ctrl+Enter测试影片,Animate会自动打开浏览器预览; - 点击“开始走路”按钮,验证小鸡是否从左到右移动,走路帧动画是否播放;
- 若小鸡不移动:检查实例名是否正确(必须和代码中一致)、代码是否写在第1帧。
步骤2:导出HTML5项目(可分享)
- 点击「文件」→「发布设置」;
- 勾选「HTML5 Canvas」,设置导出路径(如桌面的
chicken_html5文件夹); - 点击「发布」,Animate会生成两个文件:
index.html+chicken_html5.js; - 将整个文件夹压缩,即可分享给其他人(双击index.html即可在浏览器运行)。
注意:导出的HTML文件需在服务器环境下运行(本地双击也可),但如果涉及外部资源加载,需放在Web服务器(如XAMPP)中。
六、常见问题与解决
1. 点击按钮小鸡不移动
- 原因:实例名不一致(如代码中是
chicken_mc,舞台上实例名是chicken); - 解决:选中舞台上的小鸡,在「属性」面板确认实例名和代码中完全一致(区分大小写)。
2. 小鸡走路动画不循环
- 原因:
chicken_mc的时间轴未设置循环; - 解决:打开
chicken_mc的内部时间轴,在最后一帧添加代码this.gotoAndPlay(1);(HTML5版本)或gotoAndPlay(1);(AS3版本)。
3. 导出的HTML文件打开空白
- 原因:文件路径包含中文/特殊字符,或JS文件未和HTML文件在同一文件夹;
- 解决:将导出文件夹放在纯英文路径下(如
D:/chicken_demo/),确保HTML和JS文件同目录。
4. 小鸡移动速度过快/过慢
- 原因:
speed值设置不当,或帧率不一致; - 解决:调整
speed值(如3/5/8),确保AS3和HTML5版本帧率均为24。
完整可复用的HTML5代码(直接复制到Animate中)
// HTML5 Canvas 小鸡移动完整代码
this.stop();
// 配置参数
var config = {
speed: 5, // 移动速度
endX: 700, // 停止位置
chicken: this.chicken_mc,
btn: this.btn_play
};
// 初始化按钮
config.btn.addEventListener("click", function() {
// 防止重复点击
config.btn.removeEventListener("click", arguments.callee);
// 启动走路动画
config.chicken.play();
// 绑定帧移动事件
createjs.Ticker.addEventListener("tick", moveHandler);
});
// 移动处理函数
function moveHandler() {
config.chicken.x += config.speed;
// 到达目标位置停止
if (config.chicken.x >= config.endX) {
config.chicken.stop();
createjs.Ticker.removeEventListener("tick", moveHandler);
// 恢复按钮点击(可选)
config.btn.addEventListener("click", arguments.callee);
}
}