我一直在玩Box2DJS很多,认为我已经找到了我需要的东西来实现它几乎所有的东西(例如碰撞检测挂钩等)。下面是我写的一个箱子或圆形图像代替盒或圆形对象的集成的代码片段:
if (myBallImage)
{
for (aBody = world.m_bodyList; aBody != null; aBody = aBody.m_next)
{
var jellyObject = aBody.GetUserData();
if (typeof(jellyObject) != "object" || jellyObject == null)
continue;
var position = aBody.GetCenterPosition();
var angle = aBody.GetRotation();
var mass = aBody.GetMass();
var halfheight = 0;
var halfwidth = 0;
for (aShape = aBody.GetShapeList(); aShape != null; aShape = aShape.m_next)
{
halfheight = aShape.GetHalfHeight();
halfwidth = aShape.GetHalfWidth();
}
ctx.save();
ctx.translate(position.x, position.y);
ctx.rotate(angle);
ctx.translate(-halfwidth, -halfheight); // halfwidth, halfheight
if (jellyObject.shape == "MYBALL")
ctx.drawImage(myBallImage, 0, 0, halfwidth*2, halfheight*2);
else
if (jellyObject.shape == "MYBOX")
ctx.drawImage(myBoxImage, 0, 0, halfwidth*2, halfheight*2);
ctx.restore();
}
}
else
{
myBallImage = new Image();
myBallImage.src = 'circle.gif';
myBoxImage = new Image();
myBoxImage.src = 'box.gif';
}
在这里找到这个线程: http://stackoverflow.com/questions/3796025/fill -svg-path-element-with-a-background-image ...但我尝试将图像定义为图案,然后将该图案应用于球迄今尚未运行。我也不太明白那个线程中的响应者是在用第二个位(显然是调用这个模式并将它应用到svg对象)。 – relic 2012-01-12 19:00:48