二维动画制作

丁弋洵

目录

  • 1 课前准备
    • 1.1 课程介绍及软件安装
    • 1.2 课程学习方法
  • 2 二维动画制作基础
    • 2.1 动画的起源与发展
    • 2.2 动画原理及制作方式
    • 2.3 本章测验
  • 3 认识Flash
    • 3.1 Flash简介及应用领域
    • 3.2 我的第一个Flash作品
    • 3.3 Flash的工作界面
    • 3.4 Flash的时间轴和场景
    • 3.5 本章测验
  • 4 图形的绘制与编辑
    • 4.1 绘图工具箱
    • 4.2 矩形工具
    • 4.3 椭圆工具
    • 4.4 基本矩形与基本椭圆工具
    • 4.5 多角星形工具
    • 4.6 线条工具
    • 4.7 铅笔工具
    • 4.8 刷子工具1
    • 4.9 刷子工具2
    • 4.10 喷涂刷工具
    • 4.11 钢笔工具
    • 4.12 文本工具
    • 4.13 DECO工具1
    • 4.14 DECO工具2
    • 4.15 DECO工具3
    • 4.16 选择工具
    • 4.17 部分选取工具
    • 4.18 任意变形和渐变变形工具
    • 4.19 套索工具
    • 4.20 颜料桶工具
    • 4.21 墨水瓶工具
    • 4.22 滴管工具
    • 4.23 颜色面板
    • 4.24 渐变填充
    • 4.25 调色板
    • 4.26 样本面板
    • 4.27 橡皮擦工具
    • 4.28 手形工具和缩放工具
    • 4.29 绘制模式
    • 4.30 对象的组合和分离
    • 4.31 案例:雨伞的绘制
    • 4.32 案例:红心的绘制
    • 4.33 案例:香烟的绘制
    • 4.34 案例:鼠标的绘制
    • 4.35 本章测验
    • 4.36 实战演练
  • 5 元件的使用
    • 5.1 Flash中的元件
    • 5.2 图形元件
    • 5.3 按钮元件
    • 5.4 影片剪辑元件
    • 5.5 本章测验
    • 5.6 实战演练
  • 6 Flash中的动画制作
    • 6.1 逐帧动画的制作
    • 6.2 形状补间动画的制作
    • 6.3 形状补间动画案例:小草的生长
    • 6.4 动作补间动画的制作
    • 6.5 引导层动画的制作
    • 6.6 遮罩动画的制作
    • 6.7 骨骼动画
    • 6.8 3D动画
    • 6.9 Deco动画
    • 6.10 有声动画的制作
    • 6.11 本章测验
      • 6.11.1 帧的基本操作---测验
      • 6.11.2 逐帧动画---测验
      • 6.11.3 形状补间动画---测验
      • 6.11.4 动作补间动画---测验
      • 6.11.5 引导层动画---测验
      • 6.11.6 遮罩动画---测验
    • 6.12 实战演练
  • 7 脚本应用基础
    • 7.1 Action脚本简介和基本语法
    • 7.2 Action数据类型与运算符
    • 7.3 程序流程的控制
    • 7.4 认识动作面板
    • 7.5 本章测验
      • 7.5.1 Action脚本简介和基本语法---测验
      • 7.5.2 Action数据类型与运算符---测验
      • 7.5.3 程序流程的控制---测验
      • 7.5.4 认识动作面板---测验
  • 8 交互式动画
    • 8.1 跳转语句的学习
    • 8.2 事件处理
    • 8.3 Flash自定义函数
    • 8.4 鼠标事件
    • 8.5 复制影片剪辑的制作
    • 8.6 随机加载影片剪辑
    • 8.7 键盘事件
    • 8.8 控制声音播放
    • 8.9 本章测验
      • 8.9.1 跳转语句的学习---测验
      • 8.9.2 flash自定义函数---测验
      • 8.9.3 事件处理---测验
      • 8.9.4 鼠标事件---测验
      • 8.9.5 随机加载影片剪辑---测验
      • 8.9.6 键盘事件之keyboardevent类---测验
      • 8.9.7 控制声音播放---测验
    • 8.10 实战演练
鼠标事件

课堂导入

   许多的交互式动画都离不开鼠标事件,例如下面的连单词游戏,通过鼠标的点击来完成。那什么是鼠标事件呢,又如何编写鼠标事件呢?赶快加入到我们的学习中来吧!



学习目

1、了解鼠标事件以及鼠标事件的类型;

2、学会使用鼠标事件。


学习任务单


教学视频

教学课件

实战演练

         以下作品为素材库中作品展示,下面有具体的代码解释。

Mouse.hide(); //隐藏鼠标指针。

stage.addEventListener(MouseEvent.MOUSE_MOVE,mousemove);//

添加addEventListener方法,使用MOUSE_MOVE事件,注册事件侦听。

function mousemove(a:MouseEvent) {

s_mc.x=mouseX;

s_mc.y=mouseY;

}//

事件处理程序中使用赋值语句进行跟随。


拓展资源

(一)思考一下:如何制作利用FLASH制作个人博客网站并用鼠标控制呢?

(二)操作步骤

  该网站主要有三个设计内容:进度条、多级菜单、模块加载内容。其中模块加载内容为swf 文件,可以单独设计,这里不再叙述。网站拓扑结构如下图所示。

一、网站背景的制作

新建背景影片剪辑,命名为:beijing,导入所需要的图形,如下图所示。

二、进度条制作

1、在“背景层”上新建一层,名为“进度条背景”,用矩形工具画一个长条,宽:400,高:20,位置相对于舞台居中对齐,右击转换为影片剪辑元件,命名为“载入进度条背景”。

2、再新建一层,名为“载入进度条”,用矩形工具再画一个长条,宽:398,高:18,位置相对于舞台居中对齐,右击转换为影片剪辑元件,命名为“载入进度条”,实例名称为“jdt_mc”。

3、新建一层名为“actions”,按F9打开动作面板,输入如下代码,

import flash.events.ProgressEvent;

import flash.display.LoaderInfo;//导入加载的信息类

import flash.text.TextField;

stop();

//进度条控制

var display_txt:TextField = new TextField();//该文本框显示加载的进度

var num:int;

display_txt.width = 100;

display_txt.height = 25;

display_txt.x = 700;

display_txt.y = 360;

addChild(display_txt);

jdt_mc.width = 1;//初始化进度条影片剪辑jdt_mc的宽度为1

this.loaderInfo.addEventListener(ProgressEvent.PROGRESS,myloadmovie);//为主场景响应加载事件

this.loaderInfo.addEventListener(Event.COMPLETE,myover); //响应加载完成事件

function myloadmovie(event:ProgressEvent):void

{

num = Math.floor(event.bytesLoaded/event.bytesTotal);//为加载进度取整

jdt_mc.width = 398 * num;//实现jdt_mc的长度跟随加载百分比的变化而变化

display_txt.text = num*100 +"%";//把加载的进度显示在display_txt文本框中

}

function myover(event:Event):void{

gotoAndStop(10);

this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS,myloadmovie);//当加载完成后消除掉加载进程事件

removeChild(display_txt);//去除display_txt

}

三、多级菜单制作

1.创建“首页”菜单项

步骤1:创建一矩形按钮元件,命名为“元件1”,备用。

步骤2:创建影片剪辑,命名为“首页”,图层1第1帧输入文字:首页,22磅字体,褐色。图层2第1帧引入“元件1”按钮,将按钮的alpha值设置为0%,按钮全透明。图层3第1帧输入代码:stop(); 如下图所示。

注:首页菜单项没有二级菜单。

2. 创建“关于自己”菜单项

步骤1:创建“子菜单1”影片剪辑,“背景”图层第1帧绘制褐色矩形框;“文本”图层第1帧输入两组文字:个人简介、个人成就;“图层2”图层第1帧引入两个“元件1”按钮元件,分别放在输入的两组文字上。如下图所示。

步骤2:创建影片剪辑,命名为“关于自己”,图层1第1帧输入文字:关于自己,22绑字体,褐色。图层2第1帧引入2个“元件1”按钮,将按钮的alpha值设置为0%,按钮全透明,按钮实例名分别为:bnt1、bnt2。图层3第1帧引入“子菜单1”影片剪辑,到第10帧创建补间动画,使子菜单从“关于自己”文字的上方平移到文字下方;第10帧的“子菜单”影片剪辑实例名为:cd1_mc图层4第1帧绘制遮罩;图层56第1帧输入代码:stop(); 如下图所示。

注:“关于自己”菜单项有二级菜单。

创建as类文件,命名为cd1.as,且与“承担cd1_mc”影片剪辑关联。类文件中输入以下内容:

package cd{

import flash.display.Sprite;

import flash.display.*;

import flash.events.MouseEvent;

import flash.net.URLRequest;

import flash.system.*;

import flash.utils.*;

import cd.caidan;

import cd.cd1;

import cd.cd2; 

public class cd1 extends Sprite{

  public function cd1(){

bnt1.addEventListener(MouseEvent.CLICK,cd11);

bnt2.addEventListener(MouseEvent.CLICK,cd12);}

private function cd11(event:MouseEvent):void{

var url1:URLRequest=new URLRequest("11.swf");

if(caidan.loader.content)

{caidan.loader.unload();

  }

caidan.loader.load(url1);

caidan.container.addChild(caidan.loader);

}

private function cd12(event:MouseEvent):void{

var url1:URLRequest=new URLRequest("22.swf");

if(caidan.loader.content)

{caidan.loader.unload();

  }

caidan.loader.load(url1);

caidan.container.addChild(caidan.loader);

}

}}

其它菜单的影片剪辑参考“首页”、“关于自己”影片剪辑的制作。

3.创建整体菜单项

创建影片剪辑,命名为“menu” ,引入“beijing”影片剪辑,导入做好的“首页”、“关于自己”、“作品展示”、“动态新闻”、“更多”影片剪辑,实例名分别命名为:sy_mc 、gyzj_mc、zpzs_mc、dtxw_mc、gd_mc。如下图所示。

为“menu”影片剪辑创建关联类。创建as文件,命名为caidan.as,输入代码:

package cd{

import flash.display.Sprite;

import flash.display.*;

import flash.events.MouseEvent;

import flash.net.URLRequest;

import flash.system.*;

import flash.utils.*;

import cd.caidan;   //导入自定义的其它类

import cd.cd1;

import cd.cd2;

public class caidan extends Sprite{

   public static var loader=new Loader();

   public static var container:Sprite=new Sprite;

   //定义公用容器变量

public function caidan(){

addChild(container);

container.addChild(loader);

setChildIndex(container,1);//设置容器层次

container.x=-600;

container.y=-250;

var url1:URLRequest=new URLRequest("sy.swf");

caidan.loader.load(url1);

caidan.loader.x=-40;

caidan.loader.y=-85;

caidan.container.addChild(caidan.loader);//容器初始显示内容

sy_mc.addEventListener(MouseEvent.CLICK, jg0);//菜单事件侦听

gyzj_mc.addEventListener(MouseEvent.MOUSE_OVER, jg2);

gyzj_mc.addEventListener(MouseEvent.ROLL_OUT, yc2);

zpzs_mc.addEventListener(MouseEvent.MOUSE_OVER, jg3);

zpzs_mc.addEventListener(MouseEvent.ROLL_OUT, yc3);

dtxw_mc.addEventListener(MouseEvent.CLICK, jg4);

gd_mc.addEventListener(MouseEvent.CLICK, jg5);

}

private function jg0(MouseEvent):void{//若首页菜单单击,则加载“sy.swf”文件

var url1:URLRequest=new URLRequest("sy.swf");

if(caidan.loader.content)//判断容器是否有加载内容,若有则卸载

{caidan.loader.unload();

  }

caidan.loader.load(url1);

caidan.loader.x=-40;//设置容器对象显示位置

caidan.loader.y=-85;

caidan.container.addChild(caidan.loader);//显示容器内容

}

private function jg4(MouseEvent):void{//单击“动态新闻”菜单响应事件

}

private function jg5(MouseEvent):void{//单击“更多”菜单相应事件

}

private function jg2(event:MouseEvent):void{//单击“关于自己”菜单响应事件

gyzj_mc.gotoAndStop(10);

}

private function yc2(event:MouseEvent):void{

//鼠标滑出“关于自己”菜单响应事件

gyzj_mc.gotoAndStop(1);

}

private function jg3(event:MouseEvent):void{

//鼠标单击“作品展示”菜单响应事件

zpzs_mc.gotoAndStop(10);

}

private function yc3(event:MouseEvent):void{

//鼠标滑出“作品展示”菜单响应事件

zpzs_mc.gotoAndStop(1);

}

}}