Flex 多点触控之图片控件
发布时间:2020-12-15 04:33:54 所属栏目:百科 来源:网络整理
导读:转:一个外国人写的,找不到主人了。 package {import flash.events.MouseEvent;import flash.events.TransformGestureEvent;import flash.geom.Matrix;import flash.geom.Point;import flash.ui.Multitouch;import mx.controls.Image;public class GestureI
转:一个外国人写的,找不到主人了。
package { import flash.events.MouseEvent; import flash.events.TransformGestureEvent; import flash.geom.Matrix; import flash.geom.Point; import flash.ui.Multitouch; import mx.controls.Image; public class GestureImage extends Image { private var offsetX:Number; private var offsetY:Number; public function GestureImage() { if(Multitouch.supportsGestureEvents){ this.addEventListener(MouseEvent.MOUSE_DOWN,startDragging); this.addEventListener(MouseEvent.MOUSE_UP,stopDragging); this.addEventListener(TransformGestureEvent.GESTURE_ROTATE,onGestureRotate); this.addEventListener(TransformGestureEvent.GESTURE_ZOOM,onGesturePinch); } } private function startDragging(event:MouseEvent):void { setAsCurrentChild(); offsetX = event.stageX - this.x; offsetY = event.stageY - this.y; stage.addEventListener(MouseEvent.MOUSE_MOVE,moveImage); } private function stopDragging(event:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE,moveImage); } private function moveImage(event:MouseEvent):void { this.x = event.stageX - offsetX; this.y = event.stageY - offsetY; event.updateAfterEvent(); } private function onGesturePinch(pinchEvent:TransformGestureEvent):void{ setAsCurrentChild(); var pinchMatrix:Matrix = this.transform.matrix; var pinchPoint:Point = pinchMatrix.transformPoint( new Point((this.width/2),(this.height/2))); pinchMatrix.translate(-pinchPoint.x,-pinchPoint.y); pinchMatrix.scale(pinchEvent.scaleX,pinchEvent.scaleY); pinchMatrix.translate(pinchPoint.x,pinchPoint.y); this.transform.matrix = pinchMatrix; } private function onGestureRotate(rotateEvent:TransformGestureEvent):void { setAsCurrentChild(); var rotateMatrix:Matrix = this.transform.matrix; var rotatePoint:Point = rotateMatrix.transformPoint( new Point((this.width/2),(this.height/2))); rotateMatrix.translate(-rotatePoint.x,-rotatePoint.y); rotateMatrix.rotate(rotateEvent.rotation*(Math.PI/180)); rotateMatrix.translate(rotatePoint.x,rotatePoint.y); this.transform.matrix = rotateMatrix ; } private function setAsCurrentChild():void{ this.parent.setChildIndex( this,this.parent.numChildren-1 ); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |