簡體   English   中英

AS3-縮放手勢獲取縮放方向?

[英]AS3 - zoom gesture get zoom direction?

我一直在尋找一種方法來完成似乎很簡單的任務。 我有一個鼠標滾輪縮放功能,由於每個功能后的增量值都重置為0,因此可以完美運行。 縮放手勢似乎不是那么簡單嗎? 我的問題是,我正在嘗試創建動態比例限制(每個級別的最大縮放都會有所不同)。 並且縮放卡在了我設置的最大比例上,無法縮小。 我正在嘗試使用e.scaleX屬性來確定方向,以便可以縮小,但是它無法正常工作。

謝謝你的幫助! 編碼:

Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM , onZoom); 
function onZoom (e:TransformGestureEvent):void{ 
    var zoomAmountGesture:Number = 0;
    zoomAmountGesture = e.scaleX;

    if (zoomAmountGesture <= 0){
container.scaleX *= e.scaleX;
container.scaleY *= e.scaleY;
        if (container.scaleX < 1){
            container.scaleX = 1;
            container.scaleY = 1
        }
    }
    if (zoomAmountGesture > 0){
    container.scaleX *= e.scaleX;
    container.scaleY *= e.scaleY;
        if(4* BlockSize * container.scaleX > StageWidth){
            trace("zoom too big");
            var newBlockScale:Number = StageWidth / 3;
            var newBoardScale:Number = newBlockScale / BlockSize;
            trace("newBoardScale = " + newBoardScale);
            container.scaleX = newBoardScale;
            container.scaleY = newBoardScale;
        }
    }
}

我快速閱讀了TransformGestureEvent

下一個塊沒有意義,因為事件scaleXscaleY屬性基於1:

if (zoomAmountGesture <= 0){

然后,您可能應該從以下內容開始:

function onZoom (e:TransformGestureEvent):void
{
    var aScale:Number = container.scaleX * e.scaleX;
    if (aScale < 1) aScale = 1;
    if (aScale > PredefinedMaxScale) aScale = PredefinedMaxScale;

    container.scaleX = aScale;
    container.scaleY = aScale;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM