• ベストアンサー

【スコープ】グローバル変数

タイムラインに、このような記述をしました。 _global.blnFlg = 10; var a = _global.blnFlg; trace(a); 実行するとtrace()は、 undefinedと返ってきます。 どうすれば正しく値を取得できるのでしょうか?

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

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

#2です。 > AS2.0だと、どうすればよいのでしょうか? 普通は書かれていらっしゃるままで 「10」 が出力されます。 > バージョンはFlash8のAS2.0です。 それを先に書きましょう。 > 写真を見る限り、Flash Lite1.1でしょうか? すみません。 それは前回他の方への回答が Flash Lite 1.1 だったので, そのままになってしまってしただけです。 ちなみに, その(#2の)画像を表示させたときのパブリッシュ設定は デフォルトの「Flash Player 8」用SWFパブリッシュで「ActionScript 2.0」設定です。 > 上記のURLは、AS3.0みたいですが、 ですから, バージョンをご質問で一切書かれていらっしゃらなかったので, ActionScript 3.0 設定でパブリッシュしようとして,変なことになったのかと思ったのです。 (ActionScript 3.0 では _global は廃止されたため) #2 で書いた内容を書きなおすと,  ActionScript 3.0 設定にしたドキュメントを作成しているのではないか。  ActionScript 3.0 では _global は廃止されてますよ。 ということです。 ========== Flash 8 をお使いで,「undefined」 を出すにはどうすれば良いかやってみましたが, 「ファイル」→「パブリッシュ設定」でFlashタブを選択して, バージョンを「Flash Player 5」以下(5は含む) にしたとき,「undefined」 が出ます。 「Flash Player 6」以上にすれば「10」が出ます。 Flash 5 以下で作成された FLA を開いて, その FLA の パブリッシュ設定 を変えずにそのままにしてあるため 「undefined」 が出たのではないでしょうか? それ以外は,今のところ 「undefined」 が出る原因がわかりません。 とにかく, Flash では バージョン が最重要です。 Flash 作成ツール のバージョン ActionScript のバージョン パブリッシュしようとするターゲットの Flash Player のバージョン。

dizzdive
質問者

お礼

パブリッシュ設定を確認したところ、 AS1.0のままでした。 そのあとにサイト掲載しているようなサンプルを 実行させた結果、きちんと動作しました。 ありがとうございました。

その他の回答 (2)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

ActionScript 2.0 以下だとちゃんと 10 が出力されますよ。 そういうことではないのでしょうか? Google 検索「_global ActionScript 3.0」 http://www.google.co.jp/search?hl=ja&source=hp&q=_global+ActionScript+3.0&lr=lang_ja

dizzdive
質問者

補足

AS2.0だと、どうすればよいのでしょうか? バージョンはFlash8のAS2.0です。 写真を見る限り、Flash Lite1.1でしょうか? 上記のURLは、AS3.0みたいですが、 仕様が変更されてなければ、使えそうです。 一度、目を通して見ます。

noname#111181
noname#111181
回答No.1

状況がよく分かりません。 FlashのActionScriptにかかわるご質問ですか?

dizzdive
質問者

補足

AS2.0です。 Flash8で、 グローバル変数を宣言して、 その変数に値を代入して取り出したいと思い、 サイトを調べて自分でデバッグしても trace()の中が"undefined"で返ってきます。 ASの質問のなります。

関連するQ&A

  • LoadVarsでPHPから変数を読み込む件について

    質問させていただきます。 PHPで、変数$usernameに入っている値をActionScriptに渡したいのですが、上手くいきません。 ■PHP側 echo "name=".$username; ■ActionScript側 var username: LoadVars = new LoadVars(); username.onData = function(src) {  if (src == undefined) {   trace("Error loading content.");  }  trace(src); }; username.load("./view.php"); trace(username.name); 試しに上記のような形で実行してみました。 onDataの中の「trace(src)」の出力によると、PHPを読み込んではいるのですが、echoの部分だけではなく、<?php ~ ?>のように、PHP全体を読み込んでしまっていることがわかりました。(しかも何故か1行ずつ行間を空けた状態で…) ちなみに一番最後の「trace(username.name)」は何も出力されませんでした。 Webで調べると、例えばPHP側で「echo "name=admin";」のように、直接値を表示しているものばかりのような気がしました。 私のような場合、欲しい部分だけをloadするにはどうすればよいでしょうか。どうぞご教示願います。

  • 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
  • Objectの1番目の値がundefinedに

    AS3にてPHPに値を渡して、処理した結果をFLASH側に戻す処理をしています。 今回はテスト用に、値は送らずに単純に結果を返すだけのPHPを作ったのですが、1番目の値がundefinedになってしまいます。 for inで取得すると正常にすべての値が取得できるのですが、直接参照するとダメです。2番目以降の値は取得できます。 このような現象について、お心当たりございましたら、是非お願い致します。 ●flash側 import ConnectPHP; //PHPとの受け渡しを行う外部AS var connectPHP = new ConnectPHP(); connectPHP.addEventListener(ConnectPHP.COMPLETE, completeHandler); connectPHP.sendAndLoad("check.php"); function completeHandler(e:Event):void { var obj:Object = connectPHP.result; for (var i in obj) { trace(i, '=>', obj[i]); } trace(obj.a); trace(obj.b); } ●PHP側 <?php echo "a=1&b=2"; ?> ●結果 a => 1 b => 2 undefined 2 ※for のtrace結果の時に、空の2行が書き出されます。

    • ベストアンサー
    • Flash
  • インスタンス名を変数に

    こんにちは。 インスタンス名を変数(imaMc)に格納して、x方向に移動したいのですが、エラーが出てしまってうまく行きません。 var imaMc:String; imaMc=scale_mc.name; stage.addEventListener(MouseEvent.CLICK,removeScaleset); function removeScaleset(evt:MouseEvent):void { trace(imaMc); imaMc.x=500; } 上記のようなスクリプトを組んでいるのですが、trace(imaMc)までは正常に動くのですが、imaMc.x=500が以下のようなエラーになってしまいます。 1119: Access of possibly undefined property x through a reference with static type String. これは何故でしょうか? traceするとscale_mcと出るので間違っていないと思うのですが・・・ ActionScript3.0です。 ご回答お願い致します!

    • ベストアンサー
    • Flash
  • actionscript クラスのメンバ変数のアクセスについて

    やりたいことは、 ムービークリップ(move_mc)をある座標まで、 減算処理をしながら移動するということなんですが、 クラスを勉強中で下記のように書いてみました。 ■インスタンス生成&メソッドへアクセス var move1:Move = new Move(5,100); move1.onclick(); ■asファイル class Move{ var speedPro:Number; var rangePro:Number; function Move(speed:Number,range:Number){ this.speedPro = speed; this.rangePro = range; trace(this.speedPro);//ここの値は5がでます } public function moving(){ _root.move_mc.onEnterFrame = function(){ this._x += (this.rangePro - this._x)/this.speedPro; trace(this._x); trace(rangePro);//undefined trace(this.speedPro);//undefined } } public function onclick(){ _root.move_mc.onRelease = moving; } } speedとrangeでスピードの値と移動範囲の値を引数で渡しています。 コンストラクタ関数のところでtraceするとちゃんと値はわたっていますが、moving関数のところではちゃんと値を取れていないようです。 メンバ変数にちゃんととりにいけていないようなのですが、 どのような書き方をしたらとりにいけるのでしょうか。。。 また、根本的にこのような書き方であっているのでしょうか。。。 ご協力お願いします。

    • ベストアンサー
    • Flash
  • 継承元クラスのプロパティを参照する手段

    お世話になります。 ActionScrip3に関する質問です。 現在、カスタムクラスを勉強しております。 外部クラスでClassA、ClassBを作成し、 ClassAにある処理の途中でClassBを実行し、ClassBの中からClassAのプロパティを参照しにいく 処理を行いたいと思い、ClassBのコンストラクタからClassAのプロパティをtraceしました。 プロパティppt2は「かきくけこ」が出力されましたが、ppt1は「null」になってしまいました。 恐らく、タイムラインからClassAに対して設定したプロパティの値は見にいけていないようですが、 タイムラインから設定したプロパティの値を継承したClassBから参照しにいく方法はありますでしょうか? 下記ソースと同じ方法でなくても結構ですので、タイムラインから設定した スーパークラスのプロパティ値をサブクラスから参照・変更できる方法を ご教授いただければと存じます。 お手数ではありますが、宜しくご教授ください。 宜しくお願いいたします。 /* タイムライン側の処理 -----------------------*/ var test:ClassA = new ClassA(); test.ppt1 = "あいうえお"; test.goNext(); /* ClassAの処理 -----------------------*/ package {  // インポート記述は省略  public class ClassA {   var ppt1:String;   var ppt2:String = "かきくけこ";   // コンストラクタ   public function ClassA() { }   public function goNext():void {    var classb:ClassB = new classB();   }  } } /* ClassBの処理 -----------------------*/ package {  // インポート記述は省略  public class ClassB extends ClassA {   // コンストラクタ   private function ClassB() {    trace(ppt1);    trace(ppt2); }  } }

    • ベストアンサー
    • Flash
  • SharedObject.getLocal()、オブジェクト名.data.変数の「変数」の部分に変数を入れる方法について

    SharedObject.getLocal()、オブジェクト名.data.変数の「変数」の部分に変数を入れる方法について ActionScript初心者なので頓珍漢な事を書いているかもしれませんが、 よろしくお願いします。 オブジェクト名.data.変数の変数の部分に変数を入れたく、 AS2.0で //////////////////////////////////////////////// my_hozon = SharedObject.getLocal("test", "/"); count = 0; for (count=0; count<=3; count++) { abc = "test_"+count; trace(abc); my_hozon.data.abc= "a"; trace(my_hozon.data.abc);//結果"a" trace(my_hozon.data.test_0);//結果"undefined" trace(my_hozon.data.test_1);//結果"undefined" trace(my_hozon.data.test_2);//結果"undefined" trace(my_hozon.data.test_3);//結果"undefined" } //////////////////////////////////////////////// と書いてみたのですが、 trace(my_hozon.data.abc); は結果が返ってきたのですが、 trace(my_hozon.data.test_0); trace(my_hozon.data.test_1); trace(my_hozon.data.test_2); trace(my_hozon.data.test_3); だとundefinedになり失敗しました。 どうすれば変数に変数が入るのか教えていただけないでしょうか。 よろしくお願いします。

  • function内で変数 this[lcr+"_map"]を使いたい

    var lcr = "Left"; map(lcr); function map(lcr) { var Left_map = new Array("ba","rc","ba","re","be","wa"); trace(this[lcr+"_map"]);// undefined trace(Left_map);//ba,rc,ba,re,be,wa } function内で this[lcr+"_map"] を使いたいのですが、function内だと undefined になってしまいます。 どうすればfunction内でも this[lcr+"_map"] が使えるようになりますか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • 変数の扱い方

    始めまして。 flash初心者です。 開発環境は Professional 8 です。 下記のソースで25個のインスタンスに対して マスクをかけたいと思ってループさせたのですが setMaskでうまくマスクをかける事ができませんでした。 traceで表示させたところインスタンス名で自分の 思っている値が出力させていたので、逆にどうしてなのか 分からなくなりました。 どうか分かる方がいらっしゃいましたら、 どうか教えた下さい。 お願いいたします。 for(i = 1;i < v; i++){ var iname = "title" + i; var imask = "mask" + i; trace(iname); iname.setMask(imask); }

    • ベストアンサー
    • Flash
  • jQueryの関数内の変数について教えてください

    jQueryで外部の関数の中にある変数の値の取得方法について教えてください。 文法等全く分かっていない、初心者で大変恐縮しております。 外部にある変数の値を取得し、その値を必要な変数に代入したいと思っております。 下記に大まかなコードを記述いたしました。 サイトを開いた時に「mLivre」を実行し、リサイズ処理をした時に もう一度「mLivre」を実行しております。 「var mLivre」内にある数値を、「jQuery(window).resize」の中の 「 jQuery.fn.mLivre」の中にある変数に代入しようと思っております。 私のやりたいことは、「mLivre」というプラグイン(下記※参考サイト)を レスポンシブにしたいと思っております。 「mLivre」は画像を本の様にめくってくれるスクリプトです。 下記のコードの流れで、ブラウザサイズに合わせて表示の大きさを 変えることができましたが、リサイズするごとに初期化され ページが1ページ目からになってしまうので、 リサイズ後も変わらないページで表示させたいと思っております。 ※参考サイト http://coliss.com/articles/build-websites/operation/javascript/jquery-plugin-mlivre.html 全くの初心者で大変恐縮しておりますが、 ご享受いただけたらと思います。 また、記述についてもご指摘いらだけたら幸いです。 宜しくお願いいたします。 -------ソースコード---------- //実行外部ファイル jQuery('#slide').mLivre({ }); //コアファイル (function(jQuery) { jQuery.fn.mLivre = function(options,num) { }; jQuery(window).resize(function(){ var mLivre={ //ここにある変数の値を取得してリサイズ内の jQuery.fn.mLivreに渡したい。 } jQuery.fn.mLivre = function(options,num) { //この中の変数に代入したい }; jQuery('#slide').mLivre({  //リサイズ後の実行部 }) ; }); })(jQuery); var mLivre={ //ここにある変数の値を取得してリサイズ内の jQuery.fn.mLivreに渡したい。 }

専門家に質問してみよう