/** * 敵の画像です。1匹しかいません。 * 気力があったら、追加します。 */ package { import flash.display.Sprite; import flash.events.*; [SWF(width="465", height="465", frameRate="30", backgroundColor="0x000000")] public class Main extends Sprite { //こんな画像も用意しました。(全部入り) // http://flash-scope.com/wonderfl/WonderflQuest/shikabane/shikabaneAll.png private const shikabaneImgList:Array = [ "http://flash-scope.com/wonderfl/WonderflQuest/shikabane/shikabaneF1.png", //前向き1 "http://flash-scope.com/wonderfl/WonderflQuest/shikabane/shikabaneF2.png", //前向き2 "http://flash-scope.com/wonderfl/WonderflQuest/shikabane/shikabaneB1.png", //後ろ向き1 "http://flash-scope.com/wonderfl/WonderflQuest/shikabane/shikabaneB2.png", //後ろ向き2 "http://flash-scope.com/wonderfl/WonderflQuest/shikabane/shikabaneL1.png", //左向き1 "http://flash-scope.com/wonderfl/WonderflQuest/shikabane/shikabaneL2.png", //左向き2 "http://flash-scope.com/wonderfl/WonderflQuest/shikabane/shikabaneR1.png", //右向き1 "http://flash-scope.com/wonderfl/WonderflQuest/shikabane/shikabaneR2.png" //右向き2 ]; private var shikabane:Party; private var keyFlags:Array = [false, false, false, false]; //下上左右のキーが押されているか private var frameCount:Number = 0; //onEnterFrameで使用 public function Main():void { shikabane = new Party(shikabaneImgList); shikabane.scaleX = shikabane.scaleY = 3; shikabane.x = (465-48)/2; shikabane.y = (465-48)/2; addChild(shikabane); addEventListener(Event.ENTER_FRAME, onEnterFrame);//イベントリスナーの登録 stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); //イベントリスナーの登録 stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); //イベントリスナーの登録 } /**----------------------------------------------------- * 毎フレームの処理。 * ----------------------------------------------------- */ private function onEnterFrame(event:Event):void { //15フレーム毎に処理する if (frameCount++ > 10) { frameCount = 0; shikabane.walk(); } switch(true) { case keyFlags[0]: //下 shikabane.changeDirection(0); break; case keyFlags[1]: //上 shikabane.changeDirection(1); break; case keyFlags[2]: //左 shikabane.changeDirection(2); break; case keyFlags[3]: //右 shikabane.changeDirection(3); break; } } /**----------------------------------------------------- * キーボードのキーが押された時の処理。 * ----------------------------------------------------- */ private function onKeyDown(event:KeyboardEvent):void { switch(event.keyCode) { case 40: case 83: //↓ s keyFlags[0] = true; } switch(event.keyCode) { case 38: case 87: //↑ w keyFlags[1] = true; } switch(event.keyCode) { case 37: case 65: //← a keyFlags[2] = true; } switch(event.keyCode) { case 39: case 68: //→ d keyFlags[3] = true; } } /**----------------------------------------------------- * キーボードのキーが離された時の処理。 * ----------------------------------------------------- */ private function onKeyUp(event:KeyboardEvent):void { switch(event.keyCode) { case 40: case 83: //↓ s keyFlags[0] = false; } switch(event.keyCode) { case 38: case 87: //↑ w keyFlags[1] = false; } switch(event.keyCode) { case 37: case 65: //← a keyFlags[2] = false; } switch(event.keyCode) { case 39: case 68: //→ d keyFlags[3] = false; } } } } import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; /**----------------------------------------------------- * 勇者クラスです。勇者を作ったり、足踏させたり、向きを変えたりします。 * ----------------------------------------------------- */ class Party extends Sprite { public var direction:int = 0; //向き (0:前 1:後 2:左 3:右) private var walkFlag:Boolean = true;//足踏み用 private var yuushaImages:Array = [];//画像集 private var ImageURL:Array; /**----------------------------------------------------- * コンストラクタ。 * ----------------------------------------------------- */ public function Party(imgList:Array):void { ImageURL = imgList; for (var i:uint = 0; i < 8; i++) { var loader:Loader = new Loader(); loader.load(new URLRequest(ImageURL[i])); yuushaImages.push(loader); if(i) yuushaImages[i].visible = false; addChild(yuushaImages[i]); } } /**----------------------------------------------------- * 足踏みさせます。 * ----------------------------------------------------- */ public function walk():void { walkFlag = !walkFlag; for (var i:uint = 0; i < 8; i++) { if (i == 2*direction+int(walkFlag)) yuushaImages[i].visible = true; else yuushaImages[i].visible = false; } } /**----------------------------------------------------- * 向きを変更します。 * numは向きを表します。(0~3) * ----------------------------------------------------- */ public function changeDirection(num:int):void { direction = num; for (var i:uint = 0; i < 8; i++) { if (i == 2*direction+int(walkFlag)) yuushaImages[i].visible = true; else yuushaImages[i].visible = false; } } } Enemy