TAG ActionScript,
ActionScript3.0,
Adobe,
AIR 3,
AS3,
CS5.5,
flash,
Flash Player,
FP11,
framework,
RTMFP,
Stage3D,
Starling,
액션스크립트,
플래시
package {
import starling.events.Event;
import starling.core.Starling;
import starling.display.Sprite;
import starling.display.Button;
import starling.display.Image;
import starling.textures.Texture;
import starling.events.Touch;
import starling.events.TouchEvent;
import starling.events.TouchPhase;
import starling.animation.Tween;
import starling.animation.Transitions;
import starling.utils.deg2rad;
import starling.display.DisplayObject;
import starling.text.TextField;
import starling.utils.HAlign;
import starling.utils.VAlign;
import utils.TouchSheet;
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.display.Bitmap;
import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.Event;
public class Demo extends Sprite {
private var _loader:Loader;
private var _image:Image;
private var _posText:TextField;
private var _sheet:TouchSheet;
public function Demo() {
_loader = new Loader();
_loader.load(new URLRequest("http://cfile24.uf.tistory.com/image/11252E424F0ADA1C069349"));
_loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, onLoadedHandler);
}
private function onLoadedHandler(e:flash.events.Event):void{
var bitmap:Bitmap = _loader.content as Bitmap;
var texture:Texture = Texture.fromBitmap(bitmap);
_image = new Image(texture);
var description:String =
"- touch and drag to move the images \n" +
"- pinch with 2 fingers to scale and rotate \n" +
"- double tap brings an image to the front \n" +
"- use Ctrl/Cmd & Shift to simulate multi-touch";
var infoText:TextField = new TextField(300, 75, description);
infoText.x = 10;
infoText.y = 35;
infoText.fontSize = 12;
infoText.color = 0x999999;
infoText.vAlign = VAlign.TOP;
infoText.hAlign = HAlign.LEFT;
addChild(infoText);
_sheet = new TouchSheet(_image);
_sheet.scaleX = 0.2;
_sheet.scaleY = 0.2;
setAlignCenter(_sheet);
_sheet.addEventListener(TouchEvent.TOUCH, onTouchHandler);
addChild(_sheet);
_posText = new TextField(400, 480, "");
_posText.x = 10;
_posText.y = 105;
_posText.fontSize = 12;
_posText.color = 0xBBBBBB;
_posText.vAlign = VAlign.TOP;
_posText.hAlign = HAlign.LEFT;
_posText.touchable = false;
addChild(_posText);
stage.addEventListener(starling.events.Event.RESIZE, onResizeHandler);
}
private function onTouchHandler(e:TouchEvent):void{
var touches:Vector.<Touch> = e.getTouches(_sheet);
_posText.text = "_sheet.x : "+_sheet.x+"\n"+
"_sheet.y : "+_sheet.y+"\n"+
"_sheet.width : "+_sheet.width+"\n"+
"_sheet.height : "+_sheet.height;
var len:int = touches.length;
for(var i:int=0;i<len;i++){
var touch:Touch = touches[i];
var currentPoint:Point = touch.getLocation(_sheet);
var previousPoint:Point = touch.getPreviousLocation(_sheet);
_posText.text +="\n\n"+"touches["+i+"]========================\n"+
"previousGlobalX : "+touch.previousGlobalX+"\n"+
"previousGlobalY : "+touch.previousGlobalY+"\n"+
"globalX : "+touch.globalX+"\n"+
"globalY : "+touch.globalY+"\n"+
"getLocation().x : "+currentPoint.x+"\n"+
"getLocation().y : "+currentPoint.y+"\n"+
"getPreviousLocation().x : "+previousPoint.x+"\n"+
"getPreviousLocation().y : "+previousPoint.y;
}
}
private function onResizeHandler(e:starling.events.Event):void{
}
private function setAlignCenter(inTarget:DisplayObject):void{
inTarget.x = stage.stageWidth >> 1;
inTarget.y = stage.stageHeight >> 1;
}
public override function dispose():void {
super.dispose();
}
}
}
package {
import starling.events.Event;
import starling.core.Starling;
import starling.display.Sprite;
import starling.display.Button;
import starling.textures.Texture;
import starling.display.DisplayObject;
import starling.display.Image;
import starling.utils.deg2rad;
import flash.display.Bitmap;
public class Demo extends Sprite {
[Embed(source = "f60.png")]
private var MyBitmap:Class;
private var _myTexture:Texture;
private var _arrButterflys:Vector.<Butterfly>;
public function Demo() {
// addedToStage 이벤트에 대한 리스너 추가
addEventListener( Event.ADDED_TO_STAGE , onAddedToStage);
}
private function onAddedToStage(e:Event):void {
var myBitmap:Bitmap = new MyBitmap() as Bitmap;
_myTexture = Texture.fromBitmap(myBitmap);
var len:int = 800;
_arrButterflys = new Vector.<Butterfly>(len, false);
for (var i:int = 0; i<len; i++) {
var fly:Butterfly = new Butterfly(_myTexture);
fly.alpha = Math.random();
fly.destX = Math.random()*stage.stageWidth;
fly.destY = Math.random()*stage.stageHeight;
fly.setVertexColor(0, Math.random()*0xFFFFFF);
fly.setVertexColor(1, Math.random()*0xFFFFFF);
fly.setVertexColor(2, Math.random()*0xFFFFFF);
fly.setVertexColor(3, Math.random()*0xFFFFFF);
fly.x = Math.random()*stage.stageWidth;
fly.y = Math.random()*stage.stageHeight;
fly.rotation = deg2rad(Math.random()*360);
fly.pivotX = fly.width >> 1;
fly.pivotY = fly.height >> 1;
_arrButterflys[i] = fly;
addChild(fly);
}
stage.addEventListener(Event.ENTER_FRAME, onFrame);
}
private function onFrame(e:Event):void{
var len:uint = _arrButterflys.length;
for (var i:int = 0; i < len; i++){
// move the sausages around
var fly:Butterfly = _arrButterflys[i];
fly.x -= ( fly.x - fly.destX ) * .1;
fly.y -= ( fly.y - fly.destY ) * .1;
if (Math.abs(fly.x - fly.destX)<1 && Math.abs(fly.y-fly.destY) < 1){
fly.destX = Math.random()*stage.stageWidth;
fly.destY = Math.random()*stage.stageHeight;
fly.rotation = deg2rad(Math.random()*360);
}
}
}
public override function dispose():void {
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
_myTexture.dispose();
super.dispose();
}
}
}
import starling.display.Image;
import starling.textures.Texture;
class Butterfly extends Image{
public var destX:Number = 0;
public var destY:Number = 0;
public function Butterfly(inTexture:Texture):void{
super(inTexture);
}
}