• 締切済み

goto文が動かない orz

お世話になります、Flash8超初級ユーザーです。 if~goto命令がまったく効かない、という酷い内容で書きこませて頂きました・・・; とはいえ、今まで何百フレームも使ってきた簡単な命令が、一箇所だけ完全にスルーされてしまう 状況で、原因がまったく見えず困惑しきっております。 メインムービーに、アニメーションするキャラクターのMCと、エフェクトのMC、あとボタンが 配置されているシーンです。 ボタンを押す度に変数"genki"が増えていき、100%になると大暴れ、その後3回ボタンを押すと オーバーヒートしてしまう、というショボイ内容です・・・ 下がボタンのアクションスクリプトなのですが、 1 on(press){ 2    if(_root.genki >= 99){ 3       if(_root.genki >= 100){ 4          _root.maxgenki = 100; 5          _root.maxgover++; 6          if(_root.maxgover >= 3){ 7             gotoAndStop("元気_OH"); 8          } 9          gotoAndStop("元気_MAX超え"); 10       }else{ 11          gotoAndStop("元気_MAX"); 12       } 13    }else{ 14       gotoAndStop("元気"); 15    } 16 } 17 on(release){      ・      ・      ・      ・      ・ genki = キャラクターの動作速度を決めています(今回は100%判定のときの話のみですが) maxgenki = エフェクトの大きさを決めています(〃) maxgover = genkiが100%になると増えていく、オーバーヒート判定用の変数です。 ムービー全体のごく一部分なので、数値など不明瞭な点もあるかと思いますが・・・ 説明の必要は全く無いような簡単なスクリプトですが、この6,7行目の「"maxgover"が3かそれ以上 のとき、"元気_OH"フレームに移動する」という部分が全く機能せず、3未満のときの"元気_MAX超え" フレームに飛ぶ状態のままになってしまいます。 以下、いろいろ試したのですが・・・、 ・ダイナミックテキストで表示してみると、maxgoverの数値はちゃんと増えていました。 ・どこかに"MAX超え"に強制的に飛ばすようなスクリプトでも誤記入したかとも思い、9行目を"OH"に  変えてみたところ、そこではあっさり移動できました。 ・6,7行目の命令を4,5行目、MC内や、他の場所に移動して単品で記述しても動いてくれません。 ・試しに4行目を「_root.maxgenki += 34;」として、6行目を「maxgenki >= 100」と入れ替えても飛んで  くれません。 他にも、変数名を変えてみたり悪足掻きはしてみたのですが、まったくダメでした・・・ 誤表記などのポカミスであった可能性も、これだけ書き換えて一度も動いてくれないので薄いかと・・・ ムービー全体を見なければ答えは見つからないかもしれませんが、ここに記した範囲でどこかミスは ないでしょうか? どなたかご指導ください・・・ orz

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

何かよくわかりませんが,ここが変ですよ↓。 > 6          if(_root.maxgover >= 3){ > 7             gotoAndStop("元気_OH"); > 8          } > 9          gotoAndStop("元気_MAX超え"); もし _root の変数 maxgover が 3 以上である場合, "元気_OH" というフレームラベルの付いたフレームに進みますが, 問題なのはその後です。 > 9          gotoAndStop("元気_MAX超え"); これで, _root の変数 maxgover が 3 以上であってもなくても, "元気_MAX超え" というフレームラベルの付いたフレームに進みます。 つまり, > 6          if(_root.maxgover >= 3){ > 7             gotoAndStop("元気_OH"); > 8          } という分岐は無意味です。 ボタンをプレスしたときに, > 3       if(_root.genki >= 100){ という条件を満たしていれば, どんな状況でも gotoAndStop("元気_MAX超え"); が動作します。 ================ ◎条件1:マウスでボタンなどをプレスしたとき on(press){   ◎条件2:なおかつ, _root の変数 genki が 99 以上で   _root.genki >= 99     ◎条件3:なおかつ,_root の変数 genki が 100 以上で     _root.genki >= 100       ◎条件4:なおかつ,_root の変数 maxgover が 3 以上で       _root.maxgover >= 3         ↓元気_OH フレームに進む         gotoAndStop("元気_OH");     ◎条件3:_root の変数 genki が 100 以上であればどんな状況でも     ↓元気_MAX超え フレームに進む     gotoAndStop("元気_MAX超え");

MSX3
質問者

お礼

丁寧なご説明ありがとうございます(><) よくわからない内容で 申し訳ないです; その手の、命令文の優先順位などは正直手探りで進めているもので・・・ もう一度、アドバイスを参考にして組みなおしてみます。 一度、今あるon(press)命令の前にもうひとつon(press)を置いて、 "元気_OH"へのif~goto文を移動してみたんですが、やっぱりダメ だったんですけれど・・・ 二重にon(press)を置いたのがいけなかったんでしょうかね?^^; もう少し、色々試してみます。

関連するQ&A

専門家に質問してみよう