forked from: forked from: Checkmate vol.5 Professenal

by mtok forked from forked from: Checkmate vol.5 Professenal (diff: 258)
♥0 | Line 204 | Modified 2009-11-16 00:12:35 | MIT License | (replaced)
play

ActionScript3 source code

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

// forked from checkmate's Checkmate vol.5 Professenal
package {
	import flash.display.*;
	import flash.events.*;
	import flash.geom.Point;
	import flash.utils.*;
	import flash.net.*;
	import flash.system.*;
	import flash.ui.Keyboard;
	import jp.progression.commands.*;
	import jp.progression.commands.lists.*;
	import jp.progression.commands.display.*;
	import jp.progression.commands.net.*;
	import jp.progression.commands.tweens.*;
	import jp.progression.events.*;
	
	import caurina.transitions.*;
	public class Prototype001 extends Sprite {
		private var wanco:Wanco;
		private var _target:Point = new Point();
		public function Prototype001 (){
			super();
			setupStage();
			
			addChild(wanco = new Wanco());
			wanco.initialize();
			wanco.addEventListener(Event.COMPLETE, assetInitialize);
			wanco.x = stage.stageWidth * 0.5;
			wanco.y = stage.stageHeight* 0.5;
			
			stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
		
		private function enterFrameHandler(e:Event):void 
		{
			var dx:Number = _target.x - wanco.x;
			var dy:Number = _target.y - wanco.y;
			wanco.x += (dx)*0.02;
			wanco.y += (dy) * 0.02;
			
			var d:Number = Math.sqrt(dx * dx + dy * dy);
			if (d > 100) {
				wanco.run();
			}else if (d > 50) {
				wanco.walk();
			}else {
				wanco.stay();
			}
		}
		
		private function keyDownHandler(e:KeyboardEvent):void 
		{
			switch(e.charCode) {
			case "j".charCodeAt():
			wanco.jump();
			break;
			case "h".charCodeAt():
			wanco.highJump();
			break;
			case "r".charCodeAt():
			wanco.run();
			break;
			case "w".charCodeAt():
			wanco.walk();
			break;
			case "s".charCodeAt():
			wanco.stay();
			break;
			}
		}
		
		private function assetInitialize(e:Event):void 
		{
		}
		private function setupStage():void {
			if (stage) {
				stage.scaleMode = StageScaleMode.NO_SCALE;
				stage.align = StageAlign.TOP_LEFT;
			}
		}
		private function loadAssets(url:String):void {
		}
		private function mouseMoveHandler(e:MouseEvent):void 
		{
			var mx:Number = wanco.mouseX;
			var my:Number = wanco.mouseY;
			var len:Number = Math.sqrt(mx * mx + my * my);
			var th:Number = Math.acos(my/len);

			if (mx < 0) {
				th *= -1;
			}
			wanco.angle = th;
		}
		
		private function mouseDownHandler(e:MouseEvent):void 
		{
			_target.x = mouseX;
			_target.y = mouseY;
		}

		private function clickHandler(e:Event):void {
			//var motion:MovieClip = e.currentTarget as MovieClip;
			//motion.gotoAndPlay(1);
			//A way of rolling.
			//motion.wc2.wc3.gotoAndPlay(2);
		}
	}
}

import adobe.utils.CustomActions;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.system.LoaderContext;
import flash.system.ApplicationDomain;
import flash.net.URLRequest;
import flash.events.Event;

dynamic class Wanco extends Sprite {
	public static const GRAPHICS_URL:String = "http://swf.wonderfl.net/static/assets/checkmate05/wancoProfessional.swf";
	//public static const GRAPHICS_URL:String = "./swf/wancoProfessional.swf";
	private var _angel:Number;
	private var _initialized:Boolean;
	private var classNameList:Vector.<String> 
		= Vector.<String>([
			"StayMotion",
			"JumpMotion",
			"HighJumpMotion",
			"WalkMotion",
			"RunMotion",
			"SquatMotion",
			"QuestionMotion",
			"ExclamationMotion",
			"HeartMotion",
			"PoutMotion",
			"StarMotion",
			"SingMotion",
			"SleepMotion",
			"WakeMotion"
		]);
	private var currentMotion:MovieClip;
	public function Wanco() {
		;
	}
	public function initialize():void {
		loadAssets(GRAPHICS_URL);
	}
	
	private function loadAssets(url:String):void
	{
		var loader:Loader = new Loader();
		var context:LoaderContext = new LoaderContext();
		context.applicationDomain = this.loaderInfo.applicationDomain;
		loader.load(new URLRequest(url), context);
		loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
	}
	
	private function loaderComplete(e:Event):void 
	{
		var info:LoaderInfo = e.target as LoaderInfo;
		var domain:ApplicationDomain = info.applicationDomain;
		var mc:MovieClip;
		var n:String;
		for (var i:int = 0;  i < classNameList.length; i++) {
			n = classNameList[i];
			mc = new (domain.getDefinition(n) as Class) as MovieClip;
			mc.addFrameScript(mc.totalFrames - 1, finishMotion);
			this[n] = mc;
			
		}
		
		currentMotion = this["StayMotion"];
		addChild(currentMotion);
		
		_initialized = true;
		dispatchEvent(new Event(Event.COMPLETE));
	}
	
	private function finishMotion():void
	{
		//trace('finish motion');
		//trace(this);
	}
	private function switchMotion(motionName:String):void {
		if (_initialized) {
			var f:int = currentMotion.wc2.wc3.currentFrame;
			removeChild(currentMotion);
			addChild(currentMotion = this[motionName]);
			currentMotion.wc2.wc3.gotoAndStop(f);
		}
	}
	public function stay():void {
		switchMotion("StayMotion");
	}
	public function run():void {
		switchMotion("RunMotion");
	}
	public function walk():void {
		switchMotion("WalkMotion");
	}
	public function jump():void {
		switchMotion("JumpMotion");
	}
	public function highJump():void {
		switchMotion("HighJumpMotion");
	}
	public function get angle():Number{
		return _angel;
	}
	public function set angle(value:Number):void {
		var _2PI:Number = 2 * Math.PI;
		while (value < 0) {
			value += _2PI;
		}
		while (value > _2PI) {
			value -= _2PI;
		}
		
		_angel = value;
		
		var num:int = currentMotion.wc2.wc3.totalFrames;
		var delta:Number = 2 * Math.PI / num;
		var f:int = Math.round((_angel) / delta);
		currentMotion.wc2.wc3.gotoAndStop(f);
	}
	
	public function get initialized():Boolean { return _initialized; }
}