如何制作电流效果?
解决思路:
通过一个矩形的限制x轴,y轴运动,不断的复制,形成一个电流的模拟效果。
具体步骤
1、??运行Flash?MX?2004,设置文档属性为黑色背景,尺寸200*200像素。
2、新建一个影片剪辑命名为“方框”。利用举行工具,绘制一个1.6*1像素的无边框矩形,进行渐变填充。如图3.3.97所示。
图3.3.97??绘制方框元件
3、导入一个电流通过的模拟声音,并把此声音文件放置在影片剪辑“声音”中。
1、??返回到场景1,把影片剪辑“方框”拖放到场景中。在下面的属性面板中,给影片剪辑“方框”命名为“d”。并延长至第3帧。如图3.3.98所示。
图3.3.98?????影片剪辑得分身名
2、??新建一个图层,命名为as。在第1帧添加as:
setProperty("d",?_visible,?"0");//设置影片剪辑“d”在第1帧不可见
第2帧添加as:
y=100;???//初始化变量
for(i=1;i<=250;i++)?{??
???????y?=y+?random(3)-1;???
???????duplicateMovieClip("d",?"d"?add?i,?i);
???????setProperty("d"?add?i,?_x,?i);
???????setProperty("d"?add?i,?_y,?y);
}
第3帧添加as:
gotoAndPlay(2);??//做一个小循环
3、??新建一个图层命名为“声音”,把刚才制作的影片剪辑“声音”拖放到场景中,并延长至第3帧。
4、??测试,保存。请参看源文件“电流”。
问题20:缩放式按钮如何制作?
具体步骤
我们需要预备两个影片剪辑,分别命名为“a”和“b”。影片剪辑a中一共有两个要害帧,第1要害帧中是一个黄颜色的矩形,也就是按钮的起始颜色。第2要害帧中是同样大小的蓝色矩形。分别在两个要害中上面添加as:stop();。如图3.3.99所示。
图3.3.99??????影片剪辑a
影片剪辑b中一共有三个图层,每个图层各有6个要害帧。图层2中的6个空白要害帧得as都是stop();,图层1和图层3种的6个要害帧中分别是6个按钮。如图3.3.100所示。
图3.3.100????影片剪辑b
下面我们回到场景1,在第1帧中添加as:
先将按钮导入???????????????????????????????
for?(var?i?=?0;?i<=5;?i++)?{
?a?=?attachMovie("a",?"a"+i,?i);
?b?=?_root.a.attachMovie("b",?"b"+i,?(10+i));
?b.gotoAndStop(i+1);
?a.n?=?i;
?a._x?=?25+100*i;
?b._x?=?50;
?b._y?=?-1;
?a._y?=?100;
?a.old_x?=?a._x;
?a.onRollOver?=?pres;
?a.onRollOut?=?rele;
}
//定义_root.init值,当为1时表示恢复成最初的状态,0时表示放大移动状态
_root.init?=?1;
下面是鼠标按下时,产生几个重要信息:_root.pressnumber?按下按钮的名字数字
????????????????????????????????????????????????????_root.init?=?0;告诉系统现在到了缩放的时候了
function?pres()?{
?this.gotoAndStop(2);//第二贞是鼠标经过时按钮的画面
?for?(var?i?=?0;?i<=5;?i++)?{
??_root["a"+i]._x?=?_root["a"+i].old_x;
??_root["a"+i]._width?=?100;
?}
?_root.pressnumber?=?this.n;
?_root.init?=?0;
}
//鼠标滑出时恢复原始
function?rele()?{
?this.gotoAndStop(1);
?_root.init?=?1;
}
//用主场景的onEnterFrame统一计算各个按钮尺寸
onEnterFrame?=?function?()?{
?main?=?_root["a"+pressnumber];//简单化按下的按钮对象
//下面的代码是回复时的情况
?if?(!init)?{
??main.ax?=?(200-main._width)/2;
??main.vx?+=?main.ax;
??main._width?+=?main.vx;
//分几种情况请仔细体会:
??if?(pressnumber?==?0)?{
//假如最左边的按钮按下了,那么它右边的按钮pressnumber+1开始执行回复,他们回复的速度相同,等于原放大按钮回复速度的五分之一
???for?(var?i?=?pressnumber+1;?i<=5;?i++)?{
????fol?=?_root["a"+i];
????befor?=?_root["a"+(i-1)];//用前面的按钮位置来定自己的位置,最终焦点就是最左边的按钮了
????fol._width?-=?(main.vx/5);
????fol._x?=?befor._x+befor._width;
???}
??}?else?{//假如按下的按钮不是最左边的,先分大的两种情况,一是按下的按钮,一是其他没按的按钮,其他没按的按钮又分最左边的,与普通的,最左边的_x是不变的,其他的都改变。
???for?(var?i?=?0;?i<=5;?i++)?{
????fol?=?_root["a"+i];
????if?(i?!=?pressnumber)?{
?????fol._width?-=?(main.vx/5);
?????if?(i?!=?0)?{//这里面是要变位置的MC
??????befor?=?_root["a"+(i-1)];
??????fol._x?=?befor._x+befor._width;
?????}
????}?else?{
?????befor?=?_root["a"+(pressnumber-1)];
?????main._x?=?befor._x+befor._width;
????}
???}
??}
??main.vx?*=?.6;//弹性系数,可以试试改改
?}?else?{
//下面是按下按钮时的情况
??main.ax?=?(100-main._width)/2;
??main.vx?+=?main.ax;
??main._width?+=?main.vx;
??if?(pressnumber?==?0)?{
???for?(var?i?=?pressnumber+1;?i<=5;?i++)?{
????fol?=?_root["a"+i];
????befor?=?_root["a"+(i-1)];
????fol._width?-=?(main.vx/5);
????fol._x?=?befor._x+befor._width;
???}
??}?else?{
???for?(var?i?=?0;?i<=5;?i++)?{
????fol?=?_root["a"+i];
????if?(i?!=?pressnumber)?{
?????fol._width?-=?(main.vx/5);
?????if?(i?!=?0)?{
??????befor?=?_root["a"+(i-1)];
??????fol._x?=?befor._x+befor._width;
?????}
????}?else?{
?????befor?=?_root["a"+(pressnumber-1)];
?????main._x?=?befor._x+befor._width;
????}
???}
??}
??main.vx?*=?.6;
?}
};
保存,测试一下效果吧!
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |