我已经检查了一些以前的问题,例如this和another,但没有一个解决我遇到的问题。我有一个缩放功能:
protected function onZoom(e:TransformGestureEvent, img:Image):void
{
DynamicRegistration.scale(img, new Point(e.localX, e.localY), img.scaleX*e.scaleX, img.scaleY*e.scaleX);
}
并且缩放有效(而且很好!),但我想将缩放限制为 2.5x 和 .8x。所以我的第一个想法是尝试这个:
protected function onZoom(e:TransformGestureEvent, img:Image):void
{
while(img.scaleX <= 2.5 && img.scaleX >= .8)
DynamicRegistration.scale(img, new Point(e.localX, e.localY), img.scaleX*e.scaleX, img.scaleY*e.scaleX);
}
但这放大到了最大极限,没有任何像捏合缩放这样的交互,我假设比例刚刚超过 2.5 倍,并且它不会响应缩放。
我的下一次尝试是:
protected function onZoom(e:TransformGestureEvent, img:Image):void
{
while(img.scaleX <= 2.5 && img.scaleX >= .8)
{
DynamicRegistration.scale(img, new Point(e.localX, e.localY), img.scaleX*e.scaleX, img.scaleY*e.scaleX);
if(img.scaleX > 2.5)
{
img.scaleX = 2.5;
img.scaleY = 2.5;
}
else if(img.scaleX < .8)
{
img.scaleX = .8;
img.scaleY = .8;
}
}
}
如果超出限制,则尝试将大小重置为限制范围内,但这只是不成功,但图像什么也不做,并且应用程序锁定并导致强制关闭。
有谁知道如何做到这一点?我喜欢这种缩放方法,因为它很简单,但是可以在实例化缩放边界时使用它吗?