gpt4 book ai didi

android - iOS 编程中 AS3 的放大/缩小限制

转载 作者:行者123 更新时间:2023-11-29 01:21:04 24 4
gpt4 key购买 nike

我的代码遇到问题。我使用 AS3 进行了基本缩放,使用两根手指 进行缩放。但我有一个麻烦;

例如,我需要将放大停止在2(正常尺寸为1),然后,我需要将最大值缩小到1。这是我的代码,但如果我快速缩放,缩放会超过 2

我需要将缩放限制在 12 之间。

Multitouch.inputMode = MultitouchInputMode.GESTURE;

escenario.addEventListener(TransformGestureEvent.GESTURE_PAN, fl_PanHandler);

stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM, fl_ZoomHandler);

function fl_PanHandler(event:TransformGestureEvent):void
{

event.currentTarget.x += event.offsetX;
event.currentTarget.y += event.offsetY;

}

function fl_ZoomHandler(event:TransformGestureEvent):void
{

if (event.scaleX && event.scaleY >= 1 && escenario.scaleX && escenario.scaleY <= 2)
{

escenario.scaleX *= event.scaleX;
escenario.scaleY *= event.scaleY;
trace(escenario.scaleX);

}

}

最佳答案

由于您正在执行乘法/等于 (*=),您的值很容易超过 if 语句中的阈值 2,因为您在 if 语句之后乘以该值。你可以这样做:

function fl_ZoomHandler(event:TransformGestureEvent):void {
var scale:Number = escenario.scaleX * event.scaleX; //the proposed new scale amount

//you set both the scaleX and scaleY in one like below:
escenario.scaleY = escenario.scaleX = Math.min(Math.max(1,scale), 2);

//^^^^ inside the line above,
//Math.max(1, scale) will return whatever is bigger, 1 or the proposed new scale.
//Then Math.min(..., 2) will then take whatever is smaller, 2 or the result of the previous Math.max

trace(escenario.scaleX);
}

关于android - iOS 编程中 AS3 的放大/缩小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34596182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com