学院首页>图形图像>FLASH>用flash制作旋幻时针

用flash制作旋幻时针

作者:DEMONS 来源:天极网 添加时间:2006-5-21 11:54:06
   下面将按照制作步骤依次介绍旋幻时针的做法:  1 基本设置。  (1)创建一个新的FLASH5文件。  (2)按组合键“CTRL+M”修改影片属性(“MODIFY->MOVIE”),DEMENSIONS的“WITDH”修改为500,背景用白色。  (3)选择“MODIFY菜单下的SCENE选项”,修改场景名称为“ROTATING CLOCK POINT”。  2 制作基本MOVIE CLIP。  (1)按组合键“CTRL+F8”创建(“INSERT” 下的“NEW SYMBOL”)一个新的“MOVIE CLIP”,名称为“ROT-SEED”,  (2)用“TOOLS”工具箱里的“RECTANGLE TOOL”长方形工具,在场景中画一个灰色的长方形,然后切换到“ARROW”箭头工具选定长方形的上半部分,接着用“PAINT BUCKET TOOL”上色工具选定黑色填充已经选择的长方形,  (3)选择“ARROW”工具后,把上下2个长方形分别向左和右拉伸,最后拉成一个时针形状即可。(如图1)



(图1)

(4)做好了“ROT-SEED”以后,按组合键“CTRL+F8”创建一个名为“SEED”的MOVIE CLIP,按“CTRL+L”打开用户库,把刚才做好的“ROT-SEED”拖到当前场景当中。  (5)按组合键“CTRL+I”打开“INSTANCE”导出实例面板(“WINDOW”->“PANAELS”->“INSTANCE”,输入INSTANCE名称为“CLOCK”,接着,按组合键“CTRL+ALT+A”输入MOVIE CLIP对象的ACTION:

onClipEvent (load) {

i = 1;

s = 0;

myalpha = 100;

}

onClipEvent (enterFrame) {

i++;

if (s<=12000 and s>=0) {

s = i*i;

this._rotation = s;

this._xscale = i;

this._alpha = myalpha--;

}

}

  这里,当这个帧被读取的时候,设定了3个初始变量:I,S和MYALPHA,分别控制循环次数,旋转度数和ALPHA透明度。  在每次进入这个帧的时候,就依次递增I(可间接代替FOR循环),用IF条件语句判断S的度数,如果S没有超出规定的范围(12000),那么就让这个MOVIE对象旋转,其语句就是设定_ROTATION属性,而它的ALPHA属性会每次的递减,直到“消失”为止。  最后,“CTRL+L”打开用户库,右击“SEED”,选择“LINKAGE”,在“SYMBOL LINKAGE PROPERTIES”连接属性当中选择“EXPORT THIS SYMBOL”方式,在“IDENTIFIER:”(ID名称)中输入SEED。(如图2)


(图2)

  (6)新建一个“MOVIE CLIP”,并且输入名称为:“BG”,在其中用“RECTANGLE TOOL”画一个白色的长方形,这样,所有的基本元件就做好了。  3,主场景设计。  (1)先把“BG”从库中拉到主场景当中,然后按“CTRL+I”设定INSTANCE NAME:BG;  (2)在主场景的第1帧按F6插入关键帧,并双击这个帧输入ACTION:fscommand ("fullscreen", "true");stop ();function clear (seednum) {if (seednum==0) {return;}for (i=seednum; i>0; i--) {removeMovieClip (_root.bg["seed"add i]);}}  先用FS COMMAND设定全屏幕播放的外部命令,并停止当前播放的进程(如果影片只有1帧,也可以不用STOP,但最后一帧用STOP也是一个好习惯);  主场景ACTION内写了一个CLEAR的函数,准备随时被需要的地方调用,功能在下面会结合调用的地方一起说明。(3)选定“BG”,然后按组合键“CTRL+ALT+A”打开ACTION面板,输入如下ACTION:

onClipEvent (mouseMove) {

_root.clear(this.seednum);

this.seednum = random(100)+20;

for (i=1; i<=this.seednum; i++) {

this.attachMovie("seed", "seed"add i, i);

this["seed"add i]._x=random(500)-random(500);

this["seed"add i]._y=random(400)-random(400);

xyseed = random(100);

this["seed"add i]._xscale=xyseed;

this["seed"add i]._yscale=xyseed;

this["seed"add i]._rotation=random(360);

}

}

  既是当鼠标移动的时候,产生一个20~120的随机数提供给种子变量SEEDNUM,用一个FOR循环来绑定SEEDNUM个“SEED”,这需要语句ATTACHMOVIE来配合,每新产生的MOVIE 对象都被赋予了名称(SEED1、SEED2……SEED SEEDNUM)和层次(1,2……SEEDNUM);  设定了名称和层次还不能很好的控制SEED,这里,使用了常用的_X、_Y(坐标)、_XSCALE、_YSCALE(大小)和_ROTATION(旋转),请读者自行测试其功能以加强理解。  以上是一次循环下来的结果,但是,当用户再次挪动鼠标的时候也会产生这段ACTION,那就会产生不希望的结果,所以用到了函数CLEAR(),当用户鼠标移动,首先清楚上次产生的MOVIE,而SEEDNUM就是没有改变的上次MOVIE对象的总数,调用CLEAR以后,用循环的方法,结合REMOVIEMOVIECLIP删除“BG”下的所有MOVIE对象,这样,新的MOVIE产生以后是不会产生冲突,并得到了最终结果:旋幻时钟。
站内搜索