アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります、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

A 回答 (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超え");
    • good
    • 0
この回答へのお礼

丁寧なご説明ありがとうございます(><) よくわからない内容で
申し訳ないです;
その手の、命令文の優先順位などは正直手探りで進めているもので・・・
もう一度、アドバイスを参考にして組みなおしてみます。

一度、今あるon(press)命令の前にもうひとつon(press)を置いて、
"元気_OH"へのif~goto文を移動してみたんですが、やっぱりダメ
だったんですけれど・・・
二重にon(press)を置いたのがいけなかったんでしょうかね?^^;
もう少し、色々試してみます。

お礼日時:2008/08/30 22:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!