抛物线动画解析

      Flash学习 2006-1-3 16:49
===================================
我的一个朋友要。但他对As代码的理解有限,所以加上注解。望能对他有帮助!
===================================
场景 1
图层 2
帧 1
帧 1 的动作
var v0=1;//每1个单位当做20;
var ang=45;//初角度为45;
var g=0.4;//每0.1个单位当作9.8;
var dT=1;//时间的变化0.4做为变化单位
mc._x=bg._x;//初始小球的位置
mc._y=bg._y;
复位.onPress=function(){
mc._x=bg._x;//初始小球的位置
mc._y=bg._y;
}
mc.onPress=function(){
this.startDrag(true);
}
mc.onRelease=function(){
this.stopDrag();
}
function move(target:MovieClip,v0:Number,ang:Number){//定义一个运动的函数
target.oldx=target._x;
target.oldy=target._y;
var t=dT;
//var g=0.4;
ang=ang*Math.PI/180;
trace("ang="+ang);
target.onEnterFrame=function(){
t+=dT;//时间每次增加
var vx=v0*Math.cos(ang);
var vx2=vx*t;
var vy=v0*Math.sin(ang)-(g*t)/2;
var vy2=vy*t;
var v=Math.round(100*Math.sqrt(vx*vx+vy*vy))/100;//显示数据取小数点后两位
_root.v_txt.text=v*20;
trace("v="+Math.round(1000*Math.sqrt(vx*vx+vy*vy))/1000);
trace("vx="+vx+"--vy="+vy);
target._x+=vx2;
target._y-=vy2;
if(target._x>Stage.width or target._y>Stage.height){
delete target.onEnterFrame;
target._x=target.oldx;//出界了重新设定坐标
target._y=target.oldy;
t=dT;//出界了重新设定时间
}
}
}
发射.onPress=function(){
ang=-bg.angree;
if(!ang)ang=0;
_root.v0_txt.text=v0*20;
move(mc,v0,ang);
}
图层 5
帧 1
line
line 2
抛物运动, (黑体, 18 pts)
元件 3
元件 3 的动作
on (press) {
getURL("http://yuheduo.5dblog.com","_blank");
}
动态文本
帧 1
(空), <r_txt>
角度:, (黑体, 16 pts)
(空), <v_txt>
当前速度:, (黑体, 16 pts)
初速度:, (黑体, 16 pts)
(空), <v0_txt>
小球
帧 1
元件 1, <mc>
mc_btn, <复位>
mc_btn, <发射>
坐标
帧 1
bg, <bg>
图层 6
帧 1
bg000
元件定义
line
图层 4
帧 1
帧 1 的动作
bar.onPress=function(){
this.startDrag(false,0,-4,50,-4);
}
bar.onRelease=bar.onRollOut=function(){
this.stopDrag();
var setVar=Math.round(this._x)*2;
this._parent.set_txt.text=setVar;
_root.v0=setVar/20;
trace(this._x+"--_root.v0="+_root.v0);
}
图层 5
帧 1
(空), <set_txt>
图层 2
帧 1
bar, <bar>
图层 3
帧 1
速度调节:, (黑体, 12 pts)
图层 1
帧 1
line 2
图层 4
帧 1
帧 1 的动作
bar.onPress=function(){
this.startDrag(false,0,-4,50,-4);
}
bar.onRelease=bar.onRollOut=function(){
this.stopDrag();
var setVar=Math.round(10000*this._x)/20000;
this._parent.set_txt.text=setVar;
_root.g=setVar/(25/0.4);
trace(this._x+"--_root.g="+_root.g);
}
图层 5
帧 1
(空), <set_txt>
图层 2
帧 1
bar, <bar>
图层 3
帧 1
重力调节:, (黑体, 12 pts)
图层 1
帧 1
元件 3
图层 2
弹起
图层 1
弹起
小刀习作, (黑体, 14 pts)
点击
小刀习作, (黑体, 14 pts)
元件 1
图层 1
帧 1
mc_btn
图层 3
帧 1
帧 1 的动作
txt.text=this._name;
图层 2
帧 1
(空), <txt>
图层 1
帧 1
元件 2, <btn>
bg
图层 4
帧 1
帧 1 的动作//这里是发射角度的变化与取得
arrow._x=arrow._y=0;
var angree;
this.arrow.btn.onPress=function(){
//this.startDrag(true);
flag=true;
}
/*this.arrow.arrow_mc.onMouseMove=function(){
var angree=Math.atan2(this._ymouse,this._xmouse);
angree*=180/Math.PI;
trace("angree="+angree);
arrow._rotation=angree;
}//this.arrow.btn.onDragOut*/
this.arrow.btn.onRelease=this.arrow.btn.onReleaseOutside=function(){
//this.stopDrag();
flag=false;
}
this.onEnterFrame=function(){
if(flag){
angree=Math.atan2(this._ymouse,this._xmouse);//反正切
angree*=180/Math.PI;//弧度变成度数
trace("angree="+angree);
this.arrow._rotation=angree;
_root.r_txt.text=-Math.round(10*angree)/10;//传给小球
}
}
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}