用Flash做物理课件之平抛运动
2009-09-25 00:00:00 来源:WEB开发网3.元件及场景准备
将影片背景设为深蓝色#000099,帧频设为20fps,大小700×500。
新建一个影片剪辑元件,在中央画一个小球,使用渐变色填充增强立体感。
第一帧:打上标题,并从共享库引入一个play按钮。
第二帧:引入一个播放按钮、一个倒带按钮,在属性栏中将其名称(Instance Name)分别命名为bplay和back;用文字工具画一个文本框,在属性栏中将它改为“动态文本”,在关联变量一栏中填入t。从库中把小球拖到场景中创建一个对该剪辑的引用,命名为b1,大小为12×12,X坐标为100,Y坐标为6(图4是该帧的左上角)。
第三帧:空白帧。
4.程序编制
建议使用“专家”模式(单击“动作”窗口中的按钮转换)。
在Action Script中,setProperty,on,release这些关键词是区分大小写的,其他的诸如变量名、影片剪辑名称等则不必区分。
单击时间线中的第一帧,在动作窗口中输入第一帧的脚本:(//后为注释)
stop();
xp=100;
yp=6;//初始化位置变量
单击选中play按钮,在动作窗口中输入脚本:
on (release) { gotoAndStop(2); }
第二帧的脚本:
v+=0.0625;//速度的增加
setProperty("b1", _x, xp+4);
setProperty("b1", _y, yp+v);
//改变小球位置
setProperty("back",_alpha,0)//隐藏倒带按钮
yp=b1._y; xp=b1._x;//记录下当前位置
if (yp>=500) {//如果超出边界则停止
stop();
setProperty("back",_alpha,100);//使重播按钮可见 }
if(n%4==2) {//每4帧(0.2秒,现实中的0.1秒)进行一次“频闪照相”
t=n*0.025;//刷新计时器
duplicateMovieClip(b1,"b"+n,n);//复制一个小球的形象,加上n作为序号以区别
setProperty("b"+n,_x,112);
setProperty("b"+n,_y,b1._y);
//记录竖直方向的运动轨迹
duplicateMovieClip(b1,"c"+n,n-1); setProperty("c"+n,_x,b1._x);
setProperty("c"+n,_y,b1._y);
//记录平抛小球的运动轨迹
duplicateMovieClip(b1,"d"+n,n+1);//n+1和n-1区别了不同的层次
setProperty("d"+n,_x,b1._x);
setProperty("d"+n,_y,5); //记录水平方向的运动轨迹
this.lineStyle(1,0xFFFFFF,50);//定义线的粗细、颜色和透明度
this.moveTo (0,b1._y);
this.lineTo(b1._x,b1._y);
this.moveTo(b1._x,0); this.lineTo(b1._x,b1._y);
//画出网格线
}
n++;//计数器计数
“播放”按钮的脚本:
on (release) {gotoAndPlay(3);}
“倒带”按钮的脚本:
on (release) {
back._alpha=0//隐藏倒带按钮
this.clear();//清除网格
for (var i=2,i<=n,i+=4) {
removeMovieClip("b"+i);
removeMovieClip("c"+i);
removeMovieClip("d"+i);//删除纪录的运动轨迹
}
xp=100;
yp=6;
n=0;
t=0;
v=0;
setProperty("b1",_x,108);
setProperty("b1",_y,6); //初始化各变量与小球
setProperty("bplay",_alpha,100);//显示“播放”按钮
}
第三帧的脚本:
gotoAndPlay(2);
setProperty("bplay",_alpha,0);
至于说明文字和装饰部件,请读者自己完成。
小结与拓展
通过这个例子,我们讲述了如何表现两种基本的运动和记录轨迹。这个例子还可以被改造成譬如飞机投弹、验证机械能守恒等实例,读者可以自己研究。
注:本系列中所有课件均使用Flash MX制作,所有按钮等素材均可在共享库中找到。
效果演示: http://shiba.hpe.cn/jiaoyanzu/WULI/soft/flash/%E5%B9%B3%E6%8A%9B.swf
本文示例源代码或素材下载
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接