• 締切済み

外部テキストの一行単位での読み込み

DPEの回答

  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

Flash でのテキストファイルの読み込みはC言語とは違い、文字列ではなく変数として読みます。 例えば、テキストファイルの内容が次のようになっていたとしますと。  test=テスト これをC言語で読むと「test=テスト」という1つの文字列になってしまいますが、Flash では、変数 test が定義され、その中に「テスト」の文字列が格納されます。 & でつなげると、複数の変数を読むこともできます。例えば、  test1=テスト1&test2=テスト2 この場合は、test1 と test2 という2つの変数に、それぞれ「テスト1」と「テスト2」の文字列が格納されます。 このように、Flash でのテキストファイルは全て、変数として読み込むことになります。 配列変数は残念ながら読むことができないのですが、代わりに、文字列を指定の区切り文字で分割し、配列に格納するというスクリプトがあります。 読み込むテキストファイルは、  test=FOOT,HAND,HEAD といった具合に、各文字列を” , ”などで区切っておきます。 テキストファイルから test を読み込み、String オブジェクトの split メソッドで加工すると、文字列を配列に1つずつ格納できます。 Flash はテキストファイル以外にも、JPEG 画像と swf ファイルを読み込むことができます。 どの外部ファイルを読む場合もそうですが、読み込みにかかる時間を考慮するようにしましょう。 外部からデータを読む LoadVars や loadMovie は、”○○ファイルを読み込め”の命令を出すだけです。読み込みが終わるまでスクリプトの実行がそこで止まるのではなく、次のスクリプトを実行しながら、その裏で読み込みが続行されます。 読み込みが終わらないうちに先に進むと、利用しようとした変数が未定義( undefined )になっていたり、画像やムービーが表示されないなど、バグの原因になります。 よって、読み込んだ変数や画像・ムービーを利用して何かをする場合は特に、読み込みの終了を待ってから先に進むことが重要です。 読み込みの終了を待つにはいろいろな方法がありますが、よく使われるのは、読み込みの終了を知らせるフラグを用意し、このフラグを監視して先に進むという方法です。 フラグの監視はフレームで行います。 ただし、フレームアクションは再生ヘッドがそのフレームに来た、その時1度しか実行されないので、いつか値が変わる、といった動作のフラグを監視するには工夫が必要です。 しかし、これは複数のフレーム間を行き来すれば、その都度フレームアクションは実行されるということですから、この特徴を利用します。フラグの監視には、よく使われる手法です。 読み込みに関するフレームの構成をまとめますと、次のような流れになります。  フレーム1:初期設定と読み込み  フレーム2:読み込み終了を待つためのダミー。何もしない  フレーム3:読み込みの終了を待って先に進む テキストファイル「 elang.txt 」の中身を、  test=FOOT,HAND,HEAD このような形で記述しておきます。区切りの文字は、半角( ASCII 文字)の文字であれば何でも構いません。 これを読み込み、各単語を配列 elangword に格納するスクリプトは、大体、次のようになります。 (↓このスクリプトをコピーして利用する場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)  ・フレーム1に設定するスクリプト   //読み込み終了フラグ   //終了時true、それ以外はfalse   load_status = false;   //Shift-JISで読み込む   System.useCodepage = true;   //LoadVarsオブジェクトの生成と読み込み   load_obj = new LoadVars();   load_obj.load( "elang.txt" );   //読み込み終了時の処理   load_obj.onLoad = function( success )   {    //正常に終了した場合、完了を知らせる    if( success )    {     load_status = true;    }   }; onLoad は LoadVars.load での読み込みが終わった時に発生するイベントで、この時に実行する処理を関数として定義しておくことができます。 onLoad で定義する関数の引数 success には、読み込みが正常に終了した時に true 、失敗した時に false が渡されます。ここでは、正常終了時に終了をタイムラインに知らせる意味で、用意したフラグを true にしています。 なお、読み込むテキストファイルを、文字コード UTF-8 ( Unicode )形式で記録している場合は、   //Shift-JISで読み込む   System.useCodepage = true; この部分は削除してください。文字化けの原因になります。  ・フレーム3に設定するスクリプト   //読み込みが終了した場合   if( load_status )   {    //Stringオブジェクトの生成    str = new String( load_obj.test );    //読み込んだテキストを”,”で分割し、配列に格納する    elangword = str.split( "," );   }   //それ以外の場合は読み込みの終了を待つ   else   {    gotoAndPlay( 2 );   } 読み込みが終わると、読み込みを実行した LoadVars オブジェクトに変数が定義され、読んだデータはその中に入っています。上記の例では、load_obj に test という変数が定義されていて、その中身は  FOOT,HAND,HEAD となっています。 これを、String オブジェクトで加工します。 String オブジェクトは、まず、操作する文字列を決めます。ここでは、load_obj.test に入っている文字列、ということになります。 split メソッドで、” , ”を区切りとして分割し、配列 elangword に1つずつ格納します。 elangword の中身は、  elangword[0] → FOOT  elangword[1] → HAND  elangword[2] → HEAD となります。 区切り文字を” , ”にしますと、利用したい文字列の一部に” , ”がある場合でも、強制的にここで分断されてしまいます。 タイピング練習であまり使わない文字というと、水平タブ( \t )などではないでしょうか。 テキストファイルで水平タブを挿入する時は、\t ではなく、URLエンコード %09 で挿入します。 テキストファイルに  test=FOOT%09HAND%09HEAD split では、  elangword = str.split( "\t" ); と記述すると、” , ”を使う文字列も分割されずに、配列に格納することができます。 長くなってすみませんでした。 不明な点がありましたら、補足してください。

関連するQ&A

  • 外部テキストの読み込み

    Flash lite1.1で、外部テキストの読み込みが実現できません。 text.txtファイルをswfと同じフォルダに作成し、中身を「text=あいうえお」にしました。 swfのほうでダイナミックテキストで変数を「text」にし、同じシーンのボタンに下のスクリプトを記述 しました。 // on (press) { loadVariables("text.txt",0); } // よろしくお願いします。

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

    はじめましてよろしくお願いしますm(_ _)m 最近FLASHのアクションスクリプトを触るようになったのですが、どうしてもわからないことがあるので質問させて下さい。 やりたいのは…、 text01=あいうえお &text02=かきくけこ &text03=さしすせそ という外部テキストファイルがあってそれを1つのswfファイルが読み込まれるごとに違う値を表示したいです。イメージとしては下のような感じです。 <sample.swf>←ここではtext01の内容を表示 ・ ・ <sample.swf>←ここではtext02の内容を表示 ・ ・ <sample.swf>←ここではtext03の内容を表示 ・ ・ swfファイルを個別に用意し、外部テキストの変数をそれぞれ指定してやればできるのですが、それではswfファイルが複数になってしまうのと読み込みにも時間がかかるので(見出しに使いたいのでフォント埋め込みです)なんとか1つのswfファイルでできないか考えています。 FLASHではこういったことは可能でしょうか? 何かヒントだけでもいただけると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 二つのテキストファイルを行単位で交互に一つに

    10000行のテキストファイルが二つあります。 二つのテキストファイルの内容を行単位で交互に結合させて一つのテキストファイルにまとめたいのですが 例えると下記のようにしたいです。 二つのテキストファイルA.txtとB.txtがあるとします。 ---------------------------------------------- A.txt ああああああああああああああ ささささささささささささささささ ななななななななななななななな ------------------------------------------------ ------------------------------------------------ B.txt かかかかかかかかかかかかかか たたたたたたたたたたたたたた はははははははははははははは ----------------------------------------------- A.txtとB.txtの内容を行単位で交互に一つのテキストファイルとしてC.txtのように保存したいです。 ----------------------------------------------- C.txt ああああああああああああああ かかかかかかかかかかかかかか ささささささささささささささささ たたたたたたたたたたたたたた ななななななななななななななな はははははははははははははは ---------------------------------------------- 検索して調べてみたのですが Pasteコマンドで実現させる方法を試してみたのですが うまくいかず、もしかしたらWindowsにもともと備わっていない機能なのではないかと思い検索したらbusybox64.exeを ダウンロードしてインストールしようと思いましたが コマンドプロンプトにbusybox64.exe --installを 入力してみますとうまく生きました。 busyboxを使わずに行単位で交互にテキストファイルを結合させる方法も知りたいです。 よろしくお願い致します。 返答をお待ちしております。

  • 外部テキスト読み込みで改行をなくしたい。

    過去のアンサーを見たのですが希望の回答が見つからなかったため質問させていただきました。 フラッシュで外部テキスト読み込みにしているのですが、そのテキストファイルの本文を改行するとフラッシュの中でも改行されてしまいます。 できれば<BR>を記入したところ以外は改行されたくありません。 かといってテキストファイル内で改行を入れておかないと1列で表現することとなり見づらくなります。 解決するにはどうすればいいでしょうか?

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

    Flash初心者です。PHPスクリプトは多少組める程度です。 現在、Flashであらかじめ用意しておいた%をテキストに,区切りで保存しています。txtファイルには地域別に1日~31日までの%を記述してあります。 テキストは読込めたのですが、splitでうまく分割できません。日別(本日の日にち)で出力させたいのですが配列が不慣れです。どなたか教えてください。

    • ベストアンサー
    • Flash
  • 1行単位で差分を出力するテキスト比較ソフト

    1行単位で差分を出力するテキスト比較ソフトを探してます。 2つのファイルで差異を比較するDIFFソフトは多いですが、 比較対象行の上下の順番が違うとうまく差分を検出してくれません。 処理速度は遅くなると思いますが、2つのファイル間で1行ごとに 差分を表示し、保存できるソフトがあれば紹介してください。 よろしくお願いします。

  • 外部テキストファイルを読み込ませたい

    ダイナミックテキストを作成しUIScrollBarを取り付けました。 テキストの内容はダイナイナミックテキストに直接書いていますが、すぐ変更になるのでその都度パブリッシュするのが面倒です。 外部のテキストファイルを読み込ませたいのですがどのように拡張すればいいか教えてください。Flash Professional 8を使用しています。 まだ、Flashをはじめたばかりです。

    • ベストアンサー
    • Flash
  • 外部テキスト読み込みでマーキーしたい

    Flashのアクションスクリプトを使い、外部のテキストを読み込ませ、さらにそのテキストをmarqueeタグのように、左から右へ流れるように表示させ、それを繰り返したいです。 以下のページを参考にし、外部テキストを表示するところまでは問題なく出来ました。 http://www.mdn.co.jp/content/view/4566/111/ marqueeのようなスクロールは、ダイナミックテキストをモーショントウィーンでやりました。 ただし、読み込ませる外部テキストの文字数が毎回違います。 それにより、文字数が 1、読み込ませるテキストの文字数が毎回違うため、文字の長さによっては、文字が隠れて表示されない。 2、読み込ませるテキストの文字数が毎回違うため、文字の長さによってモーショントウィーンではうまく繰り返しのタイミングが掴めない。 ということです。 1、はダイナミックテキストで文字数がいなかる場合でもちょうどぴったりテキスト枠のサイズが指定できる方法はないでしょうか? 2、ちょうど読み込んだテキストの最後が消えた時点で、また頭から繰り返すにはどうすればよいでしょうか? 環境は、 Windows Vista Flash Pro 8 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 外部から読み込んだテキストを表示する際の問題

    テキストを外部から読み込み、splitを使用して配列にし、 ボタンが押されたら指定された行を表示するという作っています。 ボタンを押すと指定行は表示されるのですが、いくつか問題が出てしまいました。 1.文字をテキストフィールドの左上に表示したいのに隙間が空いてしまう(下にずれてしまう) 2.文字化けする(外部テキストはEUC) 1は改行が入ってしまうのかな?とも思うのですが直し方がわからずどうしても解決できません。 アドバイスをお願いします。

    • ベストアンサー
    • Flash
  • Flash 外部テキスト 書き出し

    Flashで外部テキストの読み込み例はたくさんありますが、 Flashから外部テキストへ値を書き出す事はできるのでしょうか? Flash側から外部テキストへ値を書き出し(テキストファイルでなくても構いません)後にその値を再度Flash側で読み込むという動作を望んでいます。 バージョンはFlash8+AS2.0です。 ご教授願います。