• ベストアンサー

FLASH MX、変数の参照について

_root上にaaaというMCとダイナミックテキストを配置、ダイナミックテキストには変数textを指定しています。aaa内のフレーム1にbbb = 1と記述、_rootのフレーム1にてtext = _root.aaa.bbbと記述してダイナミックテキスト上に反映させたいのですがうまくいきません。 FLASHを勉強し始めて1ヶ月程経つのに未だに変数の参照でつまづいてるのはかなり恥ずかしいのですが、よろしければアドバイスをいただけると幸いです。 よろしくお願いします。

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

  • ベストアンサー
  • noias
  • ベストアンサー率82% (23/28)
回答No.2

変数の参照方法は正しいと思います。 試しに適当なMCを作って on(press){ _root.text=_root.aaa.bbb; } と埋め込んで、試してみてください。問題なく参照できるはずです。 ただ今回の場合、そのファイルが再生されたとき、どのアクションスクリプトが先に実行されるかを考えてみてください。_rootから参照されてしまうと今回はちょっとまずいですよね。 ですから"bbb=1"よりあとに"text=aaa.bbb"が参照されるようにタイミングを変えてあげるとうまくいきますよ。

mappi_mappi
質問者

お礼

アドバイス頂いた方法で変数の参照方法は正しいことがわかりました。 実は今、簡単なスロットマシンのflashを作ろうと考えていて今回の問題に向かっています(このサイトで以前ソースのURLを出したら削除されてしまいまして…)。 説明は省きますが、それぞれのリールMCで出された変数を_rootで文字列に変換した後結合、出た値が"111"などのゾロ目であればテキストボックスに簡単なメッセージでも出そうかと思ってました。 やはり_rootにフレームを追加してタイミングをずらすようにスクリプトを改良したいと思います。 またflash関係の疑問が起こった際にはアドバイスをいただけるとうれしいです。 ご回答ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Qsans
  • ベストアンサー率48% (28/58)
回答No.1

私もそれほど詳しい方ではありませんが、この仕組みの回答としては、以下のようになります。 ここでのMCに「aaa」というムービークリップ名は、付けなくてもいいと思います。 MCのフレーム内から_root上のダイナミックテキストBOXの中に数値なりを反映させたいのであれば、 MC内のフレームにフレームアクションとして、「アクション」の中から「setv ariable」を選択します。 アクションの中身は、_root.text = "1"; です。 ダイナミックテキストの変数名とフレームアクションの変数名が同じでないと 変数名=1  変数に1を代入と参照されないのです。 (もうひとつやり方) MCに直接アクションを設定するというのも参考までに。 この場合、オブジェクトアクションとなり、アクションから「On Clip event」を選択します。 中身は、 onClipEvent (enterFrame) { _root.text = "1"; (←ここは、setvariableで設定) } となります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • flash lite1.1 変数を受け取って表示

    今flash lite1.1を使いPHPと連携させる作業を行っています。 その中で、変数を受け取ってflash上のダイナミックテキストでその変数の言葉を表示させるといったことがうまく出来ない状態です。 今試したことは、下記の方法でPHPからflashのダイナミックテキストを変数を指定して変更する方法です。1フレーム目にダイナミックテキストを配置し、そこに変数を記入するとうまくいくのですが、1フレーム目に配置してある、ムービークリップの中にある5フレーム目のダイナミックテキストに同じ変数を書いてもうまくいきません。 そこで、1フレーム目のダイナミックテキストがうけとった、内容を他の階層のダイナミックテキストで表示させることは可能でしょうか? loadVariablesNum等いろいろと試したのですが、うまくいきません>< わかる方がみえましたら、ぜひお願いします。 flash lite1.1とPHPの良い連携の仕方が他にあればそちらも教えていただけますと、助かります。よろしくお願いします。 http://libpanda.s18.xrea.com/commentary.txt

  • 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を変数で指定

    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
  • 外部テキストが複数のインスタンスに読み込まれない?

    質問させてください。 ボタンをクリックしたときに指定されたフレームへ飛び、MCが動き、 そのMC内で外部テキストを読みこみ、 それぞれ設置した2つのダイナミックテキストへ文を読み込ませるという構想になっております。 (以下階層です) シーン1 b(mc)フレーム1        L・背景 フレーム1          ・ダミーボタン1フレーム1 ASレイヤーに this.stop();          ・ダミーボタン2フレーム1 ASレイヤーに this.stop();          ・パネル/a(mc) フレーム2 (AS) ダミーボタン1 インスタンス名btn1 on (release) { _root.b.gotoAndStop(2); _root.b.a.t1.htmlText = _root.b.a.text1; _root.b.a.m1.htmlText = _root.b.a.text1_a; } ダミーボタン2 インスタンス名btn2 on(release){ _root.b.gotoAndStop(2); _root.b.a.t1.htmlText = _root.b.a.text2; _root.b.a.m1.htmlText = _root.b.a.text2_a; } パネル、a(mc)部分に onClipEvent (load) { System.useCodepage = true; this.loadVariables("sample.txt"); trace("loading"); } onClipEvent (data) { trace("完了"); } パネル内 ダイナミックテキスト(インスタンス名:t1 フレーム5 ダイナミックテキスト(インスタンス名:m1 フレーム5 (AS) 5フレーム目にthis.stop(); 外部テキスト内 sample.txt 文はファイルと同じところにあります。 &text1=</u>AAA</u>& (あえて今は全角にしてあります) &text1_a=</u>aaa</u>& &text2=</u>BBB</u>& &text2_a=</u>bbb</u>& ------------------------------------- 出来ているのはb(mc)内ダミーボタンを押すとフレーム2に飛び、 フレーム2に配置されているパネルa(mc)の中のダイナミックテキストのあるフレーム5で止まる、というところまでです。 困っているのは b(mc)内、フレーム2のa(mc)部分でtraceするとloadingは出ているので読み込まれてはいると思うのです。 しかしムービープレビューすると文のほうは何も表示されずでして…パスがあってないのでしょうか…。 パネル内のダイナミックテキストに表示させるに当たりどこが違うか、 長々と恐縮ですがご教授願います。 環境はWinXP、Flash8 proです。

    • ベストアンサー
    • Flash
  • Flash AS3.0 初歩的な質問

    現在AS3.0を勉強中です。 基本中の基本だと思いますがパスが上手く通っていないようなので ご教授願いたく。 1.ステージ上にテキストボックス(ダイナミックテキスト)を配置しインスタンス名を「hako」としています。 2.rootに以下のスクリプトを記述 ------------------------------------------------- addEventListener(Event.ENTER_FRAME,syori); function syori(eventObject:Event):void { hako.text=String(stage.mouseX); } ------------------------------------------------- ここまでは問題なく動作しています。 2をrootでは無く任意のムービークリップから処理させるべく・・・ 3.「abc」というインスタンス名のムービークリックを作成しステージに配置。この1フレーム目に以下のスクリプトを記述 ------------------------------------------------- addEventListener(Event.ENTER_FRAME,syori); function syori(eventObject:Event):void { parent.hako.text=String(stage.mouseX); } ------------------------------------------------- ※この際、2でrootに記述したスクリプトは消しています。 これで動くと思ったのですがエラーがでます。(ToT;) 「parent.hako.text」の部分を「root.hako.text」としてもエラーがでます。「_parent」も「_root」も駄目です。(「_」付はAS2.0までですよね?) 今回はダイナミックテキストは使った例ですが、 単純にムービークリップをステージに配置して、その座標を指定するような処理でも、 他のムービークリップから別のムービークリップを参照する方法が解りません(汗) どうすればよいでしょうか? AS2.0までは上記のような形でパスが通ったと思うのですが・・・

  • XMLでFlashの変数を管理できませんか?

    XMLでFlashの変数を管理できませんか? ただいまFlashの変数(例えば、リンク先、読込む画像のURLや変数の数値など)をXMLで管理できたらいいなぁと思いサンプルを作成したのですがXMLに記述したテキストを変数に代入するとこまではできたのですが、その変数をFlash内で自由に扱えません。 どうしたらよいでしょうか?作成環境はActionScript3、Flash CS4です。 ■XML:var_xml.xml内は以下のように記述しています。 <?xml version="1.0" encoding="UTF-8"?> <move>  <id ex="Slow Speed" speed="1" />  <id ex="Normal Speed" speed="3" />  <id ex="Fast Speed" speed="5" />  <id ex="Very Fast Speed" speed="8" /> </move> ■Flash(w:700xh:100)内は ルートの1フレーム目に stop(); XML.ignoreComments=true; XML.ignoreWhitespace=true; XML.ignoreProcessingInstructions=true; var myRequest:URLRequest=new URLRequest("./var_xml.xml"); var myLoader:URLLoader=new URLLoader(); myLoader.load(myRequest); myLoader.addEventListener(Event.COMPLETE, xSetText); function xSetText(eventObject:Event):void { var varXML:XML=XML(myLoader.data); var speed:int=int(varXML.id[2].@speed);←ここで変数作る gotoAndPlay(2); } ルートの2フレーム目はStop();を記述して ステージにはMovieClip(BaseMC)が1個置いてあります。そのMovieClip(BaseMC)の1フレーム目には以下のようにASを記述しています。 var MC:MovieClip = new moveMC();←適当な図形が一つ置いてあるMC MC.x=0; MC.y=5; addChild(MC); addEventListener(Event.ENTER_FRAME, MoveFunc); function MoveFunc(event:Event):void { MC.x+=speed;←ここにさっきのXMLから引っ張って代入した変数を使いたい if (MC.x>700) { MC.x=0; } } 上記のようなFlashを作成したのですが、エラーがでてしまいます。もしこんな感じでXMLを利用して変数を管理できたら便利だと思うのですが、できるのでしょうか? 検索してもギャラリーをXMLで管理するとかでるのですが、XMLの読込完了に実行される関数内で変数にURLを代入とかtrace(~);で出力してとか、知りたい情報が手に入らないのでどなたか教えていただけませんか?お願いします。

    • ベストアンサー
    • Flash
  • getURLへの変数が参照されない

    こんにちは。 FLASH ActionScript2の、getURLへの変数が参照されない件で困っています。 MC1をRollOverするとテキストフィールドareaにTarea1(あ)が入り、 更にMC1をクリックするとTurl1(a)のURLに飛ぶ、というスクリプトを作っています。 しかし現状ですと、RollOverはうまくいくのですが、クリックしたときのgetURLがうまくいきません。 変数「a.html」に飛ばず、「Turl1.html」に飛んでしまいます。 変数が参照されていないということなのでしょうか。 なにぶん初心者ですので、質問自体に誤りがあるかもしれませんが、ご教授頂けたらと思います。 よろしくお願いします。 ■スクリプト var Tarea0 = ""; var Tarea1 = "あ"; var Tarea2 = "い"; var Tarea3 = "う"; . . var Tarea42 = "ゆ"; var Tarea43 = "よ"; var Tarea44 = "ら"; var Turl1 = "a"; var Turl2 = "i"; var Turl3 = "u"; . . var Turl42 = "yu"; var Turl43 = "yo"; var Turl44 = "ra"; i = 0; sx = 0; for (x=0; x<45; x++) { str = "mc"+String(i); _root["mc"+i].Tarea = "Tarea"+i; _root["mc"+i].onRollOver = function() { area.variable = this.Tarea; }; _root["mc"+i].onRollOut = function() { area.variable = "Tarea0"; }; _root["mc"+i].Turl = "Turl"+i + ".html"; _root["mc"+i].onRelease = function() { getURL(this.Turl); }; i++; } ■環境 WINDOWS XP FLASH8 ActionScript2.0

    • ベストアンサー
    • Flash
  • 【フラッシュ】外部テキストの読み込み

    よろしくお願いします。 いま、作っているフラッシュで外部テキスト(中身はサーバ名,www.~.com)を読み込んで それを参照してサーバからデータを取得するというスクリプトを作っています。 それで、めでたく完成したのですが、ローカル環境(swf,txtともにローカルマシンにある)で 確認するとうまく動くのに、サーバにアップしてみるとうまくいきません。 失敗の原因として、 1)そもそもtxtの読み込みがうまくいっていない。 2)読み込んでるが、それをswf内部でうまく参照できていない。 の二つがあると考えて、読み込んだデータを表示するテキストフィールドを用意して確認したのですが、 ちゃんと読み込んでいるのです。 すると、後はその取得データを参照するスクリプトがおかしいということになりますが、 そちらはローカル、サーバ上ともにまったく同じです。 いったい何が原因でしょう。 フラッシュの構造的には ■1フレーム目  フレームアクション:stop(); //いったん停止してデータを読み込む var theSvr;//サーバ名を格納し実際に参照する変数  配置MC:内部にsvrNameという変数を持つ、データ読み込み用のMC      onClipEvent(load){ this.loadVariables("sv.txt"); }      onClipEvent(enterFrame){ _root.theSvr = this.svrName; _root.gotoAndPlay(2);//フレームアクションのストップを解除して再生 }       ■2フレーム目以降の読み込みデータを使ったアクション  getURL(_root.theSvr);//基本的に、getURLに使う程度です。。 わかりづらいかもしれませんが、よろしくお願いします。

  • 変数の参照方法

    MCが複数あって、共通で使用したい変数があるのですが、 それぞれのMCにActionScriptを書くときに、その変数をどのように参照すればよいのかわかりません。 現在は、MCそれぞれにわざわざ記述しています。 1箇所にまとめる方法はありませんか? (当方ActionScriptを始めて、まだ1ヶ月ほどです)

    • ベストアンサー
    • Flash
  • loadMovieされたswf上の外部Textが

    表示されず困っています。 aaa.swfの中に01_mcがあり、そこにloadMovieでbbb.swfを表示させます。 そのbbb.swfにはTextFieldがあって、変数を使って外部テキストを読み込んで表示しています。 bbb.swfのプレビューでは、TextAreaの中にはきちんと変数で指定した外部テキストが表示されますが、それをaaa.swfに読み込んだ後に見ると、テキストが表示されません。 どなたかお力をお貸しくださいませんか? 環境はMacOS10.3.9 FLASH MX2004です。 よろしくお願いします!

    • ベストアンサー
    • Flash