| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
解析物体的振荡运
运动规律的一些基
浅谈AS与物理运动
应用Key对象控制元
弹性矩形条的类原
运动残影效果教程
键盘控制物体运动
初级物理模型的构
惯性运动 弹簧精确
点线形弹性菜单制

弹性运动,带磨擦力运动,平抛运动           

弹性运动,带磨擦力运动,平抛运动

作者:佚名 来源:闪吧 作者: minzojian 更新:2007-1-13 20:46:45 错误报告 我要投稿

点击浏览该文件
点击浏览该文件
这两似乎都在讨论这个吧,看看我花了半天做的吧,下面是初期的AS说明文档.上面的源程序是最终版,里面的AS和说明档里的大体差不多.
BALLS.FLA---KAN AS说明档
h=Stage.height//获得场景高与宽的值
w=Stage.width
function fall(vx,vy,xx,yy,a,tx,ty)//定义自定义的球运动的位置函数.返回一个变量集.
{//后面的参数分别代表横向初速度,纵向初速度,横坐标初值,纵坐标初值,纵向加速度(向下为正),横向时间变量,纵向时间变量
ob=new Object()
ob.x=vx*tx+xx//返回运动的横坐标
ob.y=vy*ty+0.5*a*ty*ty+yy//返回运动的纵坐标
ob.yv=vy+a*ty//返回纵向末速度(也是下一个动作的初速度)
return ob
}
dx=200;dy=300;mvx=2;mvy=10;ttx=0;tty=0//定义某些变量的初值.(如果想一开始就动起来的话,就要这么做)
xchecked1=false//out cofirm,确定球移动到外部与否的变量
xchecked2=false//in confirm,确定球移动到内部与否的变量
ychecked1=false//DOWN CONFIRM,确定球移动到床中与否的变量
ychecked2=false//UP CONFIRM,确定球移动到空中与否的变量
rel=true//球释放与否的变量
ball.onPress=function()//球按下时要定义的一些变量值
{rel=false;startDrag(this,true);ttx=0;tty=0;}
ball.onRelease=function()//球释放时要定义的一些变量值
{rel=true;stopDrag();dx=_root._xmouse;dy=_root._ymouse;mvx=ax-bx;mvy=ay-by;ba.yv=mvy
xchecked1=false//确定变量全为初态
xchecked2=false
ychecked1=false
ychecked2=false}
_root.createEmptyMovieClip("pen",1)//定义画床时要用的画笔
this.onEnterFrame=function()
{
if(rel){//球被释放时要做的事
if(!xchecked1){if((ball._x>=w-ball._width/2)||(ball._x<=ball._width/2)){mvx=-mvx/3;ttx=0;dx=ball._x;xchecked1=true;xchecked2=false;if(Math.abs(mvx)<1){mvx=0}}}//如果球在外部未被确认,则当球在外部的时候,横向速度变成相反并绝对值减小,造成横向的速度损耗,横向时间变量归零,新的初横坐标变为球与边墙接触时的横坐标,从而开始一次新的横向匀速运动,再判定横向速度的绝对值,如果小于1的话,停止横向移动.
if(!xchecked2){if((ball._x<w-ball._width/2)&&(ball._x>ball._width/2)){ttx=0;dx=ball._x;xchecked2=true;xchecked1=false;}}//如果球在内部未被确认,则当球在内部的时候,横向时间变量归零,新的初横坐标变为球与边墙接触时的横坐标,(感觉上似乎这两点没必要HOHO)
if(!ychecked1){if(ball._y>=h/2){tty=0;dy=ball._y;ma=-20*Math.abs(ba.yv*(ball._y-h/2+2))/1000;ychecked1=true;ychecked2=false;mvy=(ba.yv)/3;if(Math.abs(mvy)<1){mvy=0;if(Math.abs(ma)<1){ma=0}}}}//如果球在床上未被确认,则当球在床上的时候,纵向速度变成相反并绝对值减小,造成纵向的速度损耗,纵向时间变量归零,新的初纵坐标变为球与边床接触时的纵坐标,根据纵向初速度大小和球的深陷程度来改变纵向加速度值,从而开始一次新的纵向匀变速运动,再判定纵向速度的绝对值,如果小于1的话,纵向初速度为0,再接着判定加速度,如果也小于1的话,就将加速度也归零,从而纵向停止运动.
if(!ychecked2){if(ball._y<h/2){tty=0;dy=ball._y;ma=10;ychecked2=true;ychecked1=false;mvy=ba.yv;}}//如果在空中,改变纵向加速度为重力加速度大小...
ttx+=0.2;tty+=0.2//每过一桢横纵向的时间变量都经0.2的递增
ba=fall(mvx,mvy,dx,dy,ma,ttx,tty)//将执行运动函数返回的OBJECT赋给BA
ball._x=ba.x//定义球的横纵坐标
ball._y=ba.y
}
else{bx=ax;ax=_root._xmouse;by=ay;ay=_root._ymouse;}//如果没有被释放的话...
//下面是画床的函数...
with(pen){
clear()
lineStyle(2,0x000000,10)
beginFill(0xffc9c9,50)
moveTo(0,h)
lineTo(0,h/2)
if(_root.ball._y>h/2){//如果球落入床中,画弧线
curveTo(_root.ball._x,h/2,_root.ball._x,_root.ball._y)
curveTo(_root.ball._x,h/2,w,h/2)}
else{lineTo(w,h/2)}//如果没有,画直线
lineTo(w,h)
lineTo(0,h)
}
}
文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。