• ベストアンサー

_rootにある変数への、MCの中のボタンからパスで困っています

いつも、ありがとうございます。ずっと悩んでいます。 _rootのフレームにnrbという変数を作り、if(nrb < 1)で処理を分けることにしました。 _root上にtateというMCがあり、その中のボタンtate01をクリックすると変数nrbに1が入るようにしたいのですが、相対パスで_parent.nrb = 1としても、絶対パスで_root.nrb = 1としても、root上の変数nrbの値が変わってくれません。パスの書き方に間違いがあるのではと、いろいろ試してみましたが、うまくいきません。 よろしく、お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.1

実際にMCもボタンも作ってやってみました。 しかし, ---------------------- on (release) { _root.nrb = 1; } ---------------------- と書いても, ---------------------- on (release) { _parent.nrb = 1; } ---------------------- と書いても,_root の nrb という変数にはちゃんと1が入りました。 >> if(nrb < 1)で処理を分けることにしました。 と書かれている部分が気になったのですが, 具体的に言うとボタンに以下のように書くということでしょうか? ---------------------- on (release) { if (_root.nrb<1) { _root.nrb = 1; } } ---------------------- もし,そうだとすると, _root.nrb<1 が判断されていないのではないでしょうか。 ただ変数名の付いたテキストフィールドを用意するとか, なにも用意せずに,いきなり変数を if (_root.nrb<1) としても, nrb には実際何も数が入っていないので,上の if は通らない可能性があります。 trace(nrb); でムービープレビューしてみると,変数に何も値が入っていない場合 undefined とか _level0.nrb とかが表示されると思います。 undefined も _level0.nrb も 1より小さい数ではないので, if が通らないのではないでしょうか? もしそうだとしたら,フレームのスクリプトなどで, nrb = 0; とセットしておいて,_root.nrb<1 で判断させればうまく行くかもしれません。 おそらく,本当は難しいことをされていて,それをこちら側が理解しやすいように,簡略化させて質問されているのだと思います。 だから,他に原因があるかもしれない単なる推測です。

Flash-love
質問者

お礼

試してくださったり、いろいろ、ありがとうございました。 なんとか、解決しました。

Flash-love
質問者

補足

困っているところを早速、お返事くださってありがとうございます。nrb = 0;と1フレーム目にしているのですが、うまくいきません。

その他の回答 (2)

  • perse
  • ベストアンサー率74% (113/152)
回答No.3

nrb=1とするボタンや、if文の判定前に trace("if文の前 : " + _root.nrb ) 等と記述してそこを通っているのか確認してみては?

Flash-love
質問者

お礼

アドバイス、ありがとうございました。 なんとか、解決しました。

Flash-love
質問者

補足

ありがとうございます。trace入れてたのですが、ボタンでは通っているのにif文の前では通っていなかったのでパスの書き間違いかと思っていました。ボタンを_root上に出して、試してみましたがだめだったので、フレームの取り方の問題のような気がしてます。1フレ目にrnb=0、2フレ目にif文など、3フレ目にstopです。

noname#35109
noname#35109
回答No.2

#1です。 うまく行きませんか。 では,私としては最後の推測。 もし,テキストフィールドがある場合, なおかつテキストフィールドに変数名でnrbと付けてあるのではなく,インスタンス名としてnbrと付けてある場合 フレーム1 ------------------ _root.nrb.text = 0; ------------------ MC内のボタン ------------------ on (release) { if (_root.nrb.text<1) { _root.nrb.text = 1; } } ------------------ これではどうでしょうか? もともとテキストフィールドもインスタンス名なども付けていなければ, 上のように書いても無駄なのですけどね。 ムムムム… これ以外はわかりません。

Flash-love
質問者

補足

質問を細かく書ける文字数がたりないので、推測でお答えいただいてすみません。if(nrb < 1)とあるのは、フレームスクリプトで、変数で横エリア縦エリアにわけます。縦ボタンクリックで変数に1が入り、縦エリア入力にしたいのです。

関連するQ&A

専門家に質問してみよう