ActionScriptでLoadVarsとは?vars.load(url)の動作は?vars.strの動作は?

このQ&Aのポイント
  • ActionScriptでLoadVarsは、外部の変数やデータを読み込むためのオブジェクトです。
  • vars.load(url)は、指定したURLからテキストファイルを読み込む関数です。
  • vars.strは、読み込んだ変数の中にある「str」という名前の値を取得する変数です。
回答を見る
  • ベストアンサー

ActionScriptで分からないことがあります。

http://hakuhin.hp.infoseek.co.jp/main/as/import.html#IMPORT_01 の、import_01_fla08_as1.lzhについて幾つか質問です。 1.以下の部分で、LoadVarsってどういうことをするものなのでしょうか? var vars = new LoadVars (); 2.vars.load(url);ってどういう動作をしているのでしょうか? // テキストファイルを読み込む関数 function LoadTextFunc(url){ // テキストファイルを読み込む vars.load(url); _root.SetMessage("読み込み要求:" + url); } 3.以下のstr = vars.str;はどういう動作をしているのでしょうか? vars.onLoad = function(check){ if(check){ SetMessage("読み込みが完了して変数にアクセスが可能"); str = vars.str; }else{ SetMessage("読み込み失敗"); } }

  • Flash
  • 回答数8
  • ありがとう数14

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

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

#7 のお礼に書かれていらっしゃる内容に関しましては, #6 で書いているつもりですが...。 > 関数の中で、vars.load(txt);でvarsにテキストをロードしているのなら、 > 何故、vars.st1;の値は、undefinedとなっていて、一回目では、 > 読み込まれていないのかということとか、 だから,ロードに時間がかかるからです。 > vars.load(txt);は単純にvarsに代入されるものではないのなら、 単純に vars に代入されるものです。 > どのタイミングで、代入されているのか等が、聞きたかったのです。 知りません。 それは 「Flashの外部テキスト読み込みについて」 引用URLでも書きましたとおり, 0.001 秒かもしれませんし20分かもしれません。 ローカルにあるかネット上にあるかファイル容量はどうか回線速度はどうなのか, 場合によるので当然わかりません。 わからないから, LoadVars.onLoad で読み込み完了次第「テキストに値を表示させる」という動作をさせているのです。 ユーザーがいつボタンをクリックするかわからないので, onRelease をつかうのと同じです。 ユーザーがいつボタンをクリックするのか知っていれば, onRelease なんて必要ないでしょう。 2回クリックしたら表示されるのは, 1回目のクリックで vars に外部テキストがロード開始されて, しばらく後に(0.001秒とかその辺)ロードが完了します。 2回目のクリックで, その vars に入った変数をテキストフィールドに表示されているだけでしょう。 同時にこの2回目のクリックで再び外部テキストのロードが開始されます。 このロードはまたしばらく後(0.001秒とかその辺)に完了します。 ロードと表示は別物ですよ。 ロード完了→表示 です。 そうでないと表示できないと何度も書いているでしょう。 人の話を全く聞いていないか,私が遊ばれているかのどちらかに思えます。 ですから根本的に ActionScript とか クラス とかそんなものは関係ないのですって。 「ロードに時間がかかる」 それを理解するだけのことです。

coronalith
質問者

お礼

>人の話を全く聞いていないか,私が遊ばれているかのどちらかに思えます。 いや、只単に、BlurFiltanさんが私が知っていると想定している知識を私が持ってなかったから、意味がよく分からなかっただけで、別に聞いてないわけでも、遊んでるわけでもないですよ^^; 例で出されてるonRelease関数もどういうふうに使うのかは知ってますが、どんなことに何のために使うのかは全く分からないので・・・ プログラムって、順次上から下へ、書いた処理が終わるのを待ってから進行しているわけではなかったんですね。それで、onLoadしたときに実行っていう風に指定していたと・・・ 長々と有り難うございました。

その他の回答 (7)

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

#2~#6 です。 ちなみに, 参考にならないかもしれませんが補足まで。 LoadVars.onLoad イベントハンドラメソッド(Flash MXで登場)も, さらに MivieClip.onData イベントハンドラメソッド(Flash MXで登場)も, さらに, ムービークリップの onCripEvent(data) イベントハンドラ(Flash 5で登場)も存在しなかった頃, loadVariables 関数(Flash 4で登場)のみで どうやって,外部テキストのロード完了を得ていたかわかりますか? 上のイベントハンドラやイベントハンドラメソッドを使わなくても, 「外部テキストのロード完了」 を得ることはできるのです。 loadVariables 関数 だけの頃は, 便利なイベントハンドラのようなものはなかったので, 見えない空のムービークリップを手動で作成して(FlashVarsの代用品), ムービークリップ内を3フレームにして, フレーム1 で, loadVariables でムービークリップ内に外部テキストをロードして, フレーム2 で, 変数が読み込まれたかどうかをif文で判定し, 何かを動作させるスクリプトを書いて, フレーム3 で, gotoAndPlay(2) でフレーム2に戻して, 延々と フレーム3 と 2 を変数がロードされるまで待つ。 このような仕組みをみなさん自力で作成していたのです。 外部テキストファイルをロードして何かを動作させるために, 見えないムービークリップをわざわざ作成して, その中に外部テキストをロードして, ひたすら gotoAndPlay() でループ待ちする。 論理的には,このような構造を自作する方が, 「いったい自分は何をしているのだろうか」ということがかわかりやすいと思いますが, 作成する方としては,たまったものではありません。 そのうち, onClipEvent(data) ができて, 「ひたすら gotoAndPlay() でループ待ちする。」 必要はなくなったのです。 しかしテキストをロードするのになぜかムービークリップが必要なことには変わりありません。 そのうち, LoadVarsクラス (Flash MX(AS1) ではクラスではなくオブジェクト) ができて, やっとまともに外部テキストロードのためにムービークリップなどと言う無関係なものは作成しなくて良くなったのです。 天国のようなものです。 というか, やっと当たり前のことが出来るようになったのが, LoadVarsクラス(AS1 ではオブジェクト)の登場だったのです。 #4で書きました2つのURLとも ムービークリップ の話が登場します。 「Flashの外部テキスト読み込みについて」 http://okwave.jp/qa3991545.html 「LoadVarsオブジェクトを使った外部テキストファイルの読込み」 http://www.fumiononaka.com/TechNotes/Flash/FN0303007.html 上の 「Flashの外部テキスト読み込みについて」 では, 私ではなく #1 の方もムービークリップを登場させていますね。 下の「LoadVarsオブジェクトを使った外部テキストファイルの読込み」でも, ガンガンにムービークリップを登場させています。 またこのご質問の回答群でも, 私がムービークリップを持ち出しています。 外部テキストロードに本来ムービークリップは関係しないのですが, なぜムービークリップが出てくるのかというと, LoadVars を理解する上で, 上のような経緯(ムービークリップを使わねば!)が潜在意識の中に存在するからです。 今始められたかたなら,もっとうまく説明できるかもしれません。 しかし,私の中では, LoadVars.onLoad = function(){ } は, ムービークリップ内のフレームグルグルループの発展系であり, さらに onClipEvent(data){ } ハンドラの発展系なのです。 (おそらく 「Flashの外部テキスト読み込みについて」 の #1 の方と同じくです。) そういうわけで, 変な説明になっているとは思います。 結局 ActionScript とロード待ちは関係ありません。 ロード待ちはどんな言語であっても必ず必要です。 VBA のようにソフト側でカバーしてくれている場合もあります。 (↑ロード完了するまで次を勝手に実行しない(しかしアニメーションソフトとしては成り立ちにくい)) しかし必ずどこかでロード待ちを入れていることは確かです。 そのロード待ちで LoadVars を使うとか ムービークリップを使うとかは, ロード待ちをどうするか という部分の対処法の違いです。 言語というよりも対処法で, ActionScript では LoadVarsクラス を利用すれば簡単にできるというだけのことです。

coronalith
質問者

お礼

何となく何を言われようとしていたのかは分かりました。 ただ、自分がさっき知りたかったのは、 // ユーザ定義関数 yomikomi を定義 //「テキスト1」ボタンを押すと、txtにテキストファイルが代入 function yomikomi(txt) {   // 「vars」 に txt をロード   vars.load(txt);   // 「vars」内 の st1 を 変数 l に代入   l = vars.st1;   // l が未定義でなければ   trace(vars.st1);   if (l != undefined) {     // ユーザ定義関数 SetMessage の実行     SetMessage("1読み込みが完了して変数にアクセスが可能");     // 変数 str に 変数 l の値を代入     str = l;   } else {     SetMessage("1読み込み失敗");   } } の関数の中で、vars.load(txt);でvarsにテキストをロードしているのなら、何故、vars.st1;の値は、undefinedとなっていて、一回目では、読み込まれていないのかということとか、vars.load(txt);は単純にvarsに代入されるものではないのなら、どのタイミングで、代入されているのか等が、聞きたかったのです。

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

#5です。 > 何故か、2回押すときちんと実行されるようです^^; 前回ロードしたデータがテキストフィールドに表示されるだけのことでしょう。 しかしそういうことをしても使いようがないと思いますが...。 何か意味があるのでしょうか。 何か意味があるのでしたらそれに活用すれば良いと思います。

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

#4です。 > functionをvarsに代入するのではなく、 > functionを定義してそれを実行することに > よって読み込ませることは出来ないのですか? できますよ。 すごく普通にできます。 しかしそれはそれです。 ================= 外部テキストはFlash外部にあります。  LoadVars インスタンスを作成  (LV = new LoadVars())      ↓  LoadVarsに外部テキストをロード  (LV.load("外部テキスト"))  ※当然function内で実行してもOK      ↓      …      ↓  ずっと後にロードが完了する      ↓  「ロード完了」通知を得る      ↓  ロードしたデータを何かに活用 です。 ボタン や ムービークリップをクリックしたときに何かを動作させたい場合は, on(release){ }イベントハンドラや, それを発展させた, ○○.onRelease = function(){ } イベントハンドラメソッドを使いますよね。 これらを使うと 「クリックされた」 というイベントをトリガ(引き金)として何かを実行させることができます。 この, MovieClip.onRelease = function(){ } も, #2で書きました, MovieClip.onData = function(){ } も, サンプルにある LoadVars.onLoad = function(){ } も, どれも イベントハンドラメソッド です。 イベントハンドラメソッドは, 何かのイベントが発生したときにそのイベントをトリガとして何かの動作をさせるときに使う便利な物です。 ロードして→表示 には,      …      ↓  ずっと後にロードが完了する      ↓  「ロード完了」通知を得る  (LV.onLoad = function(){} で受け取る)      ↓  ロードしたデータを何かに活用  (LV.onLoad = function(){} の {} 内が実行される)  (例:テキストフィールドにロードしたデータを表示) という時間的な流れが必要なのです。 ですから, LV.load("外部テキスト") を function 内で実行してもかまいませんし, LV.onLoad = function(){} を function 内で定義してもかまいません。 それは何でも良いので, ロードが完了するまでに LV.onLoad = function(){} を定義しておかないと, ロード完了が受け取れないのです。 同様のものに回答した最近の例では, 次のページが同じ説明に当たります。 OKWaveですが, 「Flashの外部テキスト読み込みについて」 http://okwave.jp/qa3991545.html もっとシンプルな例なのでわかりやすいかもしれません。 また,LoadVars で検索するとすぐに出てくる有名サイトですが。 「LoadVarsオブジェクトを使った外部テキストファイルの読込み」 http://www.fumiononaka.com/TechNotes/Flash/FN0303007.html > 3. データの読込みを待つ > LoadVarsクラスには、 > イベントハンドラをアクションとして設定することはできません。 > その代わりに、「イベントハンドラメソッド」というものが用意 > されています。LoadVarsクラスでロード後の処理に使用する > イベントハンドラメソッドが、LoadVars.onLoadです。 さらにコードを書く順まで理由付きで説明してくれています。 > LoadVars.onLoadメソッドの定義について、 > ひとつ大事な注意があります。 > LoadVars.loadメソッドによる外部テキストファイルのロードを > LoadVars.onLoadメソッドの定義より先に実行してしまうと、 > 定義が済む前にロードが完了してしまうおそれがあります。 > すると、定義が有効になったときには、 > もはやonLoadの呼出しが終わっているので、 > イベントハンドラメソッドは実行されないことになります。 > ですから、LoadVars.onLoadメソッドの定義をまず行ってから、 > LoadVars.loadを実行するのが確実です。 つまりコードを書く順は,  LoadVars インスタンスを作成  (LV = new LoadVars())      ↓  ロード完了時の動作を定義  (LV.onLoad = function(){})      ↓  LoadVarsに外部テキストをロード  (LV.load("外部テキスト")) この順が望ましい。 ということです。 上のような順でコードを書いておくと,  LoadVars インスタンスを作成      ↓  LoadVarsに外部テキストをロード      ↓      …      ↓  ずっと後にロードが完了する      ↓  「ロード完了」通知を得る      ↓  ロードしたデータを何かに活用 が確実に行えます。

coronalith
質問者

お礼

なるほど、でもそれだと、自分の書き換えた以下のようなのでもいけそうな気がするのですが、何故駄目なのでしょうか? txtにはきちんと、テキストファイル名が飛んでいるようだし、vars.load(txt);が実行された後なので、vars.st1には、テキストの内容が書いてある気がするのですが、traceで確認してみるとundefinedとでてきます。ただ、何故か、2回押すときちんと実行されるようです^^; // ユーザ定義関数 yomikomi を定義 //「テキスト1」ボタンを押すと、txtにテキストファイルが代入 function yomikomi(txt) {   // 「vars」 に txt をロード   vars.load(txt);   // 「vars」内 の st1 を 変数 l に代入   l = vars.st1;   // l が未定義でなければ   trace(vars.st1);   if (l != undefined) {     // ユーザ定義関数 SetMessage の実行     SetMessage("1読み込みが完了して変数にアクセスが可能");     // 変数 str に 変数 l の値を代入     str = l;   } else {     SetMessage("1読み込み失敗");   } }

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

> むちゃくちゃに書いてあると言われていますが、 > どのあたりが、変なのでしょうか? 全部です。 理解するために変形させたのではなくて, 好き勝手にこわしただけに見えますよ。 壊したら壊れるだけで当たり前です。 それ以上説明のしようもないということです。 とにかく, LoadVars.onLoad(またはLoadVars.onData) は省略できないでしょう。 何度も書きますようにロードしてから何かを実行させないと, ロードした通りには実行されたり動作したりできないのですから。

coronalith
質問者

お礼

functionをvarsに代入するのではなく、functionを定義してそれを実行することによって読み込ませることは出来ないのですか?

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

#1 です。 > 以下のよう書き換えてみたのですが、 > 二回押せば読み込めるのですが、一回では読み込めません。 > これは何故なのでしょうか? わかりません。 というか,私も書いてしてみましたが, 二回押すどころか百回押しても何も表示されませんよ。 動作しない理由は, 「無茶苦茶に書いても動作しない」 と言う当たり前の理由だと思います。 一応書かれていらしゃるスクリプトに注釈行を入れておきますね↓。 -------------------------------------------- // 変数 msg の初期化(文字列を空にする) msg = ""; // 外部テキストを Shift-JIS としてロード System.useCodepage = true; // LoadVarsクラス のインスタンス 「vars」 を作成 var vars = new LoadVars(); // ユーザ定義関数 yomikomi を定義 function yomikomi(txt) {   // 「vars」 に txt をロード   vars.load(txt);   // 「vars」内 の st1 を 変数 l に代入   l = vars.st1;   // l が未定義でなければ   trace(vars.st1);   if (l != undefined) {     // ユーザ定義関数 SetMessage の実行     SetMessage("1読み込みが完了して変数にアクセスが可能");     // 変数 str に 変数 l の値を代入     str = l;   } else {     SetMessage("1読み込み失敗");   } } // テキストファイルを読み込むユーザ定義関数 // LoadTextFunc の定義 function LoadTextFunc(url) {   // 「vars」にテキストファイルを読み込む   vars.load(url);   // ユーザ定義関数 SetMessage の実行   _root.SetMessage("読み込み要求:"+url); } // メッセージを表示する関数 function SetMessage(str) {   msg = str+"\n"+msg; } ------------------------------------ (↑インデントを全角空白文字で入れてあるので    このままコピペするとシンタックスエラーになります。) なぜ動作しないと言われましても,これでは動作のしようがありません。 まず, ユーザ定義関数 yomikomi は定義 されているだけで実行命令を受けていませんから この yomikomi が実行されることはありませんし, その yomikomi が仮に実行されても, そこで   // 「vars」 に txt をロード   vars.load(txt); が実行されるだけ,つまり外部テキストが読み込まれるだけですから, 「ロード完了時」には何もおこりません。 細かいことをたくさん書いてもしかたがありませんが, 無茶苦茶にかいてあるので正常に動作するはずがないという感じです。 ============== > 何故こちらのソースでは、loadではなく、 > loadVariablesを使用しているのでしょうか? 理由は簡単です。 MovieClipクラスには load というメソッドがないからです。 ないものはないので動作しようがありません。 百貨店に行って散髪と頼むようなものです。 MovieClip に外部のものをロードするとき, ロードするものが ムービーや JPEG などであれば loadMovie メソッドを使います。 ロードするものが外部テキストデータである場合は loadVariables メソッドを使います。 load というメソッドは比較的新しいメソッドで,LoadVars と同時くらいにできたメソッドです。 MovieClip は LoadVars よりずっと昔からありますし, できた当初から loadMovie や loadVariables (両方ともできた当初はメソッドではなく関数)がありましたから だいたいこれでこと足ります。 あえて load というメソッドを入れる必要がなかったので MovieClipクラスのメソッドに load は入れなかったのでしょう。 Flashドキュメンテーション MovieClip http://livedocs.adobe.com/flash/8_jp/main/00002436.html LoadVars http://livedocs.adobe.com/flash/8_jp/main/00002323.html

coronalith
質問者

お礼

すみません。書き忘れてましたが、テキスト1のボタンには、 on ( press ) { yomikomi("import_dat_00.txt"); } と書き込まれています。 んで、テキスト1のボタンを押すと、一回目は、上のテキストボックスには、何も表示されず、下のボックスには、 1読み込み失敗 と表示されます。 また、他の2,3の、ボタンは弄ってないのですが、テキスト2を押した後、テキスト1を押すと、テキスト2の内容が表示されます。 import_dat_01.txtとimport_dat_02.txtのstrはst1に書き換えてあります。 後、むちゃくちゃに書いてあると言われていますが、どのあたりが、変なのでしょうか?

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

そういう根本的な説明はけっこう難しいですね。 例えば, LoadVars インスタンス も MovieClip インスタンス も同じインスタンスです。 LoadVars の前に MovieClip(ムービークリップ) はわかりますでしょうか? 言葉だけで説明しても MovieClip とは何のことかわかるはずはありませんが, ActionScript を使っても使わなくても MovieClip は見えるので, Flash を実際に使ってみると MovieClip というものがどういうものだいたいがかわかります。 あえて MovieClip を言葉で説明すると, Flash の本体ムービーが, タイムライン と 複数のオブジェクト(ボタン,ムービークリップ,テキストフィールドなどなど)を持つことができるのと同じように, MovieClip 自体も独自のタイムラインと複数のオブジェクトを持つことができます。 いわば Flash の中の Flash のようなものが MovieClip です。 また, Flash はその本体(_root のタイムライン)自体がすでに MovieClip の一種ですし, またさらにその中にもその中にもその中にも MovieClip を持つことができます。 MovieClip 抜きでは Flash の価値は全くないものとしても良いと思います。 --------- それくらい MovieClip はすごい何でも屋さんで, 商店でいうならば百貨店(デパート)とか超巨大スーパーマーケットのようなです。 しかし, すべての人がすべての物を百貨店や超巨大スーパーマーケットで買うということはありません。 近所の眼鏡屋さんやカメラ屋さんのような専門店で眼鏡や時計を買うことも多々ありますし, 逆にマニアックなカメラや超職人な仕事はそういう店に頼まないとできないこともあります。 また, 百貨店やスーパーでは, 「今日は娘の誕生日やからちょっとオマケしておいて!」 などという融通の利いたことも頼みにくいものです。 その融通の利いた職人芸を見せるのが LoadVars インスタンスです。 LoadVars は, 外部テキストを読み込むことに関してだけマニアックではありますが, その筋の職人的技を持っていたり,また融通を色々利かせてくれます。 ご質問で書かれていらっしゃる import_01_fla08_as1.lzh のスクリプトも, 実は MovieClip に頼めばだいたいはできる仕事です。 (=実はMovieClipクラスのスクリプトでだいたいできる実行文です。) 例えば import_01_fla08_as1.lzh を解凍後, 出てくる import_01_fla08_as1.fla のフレーム1を次のように書き替えても, 一応は動作します。 -------------------------------------------- msg = ""; System.useCodepage = true; // _root に空のMovieClip 「lvMC」 を作成 _root.createEmptyMovieClip("lvMC",0); // 「lvMC」 に外部テキストロード完了時の動作を定義 lvMC.onData = function(){ if(this.str != undefined){ SetMessage("読み込みが完了して変数にアクセスが可能"); str = this.str; }else{ SetMessage("読み込み失敗"); } } // テキストファイルを読み込む関数 function LoadTextFunc(url){ // テキストファイルを 「lvMC」 に読み込む lvMC.loadVariables(url); _root.SetMessage("読み込み要求:" + url); } // メッセージを表示する関数 function SetMessage(str){ msg = str + "\n" + msg; } -------------------------------------------- しかしこれではロード完了は取得できても, ロードが成功したのかしていないのかは, 上のように実際に用意した変数(上の場合str)が あるのかないのかを if文 で問うような工夫をしなければなりませんし, onHTTPStatus を取得するような専門職的なこともできません。 LoadVars は MovieClip と同じようなインスタンスです。 また MovieClipインスタンス が 「様々なもの」 の入れ物であるように, LoadVarsインスタンスも 「ロードした変数と値」 の入れ物です。 同じインスタンスであり,同じ入れ物ですが,適材適所。 「様々なもの」 を入れる場合は MovieClip の方が良いですし, 「ロードした変数と値」 を入れる場合は LoadVars の方が良いことも多々あるということです。 クラスについてこの方面から書くとすると, MovieClip クラス のスクリプトは, MovieClip さんに何かを頼んだり,MovieClip さんの状態を制御するスクリプトです。 LoadVars クラス のスクリプトは, LoadVars さんに何かを頼んだり,LoadVars さんの状態を制御するスクリプトです。 こんな説明でだいたいわかりますでしょうか。  

coronalith
質問者

お礼

解答有り難うございます。 自分でも、色々弄ってみた結果、テキストのstrをst1に書き換えてみたところ、vars.load(text.txt)でテキストをvarsに読み込めて、テキストの中のst1のデータは、vars.st1に入っているということまで分かったので、以下のよう書き換えてみたのですが、二回押せば読み込めるのですが、一回では読み込めません。これは何故なのでしょうか? あと、何故こちらのソースでは、loadではなく、loadVariablesを使用しているのでしょうか? msg = ""; System.useCodepage = true; var vars = new LoadVars (); function yomikomi(txt){ vars.load(txt); l=vars.st1; if(l!=undefined){ SetMessage("1読み込みが完了して変数にアクセスが可能"); str=l; } else { SetMessage("1読み込み失敗"); } } // テキストファイルを読み込む関数 function LoadTextFunc(url){ // テキストファイルを読み込む vars.load(url); _root.SetMessage("読み込み要求:" + url); } // メッセージを表示する関数 function SetMessage(str){ msg = str + "\n" + msg; }

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=actionscript%20LoadVars どれか自分で判りそうだと思うのを読んでみて。

coronalith
質問者

お礼

解答有り難うございます。 googleでの検索はすでにやったんですが、結局書いてあることが分からなかったんです。 http://livedocs.adobe.com/flashlite/2_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts_wEcute&file=00000566.html 検索しても上記のようなサイトが出てくるぐらいで、 var my_lv: LoadVars = new LoadVars(); my_lv.onLoad = function(success: Boolean) { if (success) { trace(this.toString()); } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("http: //www.helpexamples.com/flash/passvars.php"); 上のようなソースが載ってたりしますが、クラスとか言うものがよく分かってないため、my_lv.loadがmy_lv.onLoad = function(success: Boolean)にどのように影響しているのかもよく分からないのです。

関連するQ&A

  • 外部テキストの値を得るには?

    フラッシュ初心者&質問するのが初めてなので うまく伝わるかどうか心配ですがよろしくお願いいたします。 外部テキストnum.txtにはstr=5という記述があります。 このnum.txtを取り込んで、 5という数値をflash側で変数aaaに代入しました。 --------------------------- var vars = new LoadVars(); vars.load("num.txt"); vars.onLoad = function(num){ if(num){ aaa= vars.str; trace(aaa); } } --------------------------- この場合、ちゃんと5と出力されます。 しかしこの関数内のaaaという変数を他でも利用したいのです。 (例えばvar menu_num:Number = aaa;というように) 単純に下のように記述すると --------------------------- var vars = new LoadVars(); vars.load("num.txt"); vars.onLoad = function(num){ if(num){ aaa= vars.str; } } var menu_num:Number = aaa; trace(menu_num); --------------------------- undefinedが出力されます。 この時にちゃんと5と出力させるにはどうしたらいいのでしょうか。 いろいろグローバル変数など勉強しましたがうまくいきません。 ちなみに外部テキストnum.txtのstr=5というのは、 5という数字のみでもかまいません。 とにかくテキストから数値を取り出す方法を考えています。 ご回答お願いいたします。

    • ベストアンサー
    • Flash
  • LoadVars

    テキスト・ファイルを読み込みについての解説で、 基本的な流れは, 1. LoadVarsクラスのインスタンスを生成 2. 読み込んだあとの処理を作成(onLoadイベントハンドラの設定) 3. 読み込み - スクリプト - var textReaderLV:LoadVars = new LoadVars(); textReaderLV.onLoad = function() { trace("「hoge」の値は," + textReaderLV.hoge); }; textReaderLV.load("data.txt"); という説明が書かれているのですが、2と3が逆のような気がしてしまうのですが、3番目に読み込みとなっている事には何か意味があるのでしょうか? 一応、2と3を入れ替えてプレビューしたところ特に問題なかったのですが、上記は学習のためにシンプルに書かれたスクリプトなので、もしかしたら本来的な意味合いで、3番目に読み込みが来る事に何か意味があるのかな??と思い質問させていただきました。 LoadVarsによるテキストファイルの読み込みをするとき、上記のような流れで読み込み後の処理を先に実行し、後から読み込みとするのはなぜなのでしょうか? ご教授やアドバイスなどいただけたらと思います。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 外部テキストからURLを読み込む方法

    昨日、外部テキストの読み込みでお世話になったものです。 言われたとおりにやってみたところちゃんとテキストは読み込めました。 次はURLを読みこもうと思い、みなさんの質問の参考になりそうなものを手がかりにやってみたのですが、うまくいきませんでした。 テキストファイルは『flash.txt』 シンボルはMCで フレーム1のアクションスクリプトは ―――――――――――――――――― System.useCodepage = true; myLoadVars = new LoadVars(); myLoadVars.onLoad = function(Success) { if (Success) { _root.text1.text = this.menu1; _root.url1 =this.url1; } }; myLoadVars.load("flash.txt"); --------------------------------------- となっています。 これでシンボルMCに on (release) { getURL("_root.url1"); } とやっているのですが、飛びません。 また前回と同じようにこちらのミスが多いのかもしれませんが、 知っている方がいましたらよろしくお願いいたしますm(__)m

    • ベストアンサー
    • Flash
  • 【AS3.0】外部テキストから配列を読み込む

    fla→PHPに変数・配列のデータを送り、 下記のようなテキストデータを.txtファイルに出力するものを作りました。 var1=1&var2=0&array1=1,2,3&array2=1,2,3,4&array3=1,2,3,4,5 送られた変数・配列はすべて連なっており、&で区切られています。 変数を読み込むには下記で出来るようですが、 参考URL:http://ninotk.oops.jp/weblog/?p=30 private var filePath:String = "topics.txt"; private var tpcLoader:URLLoader; init(); function init(){ tpcLoader = new URLLoader(); tpcLoader.dataFormat = URLLoaderDataFormat.VARIABLES; tpcLoader.addEventListener(Event.COMPLETE,onComplete); tpcLoader.load(new URLRequest(filePath)); } private function onComplete(evt:Event):void{ var src:String = evt.target.data; var vars:URLVariables = new URLVariables(src); contents.topics._date.text = vars.date; contents.topics._txt.text = vars.news; } 配列を読み込む手順がどうしても分かりませんでした... さらに上記のような変数・配列混合での読み込みは可能でしょうか。 もし不可能のようでしたら、変数のみのtxtと配列のみのtxtとで分けての出力も可能です。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • Flash ActionScript 2.0でアドバイスをお願いいたし

    Flash ActionScript 2.0でアドバイスをお願いいたします。 下記のような記述で、外部フォルダ内の画像(連番のファイル名)を読み込み表示させています。画像枚数は変動しますのでこのような形にしました。 そこで問題なのが、リンク先の指定です。 XMLを読み込んでファイル名「1」の画像にはID「1」のURLがクリックしたら開くようにしたいのですが、どのように設定すればいいのかわかりません; 素人なもので、どのように記述すれば良いかご教授いただければ幸いです。 どうぞよろしくお願いいたします。 ----------------------------- var n = 0; var s = 0; _forcusrect = false; load_mc = createEmptyMovieClip("load_mc", -1); var mcLoader:MovieClipLoader = new MovieClipLoader(); var oListener = new Object(); function searchTotal() { s++; $jpg = "img_top/p"+s+".jpg"; mcLoader.loadClip($jpg, load_mc); load_mc._alpha = 0; oListener.onLoadError = function() { total = s; clearInterval(sID); n = 0; autoExchange(); }; mcLoader.addListener(oListener); } function p_load(n) { $jpg = "img_top/p"+n+".jpg"; mcLoader.loadClip($jpg, load_mc); p_direction(n); load_mc._x = 0; load_mc._y = 0; load_mc._alpha = 0; _root.onEnterFrame = function() { load_mc._alpha += (180-load_mc._alpha)/30; current_num.text = n; total_num.text = total-1; } } function autoExchange() { if (n>=total-1) { n = 1; p_load(n); } else { n++; p_load(n); } } sID = setInterval(searchTotal, 70); pID = setInterval(autoExchange, 4000); myComboBoxListener = new Object(); myComboBoxListener.change = function() { clearInterval(pID); if (flag!==1) { pID = setInterval(autoExchange, myCombo.value*1000); } }; myCombo.addEventListener("change", myComboBoxListener); ----------------------------------------- XML ----------------------------------------- <?xml version="1.0" encoding="Shift_JIS"?> <urllist>   <anchor id="1" url="http://www.yahoo.co.jp" target="_self" /> <anchor id="2" url="http://www.google.co.jp/" target="_self" /> <anchor id="3" url="http://www.goo.ne.jp/" target="_self" /> </urllist>

    • ベストアンサー
    • Flash
  • 単一のFlashに単一のテキストファイルで複数の内容

    単一のFlashに単一のテキストファイルで複数の内容を1画面で表示させたいのですが、うまくいきません。 状況としては、【kotei1】には表示されますが、【kotei2】【kotei3】【kotei4】にはundefindと表示されてしまいます。 OS:Windows7 Flash:CS4 AS2.0 以下がASになります。 タイムライン1(全てレイヤー別に作成) ■kotei4(Layer4) ■kotei3(Layer3) ■kotei2(Layer2) ■kotei1(Layer1) 各タイムラインAS ■kotei4 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei4.text = my_lv.name4; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ■kotei3 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei3.text = my_lv.name3; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ■kotei2 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei2.text = my_lv.name2; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ■kotei1 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei1.text = my_lv.name1; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ***name.txt*** &name1=固定1 固定1を表示しています。& &name2=固定2 固定2を表示しています。& &name3=固定3 固定3を表示しています。& &name4=固定4 固定4を表示しています。& ***テキストデータsample***

  • 配列の並べ替えのやりかたを教えてください

    適当に 5,1,3,2,4,6 と書かれたテキストがあるとして、 これらの数字を大きい順に並べかえるにはどう 記述すればいいか教えていただけないでしょうか? もともとの並びから任意の数字を参照するところまでは わかりました。よろしくお願いします。 ================================================================ loadLV = new LoadVars(); //LoadVarsオブジェクトを作成 ranking=Array //配列を用意 loadLV.onData = function(data){ ranking = data.split(","); //コンマ区切りでデータを配列 trace("「" + ranking[0] + "」"); //5が出力されます }; loadLV.load("ranking.txt"); //テキストの読み込み

    • ベストアンサー
    • Flash
  • 外部txtファイルからの変数のロード

    ほぼ独学でフラッシュを始めることになりました。手始めに教科書に載っている外部ファイルから変数をロードするサンプルプログラムを実践してみようとしているのですが、以下の内容でムービープレビューをすると 1120 未定義のプロパティdate_txt.text へのアクセスです 1120 未定義のプロパティweather_txt へのアクセスです 1120 未定義のプロパティcomment_txt へのアクセスです とエラーが3つ表示されます。 作業環境:Flash CS3/WinVista/AS3.0 ※フラッシュ「p166.fla」内容 ステージ上にダイナミックテキスト「date」「weather」「comment」設置 ※「p166.fla」アクションスクリプト import flash.net.URLRequest; import flash.net.URLLoader; flash.net.URLLoaderDataFormat; flash.net.URLVariables; flash.events.Event; var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE,completeHandler); loader.load(new URLRequest("data.txt")); function completeHandler(event:Event):void{ var vars:URLVariables = event.target.data; date_txt.text = vars.date; weather_txt.text = vars.weather; comment_txt.text = vars.comment; } ※外部txtファイル「data.txt」内容 date=5月24日&weather=晴れ&comment=今日は買い物に行きました 大変お手数ですがご指導お願いします。

    • ベストアンサー
    • Flash
  • 【ActionScript】onLoad後の「this」がパスの役目を果たさない

    FLASH8(Win-XP)使用者です。 Flashで使う「this」がよくわかりません。 相対パスで記述することを前提としておたずねしたいのですが、 たとえば、 this.txtField1.text = 'abc'; my_lv = new LoadVars();  my_lv.onLoad = function(success){   this.txtField2.text = 'xyz';  } my_lv.load("data.txt"); とすると「abc」は表示されても「xyz」は表示されません。 this.txtField2.textのthisを削除すればいいのですがtxtField2にパス(らしきもの)がなくなってしまい気に入りません。 あとで置換するとき不便ですし… 単に「txtField2.text」と書くしかないのでしょうか? お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • sendAndLoadで

    多分稚拙な質問です。 phpとの連携でsendAndLoadを利用しようとしてます。 var temp_vars = new LoadVars(); temp_vars.code.text = "tekitou"; temp_vars.sendAndLoad("http://tekitou.jp/tekitou.php", temp_vars, "POST"); temp_vars.onLoad = function() { trace(this.hogehoge); } とするとphpからの返り値hogehogeが取れるのですが、下三行を temp_vars.onLoad = function() { _root.temp_hogehoge = this.hogehoge; } trace(_root.temp_hogehoge); とするとtraceがundefinedになります。単純にphpからの返り値をどこでも使えるグローバル変数に渡したいだけなんですが。 諸々試してはみたのですが、変数スコープの問題なのか、functionの使い方が間違っているのかさえ解らず悩んでいます。ご教授いただければと・・・

    • ベストアンサー
    • Flash

専門家に質問してみよう