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

+ Recent posts