У меня есть тело, смоделированное с помощью Box2Dweb, и изображение, прикрепленное к телу. Я хочу взять матрицу преобразования тела и применить преобразование к изображению (нарисовать изображение с преобразованием), чтобы его положение и ориентация (относительная) на экране совпадали с положением тела. Я не могу найти функцию для использования с матрицей преобразования в KineticJS. Есть отдельные функции для перемещения и поворота, и есть класс Kinetic.Transform
, который содержит внутри какую-то «матрицу», но я понятия не имею, что с ним делать дальше. Где-то также есть функция _setTransform
, но опять же, понятия не имею, как ее использовать (и подчеркивание означает, что я не должен вызывать ее напрямую или что?).
Я использовал этот код для рисования изображений поверх тел в простом Javascript:
function drawImageOverBody(context, body, image, scale)
{
context.save();
var pos = body.GetPosition();
var center = [scale*pos.x, scale*pos.y];
var R = body.GetTransform().R;
context.translate(center[0], center[1]);
context.transform(R.col1.x, R.col1.y, R.col2.x, R.col2.y, 0, 0);
context.translate(-center[0], -center[1]);
context.drawImage(image, center[0] - image.width/2.0, center[1] - image.height/2.0);
context.restore();
}
Как мне сделать то же самое с KineticJS?
РЕДАКТИРОВАТЬ: по-видимому, единственные преобразования, которые я могу получить от Box2d, — это перемещение и вращение, которые я могу получить, вызвав GetPosition()
и GetAngle()
в теле Box2d, а затем применить к изображению KineticJS с setX(), setY()
и setRotation()
. Так что мне действительно не нужно преобразование в матричной форме здесь. Тем не менее, любопытно.