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