ff: Loaderをドラッグ&ドロップ

by osamX forked from Loaderをドラッグ&ドロップ (diff: 23)
SpriteにaddChildした版。こっちのが簡単。
♥0 | Line 58 | Modified 2011-01-18 07:51:56 | MIT License
play

ActionScript3 source code

/**
 * Copyright osamX ( http://wonderfl.net/user/osamX )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/bl7e
 */

// forked from osamX's Loaderをドラッグ&ドロップ
package 
{
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	import flash.net.URLRequest;
	
	import org.libspark.betweenas3.BetweenAS3;
	import org.libspark.betweenas3.easing.Bounce;
	import org.libspark.betweenas3.easing.Cubic;
	
	public class Main extends Sprite 
	{
		private const homePoint:Point = new Point(465 / 2 - 64, 465 - 128);	//loaderの初期位置(アニメーション用)
		
		private var loader:Loader;					//主役
		private var sprite:Sprite;
		private var stageMouseDownPos:Point;		//stage上のマウスがダウンされた位置(アニメーション用)
		
		public function Main():void {
			loadImage();
		}
		
		//Loaderで画像ロード・表示
		private function loadImage():void {
			sprite = new Sprite();
			addChild(sprite);
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void {
				loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, arguments.callee);
				sprite.addChild(loader);
				addEventListeners();
			}); 
			loader.load(new URLRequest("http://a3.twimg.com/profile_images/1199283975/twicon11w_reasonably_small.png"));//twitterのアイコン (128*128)
			sprite.x = homePoint.x;
			sprite.y = homePoint.y;
		}
		
		//イベントリスナー追加
		private function addEventListeners():void {
			sprite.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);	// loaderにMOUSE_DOWNのイベントを拾わせる
			stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);			// stageにMOUSE_UPのイベントを拾わせる
		}
		
		//MOUSE_DOWN
		private function onMouseDown(e:MouseEvent):void {
			sprite.startDrag();
			stageMouseDownPos = new Point(stage.mouseX, stage.mouseY);	//アニメーション用
		}
		
		//MOUSE_UP
		private function onMouseUp(e:MouseEvent):void {
			sprite.stopDrag();
			backToHome();
		}
		
		//アニメーション
		private function backToHome():void {
			if (stageMouseDownPos.y > stage.mouseY) {
				BetweenAS3.parallel(
					BetweenAS3.tween(sprite, { x:homePoint.x }, null, 0.5 , Cubic.easeOut),
					BetweenAS3.tween(sprite, { y:homePoint.y }, null, 0.5, Bounce.easeOut)
				).play();
			}
			else {
				BetweenAS3.tween(sprite, { x:homePoint.x, y:homePoint.y }, null, 0.5 , Cubic.easeOut).play();
			}
		}
	}
	
}