3

我已经检查了一些以前的问题,例如thisanother,但没有一个解决我遇到的问题。我有一个缩放功能:

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;
                    }
                }
            }

如果超出限制,则尝试将大小重置为限制范围内,但这只是不成功,但图像什么也不做,并且应用程序锁定并导致强制关闭。

有谁知道如何做到这一点?我喜欢这种缩放方法,因为它很简单,但是可以在实例化缩放边界时使用它吗?

4

0 回答 0