トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     斜めに移動しながら、弾を出す
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
gaienboy
Åê¹ÆNo.37341
投稿日時: 2008-1-25 18:52
職人
居住地: 東京・神宮前
投稿: 717
使用環境:
Re: 斜めに移動しながら、弾を出す
こんにちは、gaienboyです。

引用:
10-feetさんは書きました:
お手すきな方がいましたら、どの部分がまずいのかご指摘もらえないでしょうか?

まずい、というか、意図通りの動きになっていないのだとしたら、まずはどこにそ
の原因があるかというのを突き止めることが大事です。文末にご自分でも「切り分
けて載せるのが自分でも良いと思うのですが何処が間違っているかわからない状態
なのでほとんど載せてます。」と書かれていますが、「どこがまずい≒間違ってい
る≒原因となっている」かがわかれば、自然と掲載するスクリプトの量も減ります。

で、原因の見つけ方についてですが、これはとにかく処理を細かく切り分けて、最
小限の構成から一つ一つの処理が正しく行われているかどうかを地道に調べていく
のが確実です。

例えば今回のケースであれば、複数のキーを同時に押下しているので、その判定の
過程で不具合が起こっているのではないかと思います。なので、私ならば

1.十字キー押下の判定が正しく処理できているか調べる

onClipEvent(enterFrame){
    trace("判定開始-----------");
    if (  (Key.isDown(Key.UP) && Key.isDown(Key.LEFT)) == true ) {
        trace("UP+LEFT");
    }
    else if ((Key.isDown(Key.DOWN) && Key.isDown(Key.LEFT)) == true ) {
        trace("DOWN+LEFT");
    }
    else if ((Key.isDown(Key.UP)  && Key.isDown(Key.RIGHT)) == true ) {
        trace("UP+RIGHT");
    }
    else if ((Key.isDown(Key.DOWN) && Key.isDown(Key.RIGHT)) == true ) {
        trace("DOWN+RIGHT");
    }
    else if( Key.isDown( Key.UP ) == true ){
        trace("UP");
    }
    else if( Key.isDown( Key.DOWN ) == true ){
        trace("DOWN");
    }
    else if( Key.isDown( Key.RIGHT ) == true ){
        trace("RIGHT");
    }
    else if( Key.isDown( Key.LEFT ) == true ){
        trace("LEFT");
    }
    else{
        trace("NONE");
    }
    trace("判定終了-----------");
}

2.スペースキー押下の判定が正しく処理できているか調べる

onClipEvent(enterFrame){
    trace("判定開始-----------");
    if ( Key.isDown(Key.SPACE) == true){
        trace("SPACE");
    }
    trace("判定終了-----------");
}

3.十字キー+スペースキー押下の判定が正しく処理できているか調べる

onClipEvent(enterFrame){
    trace("判定開始-----------");
    if ( Key.isDown(Key.SPACE) == true){
        trace("SPACE");
    }
    if (  (Key.isDown(Key.UP) && Key.isDown(Key.LEFT)) == true ) {
        trace("UP+LEFT");
    }
    else if ((Key.isDown(Key.DOWN) && Key.isDown(Key.LEFT)) == true ) {
        trace("DOWN+LEFT");
    }
    else if ((Key.isDown(Key.UP)  && Key.isDown(Key.RIGHT)) == true ) {
        trace("UP+RIGHT");
    }
    else if ((Key.isDown(Key.DOWN) && Key.isDown(Key.RIGHT)) == true ) {
        trace("DOWN+RIGHT");
    }
    else if( Key.isDown( Key.UP ) == true ){
        trace("UP");
    }
    else if( Key.isDown( Key.DOWN ) == true ){
        trace("DOWN");
    }
    else if( Key.isDown( Key.RIGHT ) == true ){
        trace("RIGHT");
    }
    else if( Key.isDown( Key.LEFT ) == true ){
        trace("LEFT");
    }
    else{
        trace("NONE");
    }
    trace("判定終了-----------");
}

これでもし右上を押したときにスペースを押して

判定開始-----------
SPACE
UP+RIGHT
判定終了-----------

とtraceされるのに、右下を押したときに

判定開始-----------
SPACE
DOWN+RIGHT
判定終了-----------

とtraceされないのであれば、このキー押下判定周りがあやしいということになり
ます。そうでなければ、他の処理(角度や位置の計算、弾丸の発射、弾丸の発射可
能状態の判定などなど)がまずい、という可能性が高いです。

長々となりましたが、このように処理を小分けにして試してみて下さい。

■追記
長々と書いておいてこんなこと言うのもなんですが、「flash キー 同時押し」で
Google検索かけたら、下記のページがヒットしました。ページ下の方にある
「同時に押せないキー」を読んでみて下さい。(それ以外の箇所も非常に参考に
なるので、読んでみることをおすすめします)


しっぽのブログ: コツのお話その5 インターフェース キー編


----------------
Tonpoo (a.k.a. gaienboy)
Tonpoo.com / TONPOOBLOG / twitter@tonpootwit

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   斜めに移動しながら、弾を出す 10-feet 2008-1-25 16:56
   » Re: 斜めに移動しながら、弾を出す gaienboy 2008-1-25 18:52
       Re: 斜めに移動しながら、弾を出す 10-feet 2008-1-25 19:41
         Re: 斜めに移動しながら、弾を出す 10-feet 2008-1-28 12:25
           Re: 斜めに移動しながら、弾を出す gaienboy 2008-1-28 12:50
             Re: 斜めに移動しながら、弾を出す 10-feet 2008-1-28 14:30

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops