- ベストアンサー
外部テキストの内容を変数として扱うには。
data.txt内容 myx=100 data.txtを読み込み、ムービークリップのアクション this._x=***; の***の部分に値「100」を代入したいのですが、どうすればいいのでしょうか? FLASH初心者で説明わかりにくいと思いますがよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
*** の部分は, 『this._x を書く場所』 と,『外部テキストをロードするスクリプト』 によって変わるのですよ。 それで,誰も答えられないわけです。 それに, 「this._x=***;」 というものがすごく微妙なので,どういう状況での,this._x=***; かによって,外部テキストをロードするスクリプトも変わってしまうわけです。 補足説明してください。 一応うまく行く例を書いておきますが, おそらく状況が違うような気がします。 どの例も, SWF や HTML と同じ階層に(フォルダに) data.txt があった場合です。 ~例1~ onClipEvent (load) によって,loadVariablesメソッドで data.txt を読み込み, onClipEvent (load) を書いた ムービークリップ 自信の x座標を 100 にする場合。 ムービークリップ自体に書くスクリプトです。 ------------------------- onClipEvent (load) { //このムービークリップに"data.txt"を読み込む this.loadVariables("data.txt"); } //読み込みが完了したら onClipEvent (data) { //このムービークリップを myx に移動 this._x = myx; } ------------------------- 参考URL 「MovieClip.loadMovieで外部ファイルを読込む」 http://www.fumiononaka.com/TechNotes/Flash/FN0307007.html より引用 onClipEvent (data)イベントハンドラアクションを、MovieClip.loadVariablesメソッドのロード待ちとして使用する場合には、「最後の変数がロードされたときにdataイベントが1回だけ発生します」 ~例2~ _root もしくは,動かしたいムービークリップの タイムライン のフレームに書くスクリプトです。 MovieClip.loadVariables ではなく,LoadVars を使った場合です。 また, this という相対パス通用しないので, ムービークリップに 「A」 というインスタンス名を付けた場合です。 ------------------------- //LoadVarsインスタンスにLoadVars.onLoadメソッドを定義 myLoadVars = new LoadVars(); //読み込まれたとき,引数がtrueかどうかを判定 myLoadVars.onLoad = function(success) { if (success) { _root.A._x = this.myx; } }; //LoadVarsインスタンスに "data.txt"をロード myLoadVars.load("data.txt"); ------------------------- 参考URL 「LoadVars クラスを使用して外部テキストファイルを読み込む」 http://www.macromedia.com/jp/support/flash/ts/documents/fl0343.html ~例3~ 上記 ~例2~ をタイムラインではなく, ~例1~ と同様,ムービークリップに書く場合です。 やはりムービークリップに 「A」 というインスタンス名を付けた場合です。 ------------------------- onClipEvent (load) { myLoadVars = new LoadVars(); myLoadVars.onLoad = function(success) { if (success) { _root.A._x = this.myx; } }; myLoadVars.load("data.txt"); } ------------------------- 一応 3例 ですが,まだまだ場合が考えられます。 上記 3例 は,すべて外部テキストをロードすると同時に, いきなり 「this._x = ***」 をするのではなかろうかと言う,警戒心をはらんだものです。 だからすべて,外部テキストのロード待ち処理を入れています。 あらかじめ,テキストをロードしておいて, その後に確実にテキストがロードされた状態で, 「this._x = ***;」 をするのであれば,上記ほど警戒する必要はないかもしれません。 また, テキストをロードした場所によって,パスも当然変わります。 その辺も,ご質問からではわかりません。 なお,補足質問される場合は,Flash の バージョンも書いてください。 バージョンによっては,LoadVars は使えません。
お礼
すみません、初めはフレームに記入する方法でいろいろ実験していたのですが、 「例1」のムービークリップに直接入力する方法で 思い通りに動作しました。 次回からの質問時にはきちんと使用環境などを入力するよう心がけます。 「フレームアクション」や「クリップアクション」の違いで書き方が変わることをはじめて知りました。 ありがとうございました。