在Android设备上使用flex / air 2.6,我使用带有TransformGestureEvent的画布来放大地图。听觉效果还可以,但我似乎无法找到用户想要放大或缩小的信息(手指越来越近或分开)。
我预计手势的意图可以通过事件的offsetX和offsetY属性进行识别,就像您将在滑动手势事件中所做的那样。但无论我如何在设备中做手势,我总是得到两个属性为0。
如何在手势缩放事件中知道手指是否靠近或分开?
由于
玛利亚
答案 0 :(得分:0)
首先,为什么要将Canvas用于移动应用?它已被弃用,你应该使用像Group这样的东西。
其次,你应该look at the API。有一个非常好的例子显示你想要做的事情。
package
{
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.TransformGestureEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
[SWF(width=320, height=460, frameRate=24, backgroundColor=0x000000)]
public class TransformGestureExample2 extends Sprite
{
[Embed(source="african_elephant.jpg")]
public var ElephantImage:Class;
public var scaleDebug:TextField;
public var rotateDebug:TextField;
public function TransformGestureExample2()
{
// Debug
var tf:TextFormat = new TextFormat();
tf.color = 0xffffff;
tf.font = "Helvetica";
tf.size = 11;
this.scaleDebug = new TextField();
this.scaleDebug.width = 310;
this.scaleDebug.defaultTextFormat = tf;
this.scaleDebug.x = 2;
this.scaleDebug.y = 2;
this.stage.addChild(this.scaleDebug);
this.rotateDebug = new TextField();
this.rotateDebug.width = 310;
this.rotateDebug.defaultTextFormat = tf;
this.rotateDebug.x = 2;
this.rotateDebug.y = 15;
this.stage.addChild(this.rotateDebug);
var elephantBitmap:Bitmap = new ElephantImage();
var elephant:Sprite = new Sprite();
elephant.addChild(elephantBitmap);
elephant.x = 160;
elephant.y = 230;
elephantBitmap.x = (300 - (elephantBitmap.bitmapData.width / 2)) * -1;
elephantBitmap.y = (400 - (elephantBitmap.bitmapData.height / 2)) *-1;
this.addChild(elephant);
Multitouch.inputMode = MultitouchInputMode.GESTURE;
elephant.addEventListener(TransformGestureEvent.GESTURE_ZOOM, onZoom);
elephant.addEventListener(TransformGestureEvent.GESTURE_ROTATE, onRotate);
}
private function onZoom(e:TransformGestureEvent):void
{
this.scaleDebug.text = (e.scaleX + ", " + e.scaleY);
var elephant:Sprite = e.target as Sprite;
elephant.scaleX *= e.scaleX;
elephant.scaleY *= e.scaleY;
}
private function onRotate(e:TransformGestureEvent):void
{
var elephant:Sprite = e.target as Sprite;
this.rotateDebug.text = String(e.rotation);
elephant.rotation += e.rotation;
}
}
}