スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

flashCS3 練習めも キャラを動かす。

以前「キーの同時押しで斜め移動ができないレベル」と書いたけど、
一応自分なりにやり方を見出したので書きます。

方針としては、キー操作時にフラグを立てたり潰したりする。
要するに、キーを押したときにフラグを立て、キーを離したときにフラグを潰す。
そしてフラグが立っている間EnterFrameで移動させる、というもの。

とりあえずキャラ動かすクラスをいろいろな資料を参考に作ってみる。

package {
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
public class chrmove {
var keyflg:int = 0;
const KY_U:int = 0x01;
const KY_D:int = 0x02;
const KY_R:int = 0x04;
const KY_L:int = 0x08;
var chara:MovieClip;
var d:uint = 5;
var dx:int = 0;
var dy:int = 0;
var w:uint=0;
var h:uint=0;
//コンストラクタ
public function chrmove(mc:MovieClip) {
chara = mc;
w=chara.stage.stageWidth;
h=chara.stage.stageHeight;
mc.stage.addEventListener(KeyboardEvent.KEY_DOWN,kdwn);
mc.stage.addEventListener(KeyboardEvent.KEY_UP,kup);
mc.stage.addEventListener(Event.ENTER_FRAME,mv);
}
//
function kdwn(event:KeyboardEvent):void {
if (event.keyCode == Keyboard.UP) {
keyflg |= KY_U;
}
if (event.keyCode == Keyboard.DOWN) {
keyflg |= KY_D;
}
if (event.keyCode == Keyboard.RIGHT) {
keyflg |= KY_R;
}
if (event.keyCode == Keyboard.LEFT) {
keyflg |= KY_L;
}
}
function kup(event:KeyboardEvent):void {
if (event.keyCode == Keyboard.UP) {
keyflg &= ~KY_U;
}
if (event.keyCode == Keyboard.DOWN) {
keyflg &= ~KY_D;
}
if (event.keyCode == Keyboard.RIGHT) {
keyflg &= ~KY_R;
}
if (event.keyCode == Keyboard.LEFT) {
keyflg &= ~KY_L;
}
}
function mv(event:Event):void {
if (keyflg & KY_U) {
dy =-d;
} else if (keyflg & KY_D) {
dy =d;
} else {
dy=0;
}
if (keyflg & KY_R) {
dx =d;
} else if (keyflg & KY_L) {
dx =-d;
} else {
dx=0;
}
chara.x+=dx;
chara.y+=dy;
if (chara.x <0) {
chara.x=0;
} else if (chara.x > w) {
chara.x =w;
}
if (chara.y <0) {
chara.y=0;
} else if (chara.y > h) {
chara.y =h;
}
}
}
}

フラグの立て方、潰し方はHakuhin's HomePageさんの論理演算についてというコンテンツを参考にしています。

次にflaファイルの方。
メインフレームに次の一文を。

var tst:chrmove = new chrmove(ply);


最後にステージ上に適当なムービークリップを置いてplyと名前を付けます。

そうやってパブリッシュしたものがこれ
矢印キーで動かします。

ちゃんと斜めに移動できてるよね。
どうも境界を越えて移動しないようにしてる部分が失敗してるぽいけど、まあ一応やりたいことはできた。
これはほんと基本的な部分だけど、ここからあれこれ応用が利くと思う。
よし、キー操作はこの方針で行こう。

(追記)
置き場の方も更新しますた。
ほぼ全く同じことを書いてるだけだけど、このブログで見るよりは見やすいかもしれません。
関連記事
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

oisu-

Author:oisu-
趣味はゲームと深夜アニメ実況。
絵を描いたりFlashゲーを作ったりもするけど、一つのことにのめり込むと他のことがおざなりになるので結局あまり成果が出ない。その上根気が続かないのですぐ飽きる人。

pixivb

FC2カウンター
検索フォーム
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
円卓の生徒
円卓の生徒応援バナー

XBOX360用ダンジョンRPG『円卓の生徒』を全力で支援中!
Twitter

Twitter Updates

    follow me on Twitter
    広告
    円卓の生徒応援バナー


    ここからアフィ注意
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。