hello,
I attached this to a sprite. when uncomenting the rotation = rotation + deltaAngle; it works (without rotation)
regards
package utils;
import openfl.geom.Point;
import starling.display.DisplayObject;
import starling.display.Sprite;
import starling.events.Touch;
import starling.events.TouchEvent;
import starling.events.TouchPhase;
import openfl.Vector;
class TouchSheet extends Sprite{
public function new(contents : DisplayObject = null) {
super();
addEventListener(TouchEvent.TOUCH, onTouch);
if (contents != null) {
contents.x = Std.int(contents.width / -2 );
contents.y = Std.int(contents.height / -2 );
addChild(contents);
}
}
private function onTouch(event : TouchEvent) : Void {
var touches:Vector<Touch> = event.getTouches(this, TouchPhase.MOVED);
if (touches.length == 1) {
var delta : Point = touches[0].getMovement(parent);
x += delta.x;
y += delta.y;
} else if (touches.length == 2) {
var touchA : Touch = touches[0];
var touchB : Touch = touches[1];
var currentPosA : Point = touchA.getLocation(parent);
var previousPosA : Point = touchA.getPreviousLocation(parent);
var currentPosB : Point = touchB.getLocation(parent);
var previousPosB : Point = touchB.getPreviousLocation(parent);
var currentVector : Point = currentPosA.subtract(currentPosB);
var previousVector : Point = previousPosA.subtract(previousPosB);
var currentAngle : Float = Math.atan2(currentVector.y, currentVector.x);
var previousAngle : Float = Math.atan2(previousVector.y, previousVector.x);
var deltaAngle : Float = currentAngle - previousAngle;
var previousLocalA : Point = touchA.getPreviousLocation(this);
var previousLocalB : Point = touchB.getPreviousLocation(this);
pivotX = (previousLocalA.x + previousLocalB.x) * 0.5;
pivotY = (previousLocalA.y + previousLocalB.y) * 0.5;
x = (currentPosA.x + currentPosB.x) * 0.5;
y = (currentPosA.y + currentPosB.y) * 0.5;
rotation = rotation + deltaAngle;
}
event.stopImmediatePropagation();
}
override public function dispose() : Void {
trace ("dispose touchsheet");
removeEventListener(TouchEvent.TOUCH, onTouch);
super.dispose();
}
}