Box2D入门基础之一
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-07
HelloBox2D.swf: 修改了Box2D提供的那个HelloWorld程序。具体如下: package { importBox2D.Collision.*; importBox2D.Collision.Shapes.*; importBox2D.Common.Math.*; importBox2D.Common.*; importBox2D.Dynamics.*; importFlash.events.Event; importflash.display.Sprite; importflash.display.StageScaleMode; importflash.events.Event; /** *... *@authorywxgood *Blog:http://space.flash8.net/space/?628770 */ [SWF(backgroundColor="0x333333",width="550",height="400",frameRate="30")] publicclassHelloBox2DextendsSprite { //定义一个边界盒,应尽量定义大一点 privatevarworldAABB:b2AABB; //定义一个虚拟物理世界,所有物理模拟均运行于次虚拟世界 privatevarworld:b2World; //定义比例,Box2D中是一米为长度单位,1m=30像素 privatevarrate:Number=30; //步长与积分次数 privatevarm_timeStep:Number=1/rate; privatevarm_iteration:int=10; //出现物体的数目 privatevarnumWidget:int=10; //承载刚体 privatevarbody:b2Body; //刚体定义 privatevarbodyDef:b2BodyDef; //方形物体定义 privatevarboxShape:b2PolygonDef; //圆形物体定义 privatevarcircleShape:b2CircleDef; publicfunctionHelloBox2D() { init(); } privatefunctioninit():void { stage.scaleMode=StageScaleMode.NO_SCALE; addEventListener(Event.ENTER_FRAME,onFrame); //创建边界盒 worldAABB=newb2AABB(); worldAABB.lowerBound.Set(-100.0,-100.0); worldAABB.upperBound.Set(100.0,100.0); //重力加速度(300m/s^2) vargravity:b2Vec2=newb2Vec2(0.0,10.0); //当物体静止是是否处于休眠而节约cpu时间 varDosleep:Boolean=true; //创建虚拟世界 world=newb2World(worldAABB,gravity,doSleep); //创建地面 createBox(550/2,390,0,275,10,true); //左右挡板 createBox(0,400/2,0,10,200,true); createBox(550,400/2,0,10,200,true); //障碍物 createBox(Math.random()*250+100,Math.random()*150+100,Math.random()*360,Math.random()*50,Math.random()*50,true); for(vari:int=0;i<numWidget;i++) { vartempNum:Number=Math.random(); varhalfWidth:Number=10+Math.random()*50; varhalfHeight:Number=10+Math.random()*50; varxPos:Number=100+Math.random()*(stage.stageWidth-100); varyPos:Number=0; varradius:Number=10+Math.random()*30; varangle:Number=Math.random()*360; if(tempNum>.5) { //创建方形物体 createBox(xPos,yPos,angle,halfWidth,halfHeight,false); } else { //创建圆形物体 createCircle(xPos,yPos,radius); } } } privatefunctioncreateBox(xPos:Number,yPos:Number,angle:Number,halfWidth:Number,halfHeight:Number,isStatic:Boolean):void { boxShape=newb2PolygonDef(); if(isStatic) { boxShape.density=0.0; } else { boxShape.density=2.0; } boxShape.friction=0.3; boxShape.restitution=0.3; boxShape.SetAsBox(halfWidth/rate,halfHeight/rate); bodyDef=newb2BodyDef(); bodyDef.angle=angle; bodyDef.userData=newBox(halfWidth*2,halfHeight*2,0xffffff*Math.random()); bodyDef.position.Set(xPos/rate,yPos/rate); body=world.CreateBody(bodyDef); body.CreateShape(boxShape); body.SetMassFromShapes(); addChild(bodyDef.userData); } privatefunctioncreateCircle(xPos:Number,yPos:Number,radius:Number):void { circleS |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 哈哈镜类似ps球面化滤镜源码+原理下一篇: 鼠标键盘对场景或者场景中MC分别加以监听收录
关于Box2D入门基础之一的所有评论