欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flash as3.0教程:弹性小球

程序员文章站 2022-06-28 09:50:47
搞AS游戏开发的朋友也许都听过Keith Peters大师,为我们缔造了那么多的经典算法,偶虽然不是游戏方向,但是还是特别喜欢!近些天拜读了《Making Things Move》的一部分,大师的经典杰... 08-10-06...
搞as游戏开发的朋友也许都听过keith peters大师,为我们缔造了那么多的经典算法,偶虽然不是游戏方向,但是还是特别喜欢!近些天拜读了《making things move》的一部分,大师的经典杰作。数学与物理的伟大艺术体现,一直逃不脱我的眼球!

来玩儿一个,做一个健身的小弹力球,在地球上有重力哦^^先看看:




下面是实现:
package{
importflash.display.sprite;
importflash.events.event;
importflash.display.stagescalemode;
importflash.display.stage;

publicclasstestballextendssprite{
privatevarball:ball;
privatevarspring:number=0.1;
privatevarvx:number=0;
privatevarvy:number=0;
//这个是摩擦力啦!可以调节一下值看看变化
privatevarfriction:number=0.95;
//这个是重力,和我们现实生活中差不多
privatevargravity:number=5;
publicfunctiontestball(){
this.stage.scalemode=stagescalemode.no_scale;
//实例化一个小球(在库里的哦)
ball=newball();
this.addchild(ball);
this.addeventlistener(event.enter_frame,onenterframe);
}
privatefunctiononenterframe(event:event):void{
//下面是核心算法,好好研究哦
vardx:number=mousex-ball.x;
vardy:number=mousey-ball.y;
varax:number=dx*spring;
varay:number=dy*spring;
vx =ax;
vy =ay;
vy =gravity;
vx*=friction;
vy*=friction;
ball.x =vx;
ball.y =vy;
//绘制线条
this.graphics.clear();
this.graphics.linestyle(1);
this.graphics.moveto(ball.x,ball.y);
this.graphics.lineto(mousex,mousey);
}
}
}
-*-原文地址:http://fck.name/node/138,转载请注明出处,谢谢!-*-