- 締切済み
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
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
何かよくわかりませんが,ここが変ですよ↓。 > 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超え");
お礼
丁寧なご説明ありがとうございます(><) よくわからない内容で 申し訳ないです; その手の、命令文の優先順位などは正直手探りで進めているもので・・・ もう一度、アドバイスを参考にして組みなおしてみます。 一度、今あるon(press)命令の前にもうひとつon(press)を置いて、 "元気_OH"へのif~goto文を移動してみたんですが、やっぱりダメ だったんですけれど・・・ 二重にon(press)を置いたのがいけなかったんでしょうかね?^^; もう少し、色々試してみます。