在精灵中缩放,保留它的可见部分的中心点

时间:2012-10-15 20:03:48

标签: actionscript-3 flash geometry

我有一个正在缩放的​​精灵(画布)。画布上有一个面具。问题是简单的缩放(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.xcanvas.y为负。

1 个答案:

答案 0 :(得分:0)

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