外部テキストの読み込みについて質問

このQ&Aのポイント
  • FLASHの超初心者が外部テキストを読み込む方法について質問しています。
  • LoadVarsクラスを使用して外部テキストを読み込み、その内容をMCに書き出したいのですが、うまくいきません。
  • 提供されたアクションスクリプトを使用していますが、読み込みができません。わかる方は教えていただけないでしょうか。
回答を見る
  • ベストアンサー

外部テキストが読み込めません

はじめまして FLASHをつい1週間まえからはじめました超初心者です。 こちらの過去ログをみてやってみたのですが、うまくいかなかったので質問させてください。 外部テキスト(test.txt)をLoadVarsクラスで読み込み、 その中の定義(text=…)をMC(インスタンス名はtext)に書き出したいのですが、何度やっても書き出せません。 アクションスクリプトは ――――――――――――――――― System.useCodepage = true; myLoadVars = new LoadVars(); myLoadVars.onLoad = function(bSuccess) { if (bSuccess) { _root.text = this.text; } }; myLoadVars.load("test.txt"); ―――――――――――――――― 以上のようになっています。 わかる方いましたらよろしくお願いします。 質問初めてですので、今後のためにも言葉が足りなかったりしたら遠慮なく突っ込んでください。

  • Flash
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

ムービークリップ自体(_root でも ボタンでも)に変数を代入しても,何も表示されませんよ。 つまり, 「外部テキストが読み込めません」ではなくて, 読み込まれているのですが,表示はされません。 取りあえずテキストを表示するには,テキストを表示するためのテキストフィールドが必要です。 また, 「text」というすでに意味を持った言葉(文字列)を, インスタンス名や変数名に付けるのは避けましょう(やめましょう)。 まず, 「test.txt」の中身のデータを次のようにしておきます。 --------------------------- myData=あいうえお --------------------------- Flash の作成ですが, 新規ドキュメントを作成して,とりあえず任意の名前で「test.txt」と同じフォルダに保存します。 そのFlashのステージ上に, ダイナミックテキストのテキストフィールドを用意し, そのテキストフィールドにインスタンス名を付けます。 この説明では, 「myText」 というインスタンス名を付けたとしておきます。 そして,レイヤーを追加して, 「myText」 というインスタンス名のテキストフィールドが存在しない方のレイヤー, つまり新しく追加した方のレイヤーのフレーム1の空白キーフレームに, 次のように書きます(コピペ可能)。 ---------------------------------------- System.useCodepage = true; myLoadVars = new LoadVars(); myLoadVars.onLoad = function(bSuccess) { if (bSuccess) { // インスタンス名 myText のテキストフィールドに // この LoadVars の変数 myData の値を代入 _root.myText.text = this.myData; } }; myLoadVars.load("test.txt"); ---------------------------------------- ご質問で書かれているスクリプトの   // インスタンス名 myText のテキストフィールドに   // この LoadVars の変数 myData の値を代入   _root.myText.text = this.myData; ここを変えただけです。 他は全く同じです。 >> その中の定義(text=…)を >> MC(インスタンス名はtext)に書き出したいのですが、 ということなので,MC の中に表示するのでしたら, MC の中にテキストフィールドが必要になります。 上の状態で, インスタンス名 「myText」 のテキストフィールドを選択し, 右クリック→シンボルに変換で,ムービークリップに変換し, そのムービークリップにインスタンス名を付けます。 この説明では,「myMC」 というインスタンス名を付けたとしておきます。 この場合のフレーム1の空白キーフレームに書くスクリプトは次のようになります。 ------------------------------------------------ System.useCodepage = true; myLoadVars = new LoadVars(); myLoadVars.onLoad = function(bSuccess) { if (bSuccess) { // インスタンス名 myMC の MC 内の // インスタンス名 myText のテキストフィールドに // この LoadVars の変数 myData の値を代入 _root.myMC.myText.text = this.myData; } }; myLoadVars.load("test.txt"); ------------------------------------------------ 同じく,   // インスタンス名 myMC の MC 内の   // インスタンス名 myText のテキストフィールドに   // この LoadVars の変数 myData の値を代入   _root.myMC.myText.text = this.myData; ここの部分が違うだけで, 結局,最初に書いたスクリプトのこの行,  _root.myText.text    ↓変更↓  _root.myMC.myText.text に,myMC が入っただけです。 --- 変数名&インスタンス名について ------ 変数名やインスタンス名にすでにあるスクリプトなどを使うと紛らわしく,時には誤作動を起こす場合もあるので,使用しない方が良いです。 それで, my などを付けて,絶対に既存のスクリプトには存在しない名前にすることがよくあります。 ご質問で, スクリプト中に myLoadVars というインスタンス名を使用しているのもそのためです。 LoadVars には,すでに LoadVars クラスという意味がありますから,インスタンス名 として使用するのは避けた方が良いです。 ですから,特に myLoadVars というインスタンス名にする必要はありません。 よく見かける hoge とかでも良いのです。  hoge = new LoadVars();  hoge.onLoad = function(bSuccess) {   … 略 …  hoge.load("test.txt"); しかし hoge だと何に対する名前かわかりにくく, たくさん出てくるとhogeは何だったかさっぱりわからなくなるので, myLoadVars にしてあるのです。 引数 bSuccess もほとんど同じ理由です。 Success 自体はスクリプトにはありません。 したがって,  myLoadVars.onLoad = function(Success) { としても,全く差し障りはありません。 しかし Success は英語として "成功" の意味を持ちます。 ですから,「Success がスクリプトである」と「見る人」が間違えてはいけないので, bSuccess という全く意味の存在しない文字列にしてあるのだと思います。

shota1125
質問者

お礼

回答ありがとうございます 早速やってみたところできました。 変数に意味のある単語は使わないようにしたほうがよかったんですね。 丁寧に教えていただきありがとうございました

関連するQ&A

  • 外部テキストから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
  • 外部テキストをsplitで分割する時

    宜しくお願いいたします。 外部テキストをsplitで分割しようと思うのですが・・。 スクリプトはこんな感じになっています。 System.useCodepage = true; // Shift-JISのテキストを読み込む設定に変更 myText01 = new LoadVars(); // 新規LoadVarsオブジェクトmyTextの作成 txt_file01 = "text/text001.txt"; // 外部テキストファイル名を変数txt_fileに代入 myText01.load(txt_file01); // 外部テキストファイルの読み込み _root.bp=t001 //変数 myText01.onLoad = function(ok) { if (ok) { // 外部テキストファイルを読み込んだときの処理 work_txt = myText01._root.bp.split("~"); と書いて、text/text001.txtというテキストのt001という行を"~"で分割したいのですが、うまくいきません・・・。 変数でオブジェクトを指定しているのが悪いと思うのですが、何か良い方法はありますか? 何分初心者なもので・・・。 説明がわかりづらいかもしれませんが、困ってしまっているので宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • テキストファイルの読込について

    _rootの1フレーム目に以下のActionScriptを記述しました。 this.stop (); myLoadVars = new LoadVars(); myLoadVars.onLoad = function(Success) { if (Success) {   trace("result="+_root.result);  } }; myLoadVars.load("test.txt"); test.txtの中身は以下です。 result=test 実行したところ、結果は result=undefined でした。 result=testにならないのはなぜなのでしょうか?

    • ベストアンサー
    • Flash
  • 外部テキスト読み込み

    外部テキストを読み込んで そのテキストの中に、検索したい文字列が入っているかどうかが知りたいのですが、上手くいきません ソース System.useCodepage = true; my_lv = new LoadVars(); my_lv.onLoad = function() { find_num = my_lv.indexOF("検索したい文字列"); trace(find_num); }; my_lv.load("date.txt");

    • ベストアンサー
    • 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***

  • 外部テキストファイルでは文字間隔が反映されません

    初心者です。 外部テキストファイルを読み込んで、プロパティ上で文字間隔を設定しておりますが、文字間隔が反映されません。 フレームアクションは以下のように設定しております。 以下のサイトよりコピペで貼り付けました。 http://support.adobe.co.jp/faq/faq/qadoc.sv?228629+002 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { my_txt.text = my_lv.textContent; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("myExternalText.txt"); どのようにしてよいのかわかりません。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • CS3で外部テキストをHTMLにレタリングしたい。

    Flashに外部テキストを入れたいと思っているのですが、文字などは装飾したくHTMLでレタリングをしたいのですが、テキストをHTMLとしてレタリングするボタンを選択して以下のASを対応させるにはどうしたらよいでしょうか? 現状では、テキストをHTMLとしてレタリングするボタンを押しておいてもタグがすべて丸見えで通常のテキストになってしまいます。 インスタンスはaccessにしており変数はcontentsにしています。 外部ファイル名はaccess_contents.txtです。 var access_lv:LoadVars = new LoadVars(); System.useCodepage = true;//--この文の挿入位置もよく分りません、shift-jisで表示させたいです。 access_lv.onLoad = onText; access_lv.load("access_contents.txt"); function onText(success:Boolean) { if (success) { access.text =access_lv.contents; } else { access.text = "contents"; } } 環境 CS3 winXP AS2.0 flash9 以上、足りない点がある場合はご指摘ください。 よろしくお願いいたします。

    • ベストアンサー
    • 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
  • MCの色を外部テキストで制御する方法について

    ムービークリップに色をつけるときは、 ムービークリップにimg1と名前を付けて image = new Color(this.img1); image.setRGB(0xff0000); で成功します。 それを外部テキストファイルを使い色変更しようと考えましたが、うまくいかない為に質問させていただきました。 ============================== ・ムービークリップ名をimg1 ・テキストファイルread.txtに『&color1=0xff0000&』 とする 以下、asフレームです。 myLoadVars = new LoadVars(); myLoadVars.onLoad = function(Success) { if (Success) { image = new Color(this.img1); image.setRGB(color1); } }; myLoadVars.load("read.txt"); stop(); ============================== loadVariablesを使った方法も試しましたが成功しません。いろいろな言葉で検索しましたが見つからず、お手上げ状態なので、もし、分かる方がいたらお教えください。

    • ベストアンサー
    • Flash
  • テキストファイルの表示方法

    テキストファイルをそのまま表示させる方法を 教えてください。 過去ログ等から以下の所まで書きましたが、 取得したテキストの表示をどうやってよいのか分かりません。お願いします。 レイヤー1 System.useCodepage = true; nLoad = new LoadVars(); nLoad.load("hoge.txt"); ダイナミックテキストを作りその中に表示させたいです。ダイナミックテキストのインスタンスの名前は”mlinetxt”としました。 以上、宜しくお願いします。 FlashPro8

    • ベストアンサー
    • Flash

専門家に質問してみよう