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。
下一个块没有意义,因为事件 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;
}
我一直在寻找一种方法来完成看似非常简单的任务。 我有一个鼠标滚轮缩放功能,它工作得很好,因为增量值在每个功能后都重置为 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;
}