当前位置:软件学习 > Flash >>

用flash制作旋幻时针

∠旅娼凑罩谱鞑街枰来谓樯苄檬闭氲淖龇ǎ?br>
  1 基本设置。

  (1)创建一个新的FLASH5文件。

  (2)按组合键“CTRL+M”修改影片属性(“MODIFY-$#@62;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”-$#@62;“PANAELS”-$#@62;“INSTANCE”,输入INSTANCE名称为“CLOCK”,接着,按组合键“CTRL+ALT+A”输入MOVIE CLIP对象的ACTION:

onClipEvent (load) {

i = 1;

s = 0;

myalpha = 100;

}

onClipEvent (enterFrame) {

i++;

if (s$#@60;=12000 and s$#@62;=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$#@62;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$#@60;=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产生以后是不会产生冲突,并得到了最终结果:旋幻时钟。
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,