我使用Raphael JS構建了一個由三個元素組成的簡單2D車。爲此,我將身體作爲圖像和兩個輪胎。我分離了這些元素,因爲我想讓輪胎在動畫中旋轉。根據物體,在翻譯物體時考慮旋轉
var curCar = raphael.image("car.png", /* x */ 0, /* y */ 0, /* width */ 120, /* height*/ 82)
var tires = raphael.set();
tires.push(
raphael.image("tire.png", 2, 50, 32, 32),
raphael.image("tire.png", 84, 50, 32, 32)
);
正如你所看到的,輪胎位於汽車的「底部」,並且已經對齊了。 現在,curCar遵循使用Raphael.animate的路徑,該路徑工作正常。對於動畫的每一次更新,我都會將輪胎翻譯成curCar的位置。它看起來像這樣:
function animationUpdate (pos) {
curCar.transform("t" + [pos.x, pos.y] +" r"+ pos.alpha);
tires.transform("t" + [pos.x, pos.y ]);
};
「t」代表translate(x,y),r代表旋轉。這些值由Raphael自動計算。 當沿着一條直線路徑時,這一切都可以解決,但只要curCar旋轉,輪胎計算就會失敗。
一個例子:
curCar是在位置x:100/Y:200,並通過10°旋轉。 輪胎被翻譯爲x:102/y:150和x:184/y:250.因此,curCar旋轉了10°,輪胎不在位。
我的主要問題是:
如何計算出正確的X/Y位置考慮輪換? 必須有一個共同的數學公式來做到這一點。
螺絲和秤都是「s」有線代碼! – 2013-04-29 21:22:30
它可能有點不可思議,但使用Element.transform(tStr)方法 – misantronic 2013-04-29 22:39:59