Enemy
敵の画像です。1匹しかいません。
* 気力があったら、追加します。
/**
* Copyright osamX ( http://wonderfl.net/user/osamX )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/pImw
*/
/**
* 敵の画像です。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;
}
}
}