小华问答网 百科 flash动画制作时间轴(flash时针转动)

flash动画制作时间轴(flash时针转动)

本教程向您介绍用Flash CS4制作时尚走钟gif动画的效果。这个例子主要介绍了如何获取系统时间以及如何加载外部swf皮肤文件。

这个例子的想法

绘制背景效果,新建几个fla文件存储时钟接口(必须发布swf文件),然后绘制时钟效果。

编写加载皮肤的管理类,然后编写时钟类,再加载swf皮肤文件来创建时钟对象。

第1部分定制皮肤

(1)新建一个500350像素的空白文档,然后使用“矩形工具”绘制斑马条纹背景。

提示和提示:

图中显示了几个。本示例中创建的fla文件。这些文件专门用来存储时钟界面的皮肤,发布了swf文件,统一存储在皮肤文件夹中。

(2)下面只介绍皮肤文件的制作方法。新建一个Flash文件保存为01,然后新建一个电影剪辑(名为Bg),然后绘制时钟界面。

(3)新建一个“刻度”层,然后绘制表盘的刻度。

(4)用椭圆工具画一个只有边框的灰色圆,然后删除圆里的线,再删除圆。

(5)粗体显示时针所在的刻度直线,然后添加时间文本(静态文本)。

(6)新建一个“高光”图层,然后画一个半圆作为高光区域,然后设置填充类型为“线性”,设置第一个色阶的颜色为(R:255,G:255,B:255),Alpha为60%,第二个色阶的颜色为(R: 43,G:43,

(7)新建三个电影剪辑,分别命名为时、分、秒,然后分别在对应的电影剪辑中绘制时针、分针、秒针。

第二部分输入控制程序

(1)切换到“库”面板,然后分别为四个电影剪辑添加组件类。

提示和提示:

在前面的步骤中,只创建了四个影片剪辑元件,它们仅存在于“库”面板中。当发布为swf文件时,此时查看swf文件是空的,因为没有编写用于引用和控制的程序,这意味着swf文件只包含四个符号类。接下来,我们将通过加载swf文件来引用和创建它的符号类实例。

(2)新建一个ActionScript文件保存为SkinManager,然后编写管理程序加载皮肤。

AS3代码

复制代码

代码如下:

var skin _ MC:skin manager=skin manager . getinstance();

skin _ MC . loadskin(' skin/01 . swf ');

skin _ MC . addevent listener(' skin complete 'complete handler);

函数completeHandler(e:Event) {

var class _ name:String=' Bg '

var _ Class:Class=skin _ MC . getclass(Class _ name);

var new _ Sprite:Sprite=new _ class();

addChild(new _ sprite);

}

AS3代码

复制代码

代码如下:

/**

*这个类是皮肤加载管理类。

* @作者lbynet

* @版本0.1

*/

包{

导入flash . display . loader;

导入flash . net . URL request;

导入flash . events . event;

导入flash . events . event dispatcher;

公共类SkinManager扩展EventDispatcher {

公共静态const skin complete:String=' skin complete '

私有静态var实例:skin manager=new skin manager();

公共var加载器:Loader;

公共函数SkinManager() {

如果(实例!=null) {

Thrownnewerror(“无法直接创建对象”);

}

Loader=new Loader();

}

公共静态函数getInstance():SkinManager {

返回实例;

}

公共函数loadSkin(路径:字符串):void {

loader.load(新的URL request(path));

loader . contentloaderinfo . addevent listener(事件。COMPLETE,COMPLETE handler);

}

私有函数completeHandler(e:Event) {

//删除侦听器

loader . contentloaderinfo . removeeventlistener(事件。COMPLETE,COMPLETE handler);

dispatchEvent(新事件(SkinManager。skin complete));//发布事件

}

公共函数getClass(Class name:String):Class {

尝试{

将loader . contentloaderinfo . application domain . get definition(Class name)作为类返回;

} catch (e:Error) {

引发新错误(在“e.toString()”中找不到“className”定义);

}

返回null

}

}

}

技术看板:SkinManager课程中的难点

有一定编程基础的用户很容易看出这个类使用了常用的“设计模式”中的singleton模式。通过提供该类的公共静态方法getInstance()作为返回的唯一实例对象,可以全局访问该实例。

(3)新建一个ActionScript文件,另存为Clock。下面写时钟类的程序代码。这个类接收三个Sprite类型的对象参数,它们分别来自前面三个组件类创建的实例(如第21-28行)。在创建实例时收到这三个参数后,它调用init()方法注册ENTER_FRAME事件,在侦听器函数enterFrameHandler()中创建Date的实例,然后获取特定时间点的小时、分钟和秒(如第35-28行)。

AS3代码

复制代码

代码如下:

/**

*这门课是时钟原理课。

* @作者lbynet

* @版本0.1

*/

包{

导入日期;

导入flash . display . sprite;

导入flash . events . event;

公共类时钟扩展Sprite {

私人var小时:数字;

私人var分钟:数字;

私有var第二:数字;

私var _hours:雪碧;

私var _minutes:雪碧;

私var _seconds:雪碧;

公共函数时钟(h:Sprite,m:Sprite,s:Sprite) {

//将传入的三个对象参数赋给clock类的三个属性。

这个。_ hours=h;

这个。_分钟=m;

这个。_ seconds=s;

init();

}

私有函数init() {

this.addEventListener(事件。ENTER_FRAME,ENTER FRAME handler);

}

私有函数enter frame handler(Event:Event){

var now:Date=new Date();//构造一个Date实例,Date类的实例代表一个具体的时间点。

hour=now . get hours();//获取系统当前的时、分、秒。

minute=now . get minutes();

second=now . get seconds();

//下面控制时针、分针、秒针的旋转规律和旋转角度,后面会详细说明。

_ hours . rotation=hour * 30 math . floor(分钟* 6/12);

_ minutes . rotation=minute * 6 math . floor(秒* 6/60);

_seconds.rotation=秒* 6;

}

}

}

技术看板:小时、分钟和秒的算法

小时:时钟旋转360度,总共需要12个小时,每个小时30度。为了更接近生活中时钟的运动效果,将时针(30度)完成一个小时的角度和分针(360度)完成一个小时的角度相加,所以两者的比例关系为1/100。

分钟:时钟旋转360度,总共需要60分钟,每一分钟都是6度,加上分针走一分钟的6度角和秒针走一分钟的360度角,那么它们的比例关系就是1/60。

秒:时钟的一转是360 60秒,每一秒是6。

(4)返回flash文档,然后新建一个AS层,编写程序。通过SkinManager类加载皮肤文件并注册监听器(如第1-3行);第5~8行代码是创建一个用于存储时钟组件的容器,并将stage设置为中心对齐;然后创建两个数组sprite_name和class_name,分别存储要加载到swf文件中的组件类的实例名和组件类名(比如10行和11行代码);加载swf时钟皮肤文件后,调用监听器函数completeHandler(),在监听器函数中执行一个for()循环语句,然后创建swf文件中加载的四个(_length值等于4)组件类实例,添加实例名后添加到container_mc容器中(如第16-21行)。

AS3代码

复制代码

代码如下:

var skin _ MC:skin manager=skin manager . getinstance();

skin _ MC . loadskin(' skin/01 . swf ');

skin _ MC . addevent listener(' skin complete 'complete handler);

var container _ MC:Sprite=new Sprite();

addChild(container _ MC);

集装箱_ MC . x=stage.stageWidth/2;

集装箱_ MC . y=stage.stageHeight/2;

var sprite_name:Array=['bg_mc ''小时_mc ''分钟_mc ''秒_ MC '];

var class_name:Array=['Bg ''小时''分钟''秒'];

var _ length:uint=class _ name . length;

函数completeHandler(e:Event) {

var _ Class:Class;

var new_sprite:雪碧;

for(var I=0;i _ lengthi ) {

_ class=skin _ MC . getclass(class _ name[I]);

new _ sprite=new _ class();

new _ sprite . name=sprite _ name[I];

container _ MC . addchild(new _ sprite);

}

create();

}

//创建一个时钟类,传入三个参数,都是Sprite类型。

//它们是舞台上存在的三个电影剪辑组件,实例名分别为

//时针(hours_mc)、分针(minutes_mc)和秒针(seconds_mc)

函数create() {

var a:Clock=new Clock(getItem(' hours _ MC '),getItem('minutes_mc '),getItem(' seconds _ MC ');

addChild(a);

}

函数getItem(名称:字符串):* {

返回container _ MC . getchildbyname(Name);

}

在加载的swf文件中创建组件类实例后,调用create()方法创建时钟类实例(如第28行代码);getItem()方法主要是通过container_mc.getChildByName()方法获取container_mc中指定名称的对象。

(5)除了前面的方法,还可以通过随机指定路径来加载swf皮肤文件。

AS3代码

复制代码

代码如下:

var skin _ MC:skin manager=skin manager . getinstance();

skin _ MC . loadskin(' skin/0 ' math . ceil(math . random()* 4)'swf’);

skin _ MC . addevent listener(' skin complete 'complete handler);

(6)按Ctrl+Enter发布本例中的所有程序。

教程最后,以上是用Flash CS4制作时尚走钟gif动画的效果,希望对大家有所帮助!

本文来自网络,不代表本站立场,转载请注明出处:https:

flash动画制作时间轴(flash时针转动)

小华问答网后续将为您提供丰富、全面的关于flash动画制作时间轴(flash时针转动)内容,让您第一时间了解到关于flash动画制作时间轴(flash时针转动)的热门信息。小编将持续从百度新闻、搜狗百科、微博热搜、知乎热门问答以及部分合作站点渠道收集和补充完善信息。