forked from: forked from: Checkmate vol.5 Professenal
forked from forked from: Checkmate vol.5 Professenal (diff: 258)
♥0 |
Line 204 |
Modified 2009-11-16 00:12:35 |
MIT License
archived:2017-03-20 17:14:19
| (replaced)
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; }
}