1
我一直在尋找一種方式去做一件看起來很簡單的事情。 我有一個完美的鼠標滾輪縮放功能,因爲在每個功能之後,增量值被重置爲0。 看起來的縮放手勢並不那麼簡單? 我的問題是,我正在嘗試創建動態縮放限制(每個級別的最大縮放比例都會有所不同)。並且縮放會卡在我設置的最大比例尺範圍內,不能縮小。我正在嘗試使用e.scaleX屬性來確定方向,以便您可以縮小,但無法正常工作。AS3 - 縮放手勢獲取縮放方向?
感謝您的幫助! 代碼:
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;
}
}
}
我標記你的答案是正確的,因爲我認爲它確實回答了我的問題。儘管我知道我沒有足夠的解釋或提供足夠的代碼,但我仍然遇到了特定情況的問題。我遇到的問題是var BlockSize每個級別都會變化(變小),所以最大縮放不是一個設定量,而是基於該級別的相對塊大小。因此,對於1級,最大變焦可能是1.2,但10級或20的最大變焦可能是4或5。我試圖找出邏輯,我覺得我幾乎沒有和你的回答也幫我搬這個向前,所以謝謝你! –
@ZacKenny實際上,你可以通過值的陣列設置最大變焦,甚至計算出它在每個級別開始與** stage.stageWidth /塊大小**。 – Organis
是的!這正是我最終做的。感謝@Organis的幫助! 功能onZoom(E:的TransformGestureEvent):無效{ \t VAR newBlockScale:總數= BLOCKSIZE * 4; \t \t VAR PredefinedMaxScale:總數= StageWidth/newBlockScale; \t跟蹤( 「PredefinedMaxScale =」 + PredefinedMaxScale); var aScale:Number = container.scaleX * e.scaleX; 如果(ASCALE <1){ASCALE = 1;} 如果(ASCALE> PredefinedMaxScale){ASCALE = PredefinedMaxScale;} container.scaleX = ASCALE; container.scaleY = aScale; } –