【发布时间】:2012-10-15 20:03:47
【问题描述】:
我有一个正在缩放的精灵(画布)。画布有一个面具。问题是简单的缩放(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都是否定的。 -
我认为你想多了。尝试类似 canvas.x = w/2 -canvas.width/2 的东西。您可能需要在开始时记录一个偏移量,因为 canvas.x、y 不在掩码 0、0 处,并对其进行缩放并根据需要添加/减去它。
-
@AmyBlankenship,嗯,...谢谢你的话“我认为你想多了”,解决方案应该比问题中提出的更简单。
标签: actionscript-3 flash geometry