
else if文の順序を変えることに意味がありますか?
「スプライトに記述したクリップアクションです。
実行される内容はどうでも良いのですが、
else if文の順序を変えることに意味がありますか?」
×(2)の部分だけが実行されません。
onClipEvent (enterFrame) {
if (_root.get_tabaco == false ){
this.gotoAndPlay(4);
(1) }else if(_root.get_tabaco ==true){
this.gotoAndPlay(1);
(2) }else if(_root.state_tabaco == 2){
this.gotoAndPlay(5);
}
}
○全て実行されます。
onClipEvent (enterFrame) {
if (_root.get_tabaco == false ){
this.gotoAndPlay(4);
(2) }else if(_root.state_tabaco == 2){
this.gotoAndPlay(5);
(1) }else if(_root.get_tabaco ==true){
this.gotoAndPlay(1);
}
}
「(1)と(2)の順序を変えただけで正しく実行されるようになりました。
しかし、なぜ?上手くいったのか、どこが間違いなのか分かりません。
else ifに順序なんかあるんでしょうか?
こられのスクリプトに違いがありましたら、教えていただけませんか?」
No.2ベストアンサー
- 回答日時:
if A ~ else if B~ else if C~.... は先頭から順番に評価しますから、とうぜん、順番に意味があります。
また、条件式には書かないことが多いですが、「直前までのifの条件が不成立で、かつ」という 条件が付いてます。
上の例なら
else if B → if !A and B
else if C → if !A and !B and C
です。順番が変われば条件も変わってくることが解ると思います。
それをふまえてこのスクリプトを見ると
A: _root.get_tabaco == false
B: _root.get_tabaco == true
C: _root.state_tabaco == 2
です。
ここで、A,Bに注目すると、通常、 a != false ⇔ a==true です。
つまり、 Aが成り立たなければ、必ずBが成り立ちます。
A→B→Cの順番で評価したら、 AかBかでどちらかが必ず成立つので、Cまで進むことはありません。
A→C→Bの順番で評価したら、 Bを評価する前にCを評価するので、Cの条件での判定ができます。
ついでにいうと、「○全て実行されます。」の方の最後の「else if(_root.get_tabaco ==true)」は条件が成立つことが明かなので、 else だけで十分です。
No.4
- 回答日時:
もちろん大きな意味があります。
else if(~) は 「それ以外で、もし~なら」ですよね。
_root.get_tabaco は true か false で判定すれば、そのどちらかしかないわけですから、
2の場合はもちろんtrue なので、else if(A==2){ に行く前に
else if(A==true) で該当してしまいます。
■ダメな場合
if( A == false){
//falseの場合ここで処理されて終わり。
}else if(A==true){
//trueの場合ここで処理されて終わり。2もここで該当。
//※結局、どんな値でもtrueかfalseに該当するので、これ以降に進むことはない。
}else if(A==2){
//それ以外で 2 の場合、だが 2はtrueですでに上で該当済み
}
■うまくいった場合
if( A == false){
//falseの場合ここで処理されて終わり。trueの場合は下へ続く
}else if(A==2){
//trueでも 2 の場合のみココで処理される
}else if(A==true){
//それ以外で…つまり 2 以外で trueの場合はココヘ来る。
}
No.1
- 回答日時:
_root.get_tabacoはfalseでなければtrueに決まっているので、前者では最初の判定(==false)か次の判定(==true)のいずれかに必ずヒットしてしまいます。
ifの分岐はどれか一つに当たった時点で終わりなので、このときに最後の判定に入ることは絶対にありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript javascriptでif文と配列を組み合わせて運賃プログラムを完成させたいです。 1 2022/07/03 14:20
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パーセントで配置したフラッシ...
-
ランダムな動きのスピード制御...
-
「XEON」って何て読むのですか?
-
経過時間を計るには
-
既に配置されているMCを外部か...
-
1フレーム~5フレームまで表...
-
PythonでSetWindowPosを使うに...
-
線と点の当り判定
-
レーダーチャートの描画
-
行動によって実行する指示と実...
-
acttionscript2.0から3.0へ。。...
-
ムービークリップボタンの連動?
-
スクロール処理(早急にお伺い...
-
jakartaというネーミングは一体...
-
Flash着せ替え用アクションスク...
-
始めたばかりのVCで
-
Flashで恋愛ゲームを作りたいの...
-
VBAでホームページからコピーし...
-
flash 計算機について
-
FlashでXMLを読み込んだ際の関...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python ボタンを押すと複数の関...
-
四乗根を英語で言うと・・・
-
PythonでSetWindowPosを使うに...
-
else if文の順序を変えることに...
-
SNMPの標準MIBについて
-
スライドショーの制御
-
Pythonを使ってせん断応力図、...
-
レーダーチャートの描画
-
FlashCS5 ActionScript2.0で3...
-
ADに参加していないPCからADサ...
-
addchildからrootに命令
-
pythonの画像の貼り付けについて
-
C++インタプリタを探してます
-
複数の外部SWFの読み込みする場...
-
node* ってなんなのでしょうか?
-
クリックされたインスタンス以...
-
acttionscript2.0から3.0へ。。...
-
ムービーをクリックしてボタン...
-
スライドショーのフェードイン...
-
goto文が動かない orz
おすすめ情報