[英]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 。
下一個塊沒有意義,因為事件scaleX和scaleY屬性基於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.