質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • JavaScript

    20863questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Flash

    79questions

    Flashは、Webページにアニメーション、ビデオ、また対話型のアプリケーションを埋め込むためにAdobe社が提供しているクロスプラットフォームのインターネットマルチメディアランタイムです。

  • ActionScript 3

    52questions

    ActionScript 3 (AS3)はAdobe FrashとAIRプラットフォームによる、オープンソースかつオブジェクト指向のプログラミング言語です。AS3はRIA、モバイルアプリケーション、デスクトップアプリケーションなど広く使われます。

switch文による分岐が上手くいきません。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 190

aaachi

score 42

switch文による分岐が上手くいかず、
質問させて頂きます。
※actionscript3.0ですが、switch文が分かる方でしたら大丈夫かと思います。

▽このような並びのイメージ
A1↔B1
↕   ↕
A2↔B2
↕   ↕
A3↔B3

//_changeFocus()は、十字キーを押すと呼び出される仕組み(確認済み)
protected function _changeFocus():void
        {
            trace("_paramFocus_pre = " + _paramFocus);
            switch(_keyDirection)
            {
                case "UP":
                    switch(_paramFocus)
                    {
                        case "A1": _paramFocus = "A1";    break;
                        case "A2": _paramFocus = "A1";    break;
                        case "A3": _paramFocus = "A2";    break;
                        case "B1": _paramFocus = "B1";    break;
                        case "B2": _paramFocus = "B1";    break;
                        case "B3": _paramFocus = "B2";    break;
                    }
                case "DOWN":
                    switch(_paramFocus)
                    {
                        case "A1": _paramFocus = "A2";    break;
                        case "A2": _paramFocus = "A3";    break;
                        case "A3": _paramFocus = "A3";    break;
                        case "B1": _paramFocus = "B2";    break;
                        case "B2": _paramFocus = "B3";    break;
                        case "B3": _paramFocus = "B3";    break;
                    }
                case "LEFT":
                    switch(_paramFocus)
                    {
                        case "A1": _paramFocus = "A1";    break;
                        case "A2": _paramFocus = "A2";    break;
                        case "A3": _paramFocus = "A3";    break;
                        case "B1": _paramFocus = "A1";    break;
                        case "B2": _paramFocus = "A2";    break;
                        case "B3": _paramFocus = "A3";    break;
                    }
                case "RIGHT":
                    switch(_paramFocus)
                    {
                        case "A1": _paramFocus = "B1";    break;
                        case "A2": _paramFocus = "B2";    break;
                        case "A3": _paramFocus = "B3";    break;
                        case "B1": _paramFocus = "B1";    break;
                        case "B2": _paramFocus = "B2";    break;
                        case "B3": _paramFocus = "B3";    break;
                    }
                trace("_paramFocus = " + _paramFocus);
         }
}    
//出力
Main._keyDownHandler(e.keyCode= 38 ) 
_keyDirection = UP
_paramFocus_pre = A1
_paramFocus = B2
Main._keyDownHandler(e.keyCode= 40 ) 
_keyDirection = DOWN
_paramFocus_pre = B2
_paramFocus = B3
Main._keyDownHandler(e.keyCode= 40 ) 
_keyDirection = DOWN
_paramFocus_pre = B3
_paramFocus = B3
Main._keyDownHandler(e.keyCode= 40 ) 
_keyDirection = DOWN
_paramFocus_pre = B3
_paramFocus = B3
Main._keyDownHandler(e.keyCode= 40 ) 
_keyDirection = DOWN
_paramFocus_pre = B3
_paramFocus = B3
Main._keyDownHandler(e.keyCode= 37 ) 
_keyDirection = LEFT
_paramFocus_pre = B3
_paramFocus = B3
Main._keyDownHandler(e.keyCode= 37 ) 
_keyDirection = LEFT
_paramFocus_pre = B3
_paramFocus = B3
Main._keyDownHandler(e.keyCode= 37 ) 
_keyDirection = LEFT
_paramFocus_pre = B3
_paramFocus = B3
Main._keyDownHandler(e.keyCode= 39 ) 
_keyDirection = RIGHT
_paramFocus_pre = B3
_paramFocus = B3
Main._keyDownHandler(e.keyCode= 39 ) 
_keyDirection = RIGHT
_paramFocus_pre = B3
_paramFocus = B3
Main._keyDownHandler(e.keyCode= 38 ) 
_keyDirection = UP
_paramFocus_pre = B3
_paramFocus = B3
Main._keyDownHandler(e.keyCode= 38 ) 
_keyDirection = UP
_paramFocus_pre = B3

おかしい挙動がありつつも、1、2、3と、下がっていくことはできるのですが、
B3にたどり着いたあと、上下左右どちらに入力しても、B3のままになってしまいます、、

switchを、_paramFocusとdirectionを逆にして書いてみたり、色々検証してみたのですが、
わからなかったので、どなたかお助け頂けると幸いです、、

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

質問文だけではどうしたいのか、どこがうまくいかないのか特定しきれませんでしたが、
とりあえず外側のswitch 文の break; が抜けていると思います。

みにくくなりがちなので、switch はあまりネストしないほうが……

単純に格子状に並んでいる座標間を移動するだけなら、全パターン列挙するよりは
現状のx座標、y座標を保持して、上限、下限まで座標の加減算で処理する形のほうがミスも少なくてスマートかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/10 21:33

    申し訳ありません、質問が途中で投稿されてしまいました。
    外側のbreak;見落としていました💦 試してみます。

    キャンセル

  • 2018/09/10 21:36

    まさに、break;のモレが原因でした!!
    かなり詰まってました、、
    R.Mizukami様、どうもありがとうございました。。。。!感謝です。

    後半文章も参考にさせて頂きます。!

    キャンセル

+1

キーに抜けがないような整ったデータならオブジェクトにしちゃうのが
参照しやすい

const _keyDirection="UP";
const _paramFocus="A1";
const obj={
  "UP"   :{"A1":"A1","A2":"A1","A3":"A2","B1":"B1","B2":"B1","B3":"B2"},
  "DOWN" :{"A1":"A2","A2":"A3","A3":"A3","B1":"B2","B2":"B3","B3":"B3"},
  "LEFT" :{"A1":"A1","A2":"A2","A3":"A3","B1":"A1","B2":"A2","B3":"A3"},
  "RIGHT":{"A1":"B1","A2":"B2","A3":"B3","B1":"B1","B2":"B2","B3":"B3"},
};
console.log(obj[_keyDirection][_paramFocus]);

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • JavaScript

    20863questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Flash

    79questions

    Flashは、Webページにアニメーション、ビデオ、また対話型のアプリケーションを埋め込むためにAdobe社が提供しているクロスプラットフォームのインターネットマルチメディアランタイムです。

  • ActionScript 3

    52questions

    ActionScript 3 (AS3)はAdobe FrashとAIRプラットフォームによる、オープンソースかつオブジェクト指向のプログラミング言語です。AS3はRIA、モバイルアプリケーション、デスクトップアプリケーションなど広く使われます。