• ベストアンサー

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

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

  • Flash
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
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

  • AS3:ルートの変数とムービークリップ内の変数について

    AS3:ルートの変数とムービークリップ内の変数について ルートのタイムラインで設定した変数var RootVarがあるとして、これをあるムービークリップMCからMovieClip(root).RootVarで読み取って、MC内で何か処理をしたときMovieClip(root).RootVar++;とやってもルートのRootVarの値は変わりません。 例えば、 ■ルートのタイムライン1フレームに記述 var RootVar:uint; if(RootVar>=3){ trace("できた!!"); } ■ステージにあるムービークリップMCのタイムライン1フレームに記述 MovieClip(root).RootVar=0; var AddTimer:Timer = new Timer(1000,3); AddTimer.addEventListener(TimerEvent.TIMER,AddNum); AddTimer.start(); function AddNum(eventObject:TimerEvent):void { MovieClip(root).RootVar++; } ルートからムービークリップ、ムービークリップからルートへ変数に値を渡したり受け取ったりはできなのでしょうか? 変数の扱い方が問題なのでしょうか?よろしくお願いします。 環境:AS3、Flash CS4

    • ベストアンサー
    • Flash
  • MC内から_rootへのgotoAndPlay

    初めての投稿です。 宜しくお願い致しますm(__)m FlashCS3、AS2.0を利用です。 _rootで15個位のレイヤーに分け格レイヤーにMCを置き、その中でオブジェクトの制御を行うにホームページのトップ画面を作りました。 ASを1フレーム目に記述するとバグが発生する可能性があると聞いたので、 _rootのみASは2フレーム目に記述したので、ホームページのトップとしては_rootの2フレームしか使っていません。 _rootに swfの読み込み。 stop(); var loader = new MovieClipLoader (); loader.loadClip("Window_scroll.swf", _root.Window_Pic_MC); レイヤーの1つにmp3を読み込み、再生停止の制御を行うMC。 があります。 _rootにMC(1)があり、その中のMC(2)をボタンとして利用していて、 on (rollOver) { this._parent.swapDepths(95); this._parent.gotoAndPlay("n1"); } on (rollOut, releaseOutside) { this._parent.swapDepths(-1); this._parent.gotoAndPlay("n2"); } on (release) { _root.gotoAndPlay("m"); } とMC(2)に直接打ち込んでいます。 "m"が_rootの3フレームから10フレームまでで、 on (release)されるとMC(2)自体が小さくなるように モーショントゥーンで作っています。 そこで質問なのですが、 読み込んだswfの上に別レイヤーでWindowの枠があり、 MC(2)がon (release)時にswfの映像が消えて、 枠が大きくなる様にしたいのですが動いてくれません。 しかも swfも消えなく、小さくなったMC(1)を再度クリックすると 音が再度読み込まれ2重になって流れます。。。 この時微妙に枠が大きくなったり、アルファをかけてあるMC等の色が 濃くなったりするので、全てが2重になっているのかもしれません。 これはバグなのか。。。 長々とスミマセン!! 質問が多くなってしまったので、 _rootのMC(1)の中にあるMC(2)をon (release)した時、_rootにある枠が 大きくなる方法を教えて下さい。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • 変数が渡らない

    選択するための3つのボタンを作成し、それぞれ変数ansに値を格納しました。下記がそのActionScriptの例です。 ------------------------------- on(release){ ans=1; _root.nextFrame(); } ------------------------------- ボタンを押した後、別のレイヤーのフレームからMCを読み込みます。 しかし、ボタン内で格納した変数が読み込まれずundefined(未定義)となってしまいます。if文で分岐したいのですが出来ずに困っています。 ボタンをクリックすることで変数に格納した値を、ムービークリップのイベント内で読み込むことは可能でしょうか?

    • ベストアンサー
    • Flash
  • flashのMCの中にMCを入れてその中のボタンでシーンを移動したいのですができません

    flashの シーン1で大元になる5つのMCで構成された大元のMCにはonClipEvent (enterFrame)のスクリプトを記述しています。 その5つのMCの中、それぞれに、ボタンがあります。そのボタンはシーン1からシーン2に飛ばすアクションをつけているのですが、まったく反応しません。 なぜか、同一シーンのフレーム移動は反応するのですが。ボタンの記述は下記です。 on (release) { _parent._parent.gotoAndPlay("work", 1);

    • ベストアンサー
    • Flash
  • 外部SWFファイルの中のMCのgotoAndPlayによるタイムライン制御にすて

    Flash8&WinXPでの環境でオーサリングしております。 質問なのですが、 _root.mc1_1_mc.mc1_2_mcに外部SWFファイル v2.swfをloadMovieします。 _root.mc1_1_mcのフレームアクションに function gotoF(){ パス+gotoAndPlay("goto_nextF1"); } _global.goto_cnt=0; _root.mc2_1_mcのフレームアクションに if(_global.goto_cnt=='1'){ this._parent.gotoF(); } v2.swfの中のMC,v2_mc1_mc.v2_mc2_mcのフレームアクションに if(_global.goto_cnt==0){ this.gotoAndPlay("goto_nextF2"); } _global.goto_cnt2=1; とします。 上記どちらとも、何かトリガーを作っても 外部swf v2.swfのフレームラベル"goto_nextF1",フレームラベル"goto_nextF2"に フレームを移動させることができません。 _global.goto_cntも参照されていないようです。 function gotoF(){ パス+gotoAndPlay("goto_nextF1"); } のパスかスクリプトが間違っているのでしょうか? また、 if(_global.goto_cnt==0){ this.gotoAndPlay("goto_nextF2"); } では、traceしてデバッグしても _global.goto_cntを参照していません。 この逆、v2_mc1_mc.v2_mc2_mcのフレームアクション の_global.goto_cnt2=1; を_root.mc1_1_mc.mc1_2_mcのフレームアクションで if(_global.goto_cnt2==1){ trace("ok"); } としてトリガーを作り確認しても、 これもまた参照されません。 大変無知でいささか恐縮ですが、 どなたかご教授頂けませんでしょうか。 どうぞ宜しくお願い致します。

  • 【ActionScript】ムービークリップ間の変数の受け渡しのやり方は?

    ムービークリップ間の変数の受け渡しがいまいちわかりません。 例えば、 ・_root.mc1 及び、 ・_root.mc1.mc2 というインスタンスがあった場合、 _root.mc1.mc2 のフレームに a = 100; と書き、 _root.mc1 のフレームに trace(_root.mc1.mc2.a); と書いても「undifined」と出るだけです。 (上層の値を下層で受けることはできるんですが、この例のように下層→上層の受け渡しはできないのです。) どうすればインスタンス間の変数の受け渡しができるのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ボタンを押してもすぐ戻ってしまう・・・。

    1フレーム目に、 onEnterFrame = function():Void { if (_totalframes == _framesloaded) { gotoAndStop("snap"); } total = _root.getBytesTotal(); loaded = _root.getBytesLoaded(); percent = Math.floor(loaded/total*100); _root.bar_mc._xscale = percent; }; stop(); と記入し2フレーム目のフレームラベルをsnapに。 2フレーム目には、画像と次のフレームにいくボタンが置いてあります。 ボタンには、 on(press){ gotoAndStop(3); } と書いてあるのですが。 このボタンを押すと、確かに3フレーム目にいくのですが、すぐ2フレーム目に戻ってしまうんです。 初めてローディングバーをつけてみたので、間違いだらけかもしれないですがどうすればいいか教えてください><

    • ベストアンサー
    • Flash
  • Flash タイムライン上のMCへの移動

    おたずねします。 タイムラインの5フレームにあるムービクリップAを再生後、 タイムラインの2フレームにあるムービクリップBの 特定のフレームへ移動したいのですが、 パスの指定がうまいきません。 2フレームへの移動は _root.gotoAndPlay("2フレームのラベル名")で 移動できますが、そこに配置されたムービークリップの指定は どうすればいいのでしょうか。 _parentやthisを使用した 絶対パスや相対パスを調べましたが、どうもこの指定は 同フレーム上にある場合の指定のようなのかうまくいきませんでした。 それともこのような移動はできないのでしょうか。 教えていただけると大変助かります。 どうぞよろしくお願いいたします。

  • 対象MCを変数で指定

    Flash CS3(AS 2.0)で作成しています。 _rootにscというインスタンス名のMCを設置、 その中にp1~p4というインスタンス名のMCを配置しています。 p1~p4を参照する際に変数を使用したいのですがうまくいきません。 _root.sc.p1 だと _level0.sc.p1 が返ってきますが、 insname = "sc.p1" _root[insname] とすると undefined が返ってきます。 きちんと値を取得するにはどのように記述するのが正しいのでしょうか。

    • ベストアンサー
    • Flash
  • ムービークリップ内のボタン

    フラッシュ初心者です。 アクションスクリプトがうまく動かず困っています。 シーン1にムービークリップ1(インスタンス名:mc1)とムービークリップ2(インスタンス名:mc2)が置いてあります。 mc2の中にはボタンAを配置してあり、ボタンAをクリックすると、mc1のフレームラベル(B)に飛ぶような制御をしたいです。 ボタンAに記述してあるスクリプトは以下です。 on (release) { this._parent.mc1.gotoAndplay("B"); } しかしクリックしても全く動きません。 絶対パスで指定してもダメでした。 ちなみに、ためしに、mc1ではなく、シーン1上のフレームラベルに 飛ばすように記述したら普通に動きました。。 何か記述間違いがあるのでしょうか? 分かる方がいましたら教えてください。 お願いします。