我有一个正在缩放的精灵(画布)。画布上有一个面具。问题是简单的缩放(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
为负。
答案 0 :(得分:0)
之前我做过类似事情的方法是将画布精灵放在另一个精灵中,例如。缩放,其注册点位于屏幕中央(或任何需要的地方)。然后你可以在缩放精灵内部移动画布(在我的情况下它是可拖动的)并缩放外部精灵,使中心放大。 缩放和定位不同的精灵我发现比做偏移更容易。