这是Box2DFlash引擎的一个基础入门,掌握了这个,基本上就可以入门应用了。关键是清楚Box2DFlash的结构!
【http://www.newflash3d.com---flash3D先锋队:北京贝武易科技公司】
有疑问请联系我QQ:363596350
运行结果如下。
源码:
package{
import flash.display.Sprite;
import flash.events.Event;
// Classes used in this example
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;
[SWF(width="640", height="360", backgroundColor="#000000", frameRate="30")]
public class HelloWorld extends Sprite{
[Embed(source='assets/PhysBox.swf')]
public var PhysBox:Class;
//public var FGmc:MovieClip = new FG as MovieClip;
[Embed(source='assets/PhysCircle.swf')]
public var PhysCircle:Class;
[Embed(source='assets/PhysGround.swf')]
public var PhysGround:Class;
public function HelloWorld(){
// Add event for main loop
addEventListener(Event.ENTER_FRAME, Update, false, 0, true);
// Creat world AABB
var worldAABB:b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100.0, -100.0);
worldAABB.upperBound.Set(100.0, 100.0);
// Define the gravity vector
var gravity:b2Vec2 = new b2Vec2(0.0, 10.0);
// Allow bodies to sleep
var doSleep:Boolean = true;
// Construct a world object
m_world = new b2World(worldAABB, gravity, doSleep);
// set debug draw
/*var dbgDraw:b2DebugDraw = new b2DebugDraw();
var dbgSprite:Sprite = new Sprite();
addChild(dbgSprite);
dbgDraw.m_sprite = dbgSprite;
dbgDraw.m_drawScale = 30.0;
dbgDraw.m_fillAlpha = 0.0;
dbgDraw.m_lineThickness = 1.0;
dbgDraw.m_drawFlags = 0xFFFFFFFF;
m_world.SetDebugDraw(dbgDraw);*/
// Vars used to create bodies
var body:b2Body;
var bodyDef:b2BodyDef;
var boxDef:b2PolygonDef;
var circleDef:b2CircleDef;
// Add ground body
bodyDef = new b2BodyDef();
//bodyDef.position.Set(15, 19);
bodyDef.position.Set(10, 12);
//bodyDef.angle = 0.1;
boxDef = new b2PolygonDef();
boxDef.SetAsBox(30, 3);
boxDef.friction = 0.3;
boxDef.density = 0; // static bodies require zero density
/*circleDef = new b2CircleDef();
circleDef.radius = 10;
circleDef.restitution = 0.2*/
// Add sprite to body userData
bodyDef.userData = new PhysGround();
//bodyDef.userData = new PhysCircle();
bodyDef.userData.width = 30 * 2 * 30;
bodyDef.userData.height = 30 * 2 * 3;
addChild(bodyDef.userData);
body = m_world.CreateBody(bodyDef);
body.CreateShape(boxDef);
//body.CreateShape(circleDef);
body.SetMassFromShapes();
// Add some objects
for (var i:int = 1; i < 10; i++){
bodyDef = new b2BodyDef();
bodyDef.position.x = Math.random() * 15 + 5;
bodyDef.position.y = Math.random() * 10;
var rX:Number = Math.random() + 0.5;
var rY:Number = Math.random() + 0.5;
// Box
if (Math.random() < 0.5){
boxDef = new b2PolygonDef();
boxDef.SetAsBox(rX, rY);
boxDef.density = 1.0;
boxDef.friction = 0.5;
boxDef.restitution = 0.2;
bodyDef.userData = new PhysBox();
bodyDef.userData.width = rX * 2 * 30;
bodyDef.userData.height = rY * 2 * 30;
body = m_world.CreateBody(bodyDef);
body.CreateShape(boxDef);
}
// Circle
else {
circleDef = new b2CircleDef();
circleDef.radius = rX;
circleDef.density = 1.0;
circleDef.friction = 0.5;
circleDef.restitution = 0.2
bodyDef.userData = new PhysCircle();
bodyDef.userData.width = rX * 2 * 30;
bodyDef.userData.height = rX * 2 * 30;
body = m_world.CreateBody(bodyDef);
body.CreateShape(circleDef);
}
body.SetMassFromShapes();
addChild(bodyDef.userData);
}
}
public function Update(e:Event):void{
m_world.Step(m_timeStep, m_iterations);
// Go through body list and update sprite positions/rotations
for (var bb:b2Body = m_world.m_bodyList; bb; bb = bb.m_next){
if (bb.m_userData is Sprite){
bb.m_userData.x = bb.GetPosition().x * 30;
bb.m_userData.y = bb.GetPosition().y * 30;
bb.m_userData.rotation = bb.GetAngle() * (180/Math.PI);
}
}
}
public var m_world:b2World;
public var m_iterations:int = 10;
public var m_timeStep:Number = 1.0/30.0;
}
}
- 大小: 48.1 KB
分享到:
相关推荐
Box2DFlash是一款基于Flash平台的2D物理引擎,它为开发者提供了强大的物理模拟功能,常用于游戏开发、动画制作等场景。这篇“【原创】Box2DFlash学习笔记”可能详细介绍了如何在Flash环境中使用Box2D进行物体碰撞、...
通过研究源码,学习者可以深入理解Papervision3D和Box2DFlash的集成方法,以及如何在实际项目中应用这些技术。对于想要提升Flash平台上3D和物理效果的开发者而言,这是一个极好的学习案例。 总的来说,Papervision...
1. **刚体动力学**:Box2D允许创建各种形状的刚体(如矩形、圆形、多边形),并模拟它们在物理环境中的运动,如重力、碰撞、摩擦力等。开发者可以设置刚体的质量、速度、旋转、弹性等属性。 2. **碰撞检测**:Box2D...
Flash物理引擎。在sourceforge上下来之后,看见了doc,于是就激动的整理成了chm。文档为英文版。有需要的同学就拿去用吧~~
看看Box2DFlash升级到2.1a后的示例代码。Box2DAS3 Flash 2.1a b2PulleyJointDef b2MouseJointDef b2GearJointDef b2LineJointDef b2PrismaticJointDef b2WeldJointDef b2LineJointDef b2FrictionJointDef b2...
重力框架Box2d的javascript版本2.1a.3。由box2dfalash改编成javascript 参考文档可以看:http://www.box2dflash.org/docs/2.1a/reference/和box2dflash的官方教程
Box2D Box2D刚体2D物理引擎,由Boris the Brave从Box2DFlash端口移植到Haxe。 语法已更新,以遵循标准的Haxe约定,例如: 动作脚本var world : b2World = new b2World ( new b2Vec2 ( 0 , 10.0 ), true ) ;var ...
FlashPunk 是一个免费的 ActionScript 3 库,用于开发 2D Flash 游戏。它可以给游戏的原型提供快速,简洁的框架,并在其中开发游戏。这意味着大部分的脏活已经干好,可以让你集中精力设计和测试你的游戏。图像特性:...
自动从导出box2dweb概述这是Box2DFlash 2.1a到JavaScript的端口。 我开发了一个从ActionScript 3到JavaScript的编译器来生成代码。 已经有一个名为Box2dJs的JavaScript端口,但是它不是最新的,您必须在每个项目中...
2. XEP100的DFLASH控制寄存器介绍,以及如何设置它们进行读写操作。 3. 字节读写操作的步骤和示例代码,可能涉及中断处理、错误检查和异常处理。 4. 考虑到DFLASH的擦写寿命,如何有效地进行数据管理,如使用 wear ...
2. **DFlash编程**: - 在Freescale微控制器中,对DFlash进行编程通常涉及一系列步骤,包括擦除、编程和验证。这些操作通常由特定的固件或驱动程序控制,以确保数据的安全性和正确性。 - 源码中可能包含用于擦除...
mikolalysenko在Uli Hecht的Box2DFlash端口的npm列表中的冗余,这是Erin Catto的box2d库的闪存端口。 试着一口气说出来! Box2DWeb 2.1alpha在一些过时HTML5之前的绑定中包装了大量代码。 [Mikolalysenko]( )...
2. **地址映射**:Dflash在微控制器的地址空间中有特定的映射,了解这些地址范围对于正确访问Dflash至关重要。 3. **固件更新**:在写入Dflash时,可能涉及固件的更新过程,需要遵循特定的更新流程,如安全擦除、...
本田汽车SRS数据Dflash.S19Dflash.S19Dflash.S19Dflash.S19Dflash.S19
3DFLASH相册CMS系统 2.0 特点包括: 支持。PNG图像。JPG文件。礼品,任何H.264视频(。的MP4。的FLV...) YouTube影片只需键入它的ID 3D的图片运动将给予你的用户体验 CMS的驱动 -提供了一个CMS是很方便管理图片...
"3DFLASH幻灯效果源码"意味着你可以查看并研究实现这种效果的具体步骤和逻辑,这对于学习Flash编程,尤其是AS3(ActionScript 3)语言,是非常有价值的资源。通过分析源码,你可以了解如何使用ActionScript控制对象...