关于多球碰撞
日期:2007年7月21日 作者: 查看:[大字体 中字体 小字体]-
点这里下载演示效果文件
点这里下载源文件
前天刚来的时候发了个两球想碰的,后来将其改得更为普遍可用,就可以实现多球的碰撞了。
*诗意制造多球的碰撞问题
_global.ball=function(XPosition,yposition,vx,vy,holder_mc){//创建BALL类
this.vx=vx;//速度
this.vy=vy;//
this.holder=holder_mc;//所在的MOVIECLIP
this.holder._x=xposition;//定义MOVIECLIP的位置
this.holder._y=yposition;
this.fixV=Math.sqrt(vx*vx+vy*vy)//合成的速度
};
//////////////////////////////////////
ball.prototype.move=function(){//球移动的方法
this.pengbi();//检验是否碰壁
this.holder._x+=this.vx;
this.holder._y+=this.vy;
};
ball.prototype.pengbi=function(){//碰壁的判断
if(this.holder._x>340 or this.holder._x<52){this.vx*=-1};
if(this.holder._y>225 or this.holder._y<75) {this.vy*=-1};
};
ball.prototype.ballcrash=function(v){//球碰球的方法
var disX=this.holder._x-v.holder._x;
var disY=this.holder._y-v.holder._y;
var distance=Math.distance(disX,disY);
/////////求距离
var angle=Math.round (Math.atan2D(disY,disX));//求两球与X轴的夹角
var Vangle1=Math.atan2D(this.vy,this.vx);//球一速度的角度
var Vangle2=Math.atan2D(v.vy,v.vx);//球二速度的角度
var angleBetween2 =Math.chaToFlashAngle(Vangle2-angle);//求球二的速度方向和两球连线方向的交角
var angleBetween1 =Math.chaToFlashAngle(Vangle1-angle);//求球二的速度方向和两球连线方向的交角
/////////////////////////////////////
var Vx1=this.fixV*Math.cosD(angleBetween1);//将速度以连线方向和垂直连线方向做速度的分解
var Vy1=this.fixV*Math.sinD(angleBetween1);
var Vx2=v.fixV*Math.cosD(angleBetween2);//将速度以连线方向和垂直连线方向做速度的分解
var Vy2=v.fixV*Math.sinD(angleBetween2);
////////////////////////////////////
if((distance*distance)<1600){
var temp1=Vx1;
Vx1=Vx2;
Vx2=temp1;
/////////交换碰撞方向上的速度
this.vx=Vx1*Math.cosD(angle)+Vy1*Math.cosD(angle+90);
this.vy=Vx1*Math.sinD(angle)+Vy1*Math.cosD(angle);
v.vx=Vx2*Math.cosD(angle)+Vy2*Math.cosD(angle+90);
v.vy=Vx2*Math.sinD(angle)+Vy2*Math.cosD(angle);
/////////从新合成速度
this.fixV=Math.sqrt(this.vx*this.vx+this.vy*this.vy);
v.fixV=Math.sqrt(v.vx*v.vx+v.vy*v.vy);
/////////更新速度合成
};
};
Math.atan2D=function(disY,disX){/////给MATH加一个能直接算角度的方法
var angle=Math.atan2(-disY,disX)*(180/Math.PI);
angle*=-1;
return Math.chaToFlashAngle(angle);
};
Math.chaToFlashAngle=function(angle){/////给MATH加一个将笛卡尔坐标转成FLASH坐标的方法
angle%=360;
if(angle<0){
return angle+360;}
else{ return angle ;}
};
Math.distance=function(disX,disY){////////给MATH加一个能直接算距离的方法
return Math.sqrt(disX*disX+disY*disY);
};
Math.sinD=function(angle){////////////////改造SIN方法
return Math.sin(angle*(Math.PI/180));
};
Math.cosD=function(angle){////////////////改造COS方法
return Math.cos(angle*(Math.PI/180));
};
//////////////////////////////////////
/////////////////////////////////////
ball1=new ball(100,200,2,2,mc1);//生成实例
ball2=new ball(100,100,3.5,3.5,mc2);//生成实例
ball3=new ball(300,200,3,3,mc3);//生成实例
ball4=new ball(300,150,1,1,mc4);//生成实例
////////////////////////////////////
///////////球的运动//////////////////
_root.mc1.onEnterFrame=function(){
ball1.ballcrash(ball2);
ball1.ballcrash(ball3);
ball1.move();
};
_root.mc2.onEnterFrame=function(){
ball2.ballcrash(ball3);
ball2.ballcrash(ball4);
ball2.move();
};
_root.mc3.onEnterFrame=function(){
ball3.ballcrash(ball4);
ball3.move();
};
_root.mc4.onEnterFrame=function(){
ball4.ballcrash(ball1);
ball4.move();
- [1] [2] 下一页
-
- 关于多球碰撞 相关文章:
- ·关于多球碰撞
- 关于多球碰撞 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:关于如何读取外部TXT文件
下一篇:关于scrollPane滚屏问题
精品推荐
热点TOP10
- ·Flash百叶窗制作教程
- ·Flash制作非常逼真的下雪视觉动画效果
- ·Flash:闪动的星星
- ·精彩推荐:全Flash网站制作实例
- ·FLASH 8实例教程:瀑布动画制作方法
- ·用flash制作简单拼图游戏
- ·Flash视觉效果之漫天飞雪
- ·最简单的FLASH动画LOADING制作
- ·Flash动画制作技巧:一些动画素材
- ·Flash制作超酷旋转互动相册
- ·Flash声音控制详解
- ·Flash打造碧海蓝天海鸥飞翔动画
- ·Flash AS制作下雪动画效果
- ·Flash制作滚动广告图片效果
- ·Flash实例教学:三维烟花动画制作
- ·入门级:教你用flash画画
- ·银行利率表
- ·Flash制作过渡卷动效果精美图库特效
- ·Flash制作熊熊燃烧的火焰
- ·中秋寄相思 自制Flash贺卡
特别推荐
- ·Flash简单制作实用的图片切换动画特效
- ·简易拼图游戏制作
- ·Flash教程:纯AS制作简单的MP3播放器
- ·纯AS的Loading效果四例
- ·Flash角色透视行走动作分解
- ·入门级:教你用flash画画
- ·Flash制作过渡卷动效果精美图库特效
- ·Flash制作Mac系统菜单的效果
- ·视觉欺骗
- ·Flash制作非常逼真的下雪视觉动画效果
- ·超详细图文解析 用Flash制作魔法表情
- ·Flash Action应用--鼠控3D旋转
- ·Flash打造碧海蓝天海鸥飞翔动画
- ·FLASH 8实例教程:瀑布动画制作方法
- ·Flash视觉效果之漫天飞雪
- ·Coldfusion MX技巧精华收集(1)
- ·Actionscript列表
- ·用Flash简单制作印章动画视觉效果
- ·flash8打造瀑布动画效果教程
- ·Flash里的A*Pathfinding
