0
我有一個正在縮放的精靈(畫布)。畫布上有一個面具。問題在於簡單縮放(scaleX=newScale; scaleY=newScale;
)將遮罩下的畫布部分放在遮罩下。因此,我需要在縮放之後移動畫布,以便遮罩下的畫布點保持在同一位置。我正在嘗試做如下操作:縮放精靈,保留它的可見部分的中心點
var deltaScale = newScale/scale;
//w and h are width and height of mask
canvas.scaleX = newScale;
canvas.scaleY = newScale;
canvas.x += (canvas.x + w/2) - (canvas.x + w/2)/deltaScale;
canvas.y += (canvas.y + h/2) - (canvas.y + h/2)/deltaScale;
仍然在那個中心點之後不保留在同一個地方。有人可以提示我如何在縮放後移動畫布?
PS:如果有幫助,畫布的寬度和高度是非常大的(一些25000)。
UPD:帆布與它的掩模上的Sprite相加,掩模具有相同大小作爲父子畫面,canvas.x
和canvas.y
是負的。
Sprite相對於註冊點的視覺左上角在哪裏? –
@ AmyBlankenship,不知道我理解你的問題。 'canvas.x'和'canvas.y'都是負數。 – Eugeny89
我認爲你在推翻它。試試像canvas.x = w/2 -canvas.width/2。您可能需要在開始處記錄偏移量,因爲canvas.x,y不在掩碼0,0處,並按比例縮放並添加/減去它。 –