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是负数。

4

1 回答 1

0

我之前做类似事情的方法是将画布精灵放在另一个精灵中,例如。缩放,其注册点位于屏幕中心(或任何需要的地方)。然后,您可以在缩放精灵内部移动画布(在我的情况下,它是可拖动的)并缩放外部精灵,以便放大中心。我发现缩放和定位不同的精灵比做偏移要容易得多。

于 2012-10-15T20:16:48.983 回答