Hi,
I'm not too sure if this will be helpful or not, but here's a mouseJoint test i was playing around with... basically drags the box with each mouse move using a mouseJoint... (need to have a movieClip with linkage "boxImage" for the userdata to work....)
Code:
package {
import flash.display.*;
import flash.events.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Dynamics.Contacts.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;
public class mjTest extends Sprite {
var bodyDef:b2BodyDef;
var boxDef:b2BoxDef;
var body:b2Body;
var mj:b2MouseJoint;
var md:b2MouseJointDef;
public var m_world:b2World;
public var m_timeStep:Number = 1/30;
public var m_iterations:int = 10;
public function mjTest() {
var worldAABB:b2AABB = new b2AABB();
worldAABB.minVertex.Set(0.0, 0.0);
worldAABB.maxVertex.Set(1000.0, 800.0);
var gravity:b2Vec2 = new b2Vec2(0, 300.0);
var doSleep:Boolean = true;
m_world = new b2World(worldAABB, gravity, doSleep);
bodyDef = new b2BodyDef();
boxDef = new b2BoxDef();
boxDef.extents.Set(20,30);
boxDef.friction = 1;
boxDef.density = 1;
boxDef.restitution = 0.3;
bodyDef.isSleeping = true;
bodyDef.position.Set(351,300);
bodyDef.AddShape(boxDef);
bodyDef.userData = new boxImage();
bodyDef.userData.width = boxDef.extents.x * 2;
bodyDef.userData.height = boxDef.extents.y * 2;
addChild(bodyDef.userData);
body = m_world.CreateBody(bodyDef);
md = new b2MouseJointDef();
md.body1 = m_world.m_groundBody;
md.body2 = body;
md.target.Set(350, 320);
md.maxForce = 3000.0 * body.m_mass;
md.timeStep = m_timeStep;
mj = m_world.CreateJoint(md) as b2MouseJoint;
body.WakeUp();
addEventListener(Event.ENTER_FRAME, Update, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mJoint, false, 0, true);
}
function mJoint(e:MouseEvent):void {
if (mj) {
var p2:b2Vec2 = new b2Vec2(e.stageX, e.stageY);
mj.SetTarget(p2);
}
}
public function Update(e:Event):void {
m_world.Step(m_timeStep, m_iterations);
for (var bb:b2Body = m_world.m_bodyList; bb; bb = bb.m_next) {
if (bb.m_userData is Sprite) {
bb.m_userData.x = bb.m_position.x;
bb.m_userData.y = bb.m_position.y;
bb.m_userData.rotation = bb.m_rotation * (180/Math.PI);
}
}
}
}
}