저는 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-a-background-image ...하지만 이미지를 패턴으로 정의하려고하면 그 패턴을 볼에 적용하는 것이 지금까지는 효과가 없습니다. 나는 또한 그 스레드의 응답자가 두 번째 비트 (분명히 패턴을 호출하고이를 svg 객체에 적용)로 무엇을하는지 이해하지 못한다. – relic