- 締切済み
同一テキストファイル内にある別の文章を外部から読み込ませたいです
はじめまして。 参考本を読みながらフラッシュに取り組んでいる初心者です。 質問は,一つのテキストファイル(news.txt)に「&news1=○○○、&news2=△△△」と言ったように複数の文章を記入し それをフラッシュの複数のテキストフィールドに読み込ませたいのですが、上手く行きません。 どうすればよいですか? 参考本には「同一テキストファイル内に存在する別の文章を他のテキストフィールドへ転送することも出来ます」と、書いてあります。 では、宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
勝手に Adobe Flash MX 以上のバージョンをお持ちと言うことで回答します。 > 同一テキストファイル内に存在する別の文章を > 他のテキストフィールドへ転送 こちらの方が簡単だと思います。 まずこちらをする方法です。 ステージ上に,「my_txt1」 と 「my_txt2」 という "インスタンス名" のダイナミックテキストフィールドを作成します。 ダイナミックテキストに付けるのは 変数名 ではなく インスタンス名 です。 文字の色は黒など見える色に設定してください。 大きさは,とりあえず10文字程度が入るような大きさで良いと思います。 わかりやすいように,「テキストの周囲にボーダーを表示」ボタンを押した状態にして, ダイナミクテキストフィールドの周りに枠線を付けておくほうが良いと思います。 そして 「my_txt1」 と命名したダイナミックテキストフィールドに, 『あいうえお』 と手動で記入しておきます。 さらにステージ上にボタンを作成して, そのボタンに, ---------------------------------------------- // ボタンをクリックしたとき on (release) { // my_txt2 に my_txt1 の内容を表示(代入) _root.my_txt2.text = _root.my_txt1.text; } ---------------------------------------------- という ActionScript を書いて,「制御」→「ムービープレビュー」して, ボタンをクリックすると 『あいうえお』 が 「my_txt2」 にも表示されると思います。 単にそういうことです。 『あいうえお』 を両方に表示させるのではなくて, 『あいうえお』 を 「my_txt1」 から 「my_txt2」 に "移動したように見せる" には次のようにします。 ---------------------------------------------- // ボタンをクリックしたとき on (release) { // my_txt2 に my_txt1 の内容を表示(代入) _root.my_txt2.text = _root.my_txt1.text; // my_txt1 の表示内容を空にする(空白文字を代入) _root.my_txt1.text = ""; } ---------------------------------------------- 移動したように見えますが,実際は移動したのではなくて, 『あいうえお』を「my_txt2」にコピーする ↓その後 「my_txt1」を空にする という2段階の手順を踏みます。 こういうように 「1段階1段階,何をどうするのか。」 を考えるのがプログラミングです。 ======================= では,本題。 「news.txt」に『&news1=○○○、&news2=△△△』というデータがあったとします。 また,「news.txt」と同じフォルダに Flash の SWF ファイルを置く物とします。 また, ステージ上には上と同じように「my_txt1」 と 「my_txt2」 という "インスタンス名" のダイナミックテキストフィールドを作成しておいたものとします。 新規でレイヤーを挿入して, そのレイヤーのフレーム1の空白キーフレームに次のように書けば, 「my_txt1」 には 『○○○、』 「my_txt2」 には 『△△△』 がそれぞれ表示される物ができます。 -------------------------------------------------- // 外部テキストを Shift-JIS で読み込む(UTF-8では不要) System.useCodepage = true; // myLV という LoadVarsインスタンスを作成 myLV = new LoadVars(); // // myLV にデータがロードされたときに実行 myLV.onLoad = function(seikou) { // ロードに成功した場合( // seikou の値が true のとき) if (seikou) { // my_txt1 に myLV 内の news1 の値を表示 _root.my_txt1.text = myLV.news1; // my_txt2 に myLV 内の news2 の値を表示 _root.my_txt2.text = myLV.news2; } else { // ロードに失敗した場合 // my_txt1 に 『ロード失敗』 を表示 _root.my_txt1.text = "ロード失敗"; // my_txt2 に 『データがありません』 を表示 _root.my_txt2.text = "データがありません"; } }; // // myLV に news.txt をロード myLV.load("news.txt"); -------------------------------------------------- Flash MX 以降(Flash Player 6 以降)には, LoadVars というテキストデータロード用のオブジェクトが用意されています。 通知機能を持った変数と値の入れ物です。 その LoadVars オブジェクトのインスタンスである myLV に外部テキストをいったんロードしておいて, 外部テキストがロードされしだい,テキストフィールドにその中のデータを表示させるという流れです。 こういうシンプルな形の参考URLがなかなか見つかりません。 理解を深めるために, 検索エンジンで LoadVars と検索してみると,さらに深い内容のことや,全然別の使い方などの例が見つかると思います。
お礼
わかりやすい回答ありがとうございます。 早速家に帰り次第やってみます。