用flash制作旋幻时针
DEMONS
--------------------------------------------------------------------------------
∠旅娼凑罩谱鞑街枰来谓樯苄檬闭氲淖龇ǎ?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产生以后是不会产生冲突,并得到了最终结果:旋幻时钟。
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |