ctrl key + mouse drag
Main.as
package
{
import flash.display.Sprite;
import starling.core.Starling;
[SWF(frameRate="30", width="550", height="500", backgroundColor="0x000000")]
public class Main extends Sprite
{
private var _star:Starling;
public function Main()
{
_star = new Starling(Game, stage);
_star.simulateMultitouch = true;
_star.start();
}
}
}
Game.as
package
{
import flash.display.Bitmap;
import flash.geom.Point;
import starling.display.Image;
import starling.display.Sprite;
import starling.events.Event;
import starling.events.Touch;
import starling.events.TouchEvent;
import starling.textures.Texture;
import starling.utils.deg2rad;
public class Game extends Sprite
{
private var _container:Sprite;
private var _multiTouch:Vector.<Touch>;
private var _image:Image;
[Embed(source="test.jpg")]
private var _imageClass:Class;
public function Game()
{
super();
addEventListener(Event.ADDED_TO_STAGE, addStage);
}
private function addStage (e:Event):void
{
settingSet();
}
private function settingSet():void
{
_container = new Sprite();
addChild(_container);
_container.x = stage.stageWidth / 2;
_container.y = stage.stageHeight / 2;
var _bitmap:Bitmap = new _imageClass() as Bitmap;
var _texture:Texture = Texture.fromBitmap(_bitmap);
_image = new Image(_texture);
_image.pivotX = _image.width / 2;
_image.pivotY = _image.height / 2;
_container.addChild(_image);
_multiTouch = new Vector.<Touch>();
_image.addEventListener(TouchEvent.TOUCH, touchHandler);
}
private function touchHandler (e:TouchEvent):void
{
_multiTouch = e.getTouches(stage);
var _multiLength:int = _multiTouch.length;
if(_multiTouch[0].phase == "moved"){
if(_multiLength == 2){
multiTouchSet();
}else{
oneTouchSet();
}
}
}
private function oneTouchSet():void
{
var _locationPos:Point = _multiTouch[0].getLocation(stage);
var _prevPos:Point = _multiTouch[0].getPreviousLocation(stage);
var _point:Point = _locationPos.subtract(_prevPos);
_container.x += _point.x;
_container.y += _point.y;
}
private function multiTouchSet():void
{
rotationSet();
enlargementSet();
}
private function enlargementSet():void
{
var firstPos:Point = _multiTouch[0].getLocation(parent);
var secondPos:Point = _multiTouch[1].getLocation(parent);
var firstPrevPos:Point = _multiTouch[0].getPreviousLocation(parent);
var secondPrevPos:Point = _multiTouch[1].getPreviousLocation(parent);
var firstDistancs:Number = Point.distance(firstPos, secondPos);
var prevDistancs:Number = Point.distance(firstPrevPos, secondPrevPos);
var distancs:Number = firstDistancs - prevDistancs;
_image.width += distancs;
_image.scaleY = _image.scaleX;
}
private function rotationSet():void
{
var _locationPos:Point = _multiTouch[0].getLocation(stage);
var _prevPos:Point = _multiTouch[0].getPreviousLocation(stage);
var _locationROT:Number = (180 / Math.PI) * Math.atan2(_locationPos.y - _container.y, _locationPos.x - _container.x) + 90;
var _prevROT:Number = (180 / Math.PI) * Math.atan2(_prevPos.y - _container.y, _prevPos.x - _container.x) + 90;
var _rot:Number = _locationROT - _prevROT;
_container.rotation += deg2rad(_rot);
}
}
}
'Starling' 카테고리의 다른 글
Starling_Tween( _repeatCount, _reverse ) (0) | 2013.07.17 |
---|---|
Starling_ Double Click 꼼수. (0) | 2013.07.17 |
Starling TextField Filters (0) | 2013.04.03 |
Starling TextField bounds, textBounds (0) | 2013.04.03 |
Starling_Button (0) | 2012.12.03 |