- ベストアンサー
_rootにある変数への、MCの中のボタンからパスで困っています
いつも、ありがとうございます。ずっと悩んでいます。 _rootのフレームにnrbという変数を作り、if(nrb < 1)で処理を分けることにしました。 _root上にtateというMCがあり、その中のボタンtate01をクリックすると変数nrbに1が入るようにしたいのですが、相対パスで_parent.nrb = 1としても、絶対パスで_root.nrb = 1としても、root上の変数nrbの値が変わってくれません。パスの書き方に間違いがあるのではと、いろいろ試してみましたが、うまくいきません。 よろしく、お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
実際に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 で判断させればうまく行くかもしれません。 おそらく,本当は難しいことをされていて,それをこちら側が理解しやすいように,簡略化させて質問されているのだと思います。 だから,他に原因があるかもしれない単なる推測です。
その他の回答 (2)
- perse
- ベストアンサー率74% (113/152)
nrb=1とするボタンや、if文の判定前に trace("if文の前 : " + _root.nrb ) 等と記述してそこを通っているのか確認してみては?
お礼
アドバイス、ありがとうございました。 なんとか、解決しました。
補足
ありがとうございます。trace入れてたのですが、ボタンでは通っているのにif文の前では通っていなかったのでパスの書き間違いかと思っていました。ボタンを_root上に出して、試してみましたがだめだったので、フレームの取り方の問題のような気がしてます。1フレ目にrnb=0、2フレ目にif文など、3フレ目にstopです。
#1です。 うまく行きませんか。 では,私としては最後の推測。 もし,テキストフィールドがある場合, なおかつテキストフィールドに変数名でnrbと付けてあるのではなく,インスタンス名としてnbrと付けてある場合 フレーム1 ------------------ _root.nrb.text = 0; ------------------ MC内のボタン ------------------ on (release) { if (_root.nrb.text<1) { _root.nrb.text = 1; } } ------------------ これではどうでしょうか? もともとテキストフィールドもインスタンス名なども付けていなければ, 上のように書いても無駄なのですけどね。 ムムムム… これ以外はわかりません。
補足
質問を細かく書ける文字数がたりないので、推測でお答えいただいてすみません。if(nrb < 1)とあるのは、フレームスクリプトで、変数で横エリア縦エリアにわけます。縦ボタンクリックで変数に1が入り、縦エリア入力にしたいのです。
お礼
試してくださったり、いろいろ、ありがとうございました。 なんとか、解決しました。
補足
困っているところを早速、お返事くださってありがとうございます。nrb = 0;と1フレーム目にしているのですが、うまくいきません。