• ベストアンサー

FLASH8 外部テキストファイルの読み込みについて

外部テキストファイルの読み込みを参考資料などを見ていると、下記のような形式で読み込みを行っているのですが。 a.txt --------------------- 任意の変数名1=値 任意の変数名2=値 任意の変数名3=値 --------------------- 下記のようなテキストファイルを読み込むことは可能でしょうか? a.txt --------------------- 2<>名前<>メールアドレス<>画像.jpg<> 1<>名前<>メールアドレス<>画像.jpg<> --------------------- ※最初の1文字目は連番の数字です 前文の方の読み込みは成功しておりますが、下の内容については、どうすればよいかわかりません・・・ 読み込みができるのであれば、各行はsplitで配列に格納したいと思っています。 どうぞよろしくお願いいたします。

  • Flash
  • 回答数4
  • ありがとう数12

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

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

以下,#2 の方の補足的回答だと思っていただければよろしいかと思います。 > 各行はsplitで配列に格納したいと思っています。 ここが具体的でなくてよくわかりませんが, 「<>」 を区切り記号として,  2, 名前, メールアドレス, 画像.jpg,  1, 名前, メールアドレス, 画像.jpg, というような2次元配列1つを作成するということとして回答します。 - - - - - - - そして外部テキストですが, 回答するにはもう1つ問題点があります。 データを作成するソフトやOSやプログラムや設定によって改行コードは違います。 1つの例として,  Windows の メモ帳 を用いて  文字コードShift-JIS(ANSI)で普通に,  2<>名前<>メールアドレス<>画像.jpg<>  1<>名前<>メールアドレス<>画像.jpg<>  というデータを記入して,  「data.txt」 というファイル名で保存した場合 についてスクリプト例を回答します。 「data.txt」 と同じフォルダにSWFがある場合の, フレームに書くスクリプト↓。 ---------------------------------------- // テキストをShift-JIS として扱う System.useCodepage = true; // LoadVarsクラスのインスタンス myLV を作成 myLV = new LoadVars(); // データを格納する配列 dataArr を作成 dataArr = new Array(); // ロード完了時の動作定義(引数:ロードしたデータ) myLV.onData = function(myData) { // 改行コード区切りで preArr を作成 preArr = myData.split("\r\n"); // preArr の要素数未満でループ for (i=0; i<preArr.length; i++) { // preArr を <>区切りで dataArr のi番要素 に代入 dataArr[i] = preArr[i].split("<>"); } // ---↓出力検証(本題と関係なし)↓--- for (i=0; i<preArr.length; i++) { for (j=0; j<dataArr[0].length+1; j++) { trace("dataArr["+i+"]["+j+"]="+dataArr[i][j]); } trace("------------"); } // ---↑出力検証(本題と関係なし)↑--- }; // 外部テキストのロード myLV.load("data.txt"); ---------------------------------------- 通常, LoadVars.onLoad でロード完了のタイミングを取得すると思いますが, 上の例では LoadVars.onData で取得しています。  LoadVars.onData = function(変数名){ } という形で定義するとその 変数 の値としてロードしたデータ自体が代入されます。 このような方法を使うと,  変数名=値&変数名=値&変数名=値&… というデータ形式でなくてもロードしたデータを取ってくることが可能になります。 ご質問では, > 外部テキストファイルの読み込みを参考資料などを見ていると、 > 下記のような形式で読み込みを行っているのですが。 と書かれていらっしゃいますが, 読み込み まででしたらどんな形のテキストファイルでも可能です。 たとえば XML でも HTML でも CSV でも SVG でも何でもです。 テキストのロードは何でも可能なのですが, ただ, XML を除くテキストの場合,  変数名=値&変数名=値&変数名=値&… のような形にしておかなければ, データの値が利用できない (名指しで呼べない) から, そういう形式のデータにしてあるだけです。 上のように LoadVars.onData を使うと, データ全体は名指しで呼べるようになるので, 変な形のデータでも工夫次第でその後の利用が可能になります。 - - - - - - - Windows メモ帳 の改行コードは \r\n(CR+LF) です。 また,文字コードは変えられますがデフォルトでは Shift-JIS です。 Excel で CSV を保存した場合も \r\n( CR+LF) です。 その他はソフトやそのソフトの設定によって変わります。 Mac の場合はソフトの設定によっては変えられると思いますが, デフォルトでは Shift-JIS で, 基本的に改行コードは \n(LF) だと思います。 その他も場合によって変わります。 - - - - - - - 上のコードを書いて 「制御」→「ムービープレビュー」 してみると, 「出力検証(本題と関係なし)」 によって次のようなものが出力表示されます。  dataArr[0][0]=2  dataArr[0][1]=名前  dataArr[0][2]=メールアドレス  dataArr[0][3]=画像.jpg  dataArr[0][4]=  dataArr[0][5]=undefined  ------------  dataArr[1][0]=1  dataArr[1][1]=名前  dataArr[1][2]=メールアドレス  dataArr[1][3]=画像.jpg  dataArr[1][4]=  dataArr[1][5]=undefined  ------------ 「<>」 を区切り記号としていますから, 画像.jpgの後にも <> があるため 画像.jpg の後にも "" という要素は存在します。 この点に少し注意してください。  

hahaha01
質問者

お礼

お返事ありがとうございます! ま、まさに知りたいことが全て解決しました!! スクリプトまでご提示いただき、とても感謝しております。 ご指摘のとおり、テキストファイルの内容は操作上、自由に書きかえれるものではなく、FLASHに読み込みだけとなるため、「<>」の区切り線の最後についても注意いたします! テキストファイルの文字コードは「Shift-JIS」です。質問内容に不備があったかと思いますが、ここまでご理解いただき幸いです! 本当にありがとうございました!!

その他の回答 (3)

  • rtch
  • ベストアンサー率25% (1/4)
回答No.3

データ形式が固定されてるのであれば myIndex_1=2<>名前<>メールアドレス<>画像.jpg<> myIndex_2=1<>名前<>メールアドレス<>画像.jpg<> としたらどうでしょうか myIndex_n の部分は好きなように変えていただけますし あるいはテキストファイルの先頭に単純に myDat=を付加して myDat=2<>名前<>メールアドレス<>画像.jpg<>1<>名前<>メールアドレス<>画像.jpg<> とか

hahaha01
質問者

補足

アドバイスありがとうございます。 データ形式というよりテキストファイル自体を操作することが できないという前提です。 なので、「myDat=」という文字列を追加することはできません。 あくまでも、テキストファイルを開いたら下記のようにデータが 格納されているのを前提にFlash側で読み込み各値を操作したいのです。 --------------------- 2<>名前<>メールアドレス<>画像.jpg<> 1<>名前<>メールアドレス<>画像.jpg<> --------------------- よろしくお願いいたします。

  • 15mm
  • ベストアンサー率65% (65/100)
回答No.2

私は外部ファイル読み込みにLoadVarsを使っており、以下はその場合の話となります。 LoadVarsでは、 1.ファイルを読み込み終わったとき 2.1のあとファイルをを解析し、自動で変数に格納し終わったとき の処理を指定することができます。 2を使う場合にはa.txtのような形式にする必要がありますが、 1を使うなら好きな形式にし、読み込んだ内容を受け取って自分で加工することができます。 参考URL内の(3)を応用(区切り文字を「=」から[<>]に変更)して頑張ってみてください

参考URL:
http://hima.chu.jp/flash/tips/loadvars.htm
hahaha01
質問者

お礼

アドバイスありがとうございます。 参考URLで少し道が開けた感じがいたします!! 通常のテキストファイルも(2)で読み込めると書いてますし、 (3)では改行コードで分けられることもありますね!! 参考に頑張ってみます!ありがとうございました。

  • swqamy
  • ベストアンサー率37% (11/29)
回答No.1

質問ですが、単純に SAMPLE2=2,名前,メールアドレス,画像.jpg SAMPLE1=1,名前,メールアドレス,画像.jpg とテキストファイルに書いて、Flashに読み込み、 読み込んだ変数「SAMPLE1」、「SAMPLE2」をsplitで区切っても 出来なかったのでしょうか?

hahaha01
質問者

補足

ご意見ありがとうございます。 ご質問にある以下の形式のファイルであれば、読み込みは成功しております。 ----------- SAMPLE2=2,名前,メールアドレス,画像.jpg SAMPLE1=1,名前,メールアドレス,画像.jpg ----------- 上記は「変数名=値」の形式ですから、理解できるんですが、 下記テキストには「=」もないしflashからみれば、ただの 文字列にしかならないのではないかと考え、そうなれば どうやって読み込むのか?となりました。 ----------- 2<>名前<>メールアドレス<>画像.jpg<> 1<>名前<>メールアドレス<>画像.jpg<> ----------- これを1行がひとかたまりとして認識させ、値を読み込む のかが知りたく、投稿させていただいたしだいです。 よろしくお願いいたします。

関連するQ&A

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

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

    • ベストアンサー
    • Flash
  • loadMovieでjpgを外部テキストから読み込むには?

    私はloadMovieを使ってjpgファイルを読み込みたいとおもっているのですが、ただjpgファイルを読み込むのではなく、変数指定を行い、外部txtファイルの変数に指定されているjpgファイルを読み込むようしたいと思っています。 下記のようなソースで書いているのですが、うまくいきません。どうか手ほどきしていただけないでしょうか? お願いします。 (1)タイムライン上に下記のプログラムを書いています。 forJpeg.loadVariables("test.txt"); (2)forJpeg2のムービークリップに下記のプログラムを書いています。 onClipEvent (load) { _root.forJpeg2.loadMovie(abc);//()内は変数名 } (3)test.txtファイルは下記のように書いています。 abc=news.jpg

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

    外部のテキストファイルを読み込みたいのですがプレビューすると Error opening URL "file:///D|/new.txt" というウィンドウが出て、ファイルが読み込めません。 (ちなみに読み込みたいファイル名はnew.txtです) Flashのファイルもnew.txtのファイルも同じDドライブ上にあります。 テキストファイルの先頭に変数と"="は入力していますし 、設定した変数とテキストファイルの変数が一致しているかも確かめました。 何が原因なのか分かりません。 詳しい方がいらっしゃいましたら教えてください。よろしくお願いします。

  • FLASHで外部テキストの読み込みができません。

    フラッシュを勉強中の者です。 外部テキストの読み込みの所でつまずいています。 新規ファイルで、ムービークリップのシンボルを作成し、その中にダイナミックテキストを配置。 で、変数をcontentにしました。 外部テキストの名前は「test.txt」 その中には、「content = あいうえおかきくけこ」と記述。 で、ムービーリップのアクションに onClipEvent(load){ this.loadVariables("test.txt"); } と、書いました。 これをムービーのプレビューをすると「あいうえおかきくけこ」が書かれると思うのですが、なぜかそうなりません…。 一応「content = "あいうえおかきくけこ"」とダブルコートで囲んでも無理でした。 なぜなんでしょう?よろしくお願いいたします。

  • FLASH外部テキスト読込 タグを読まない

    FLASHの外部テキスト読み込み お世話になります。 アクションスクリプトがあまり分かりません(^^;) FLASH MXの外部読み込みで質問があります。 ボタンクリックで外部テキストとjpgを読み込みたいのです。 Scrollber(コンポーネント)のtarget TextFirldに ダイナミックテキストのインスタンス名を入れると スクロールはするのですが、txtファイル内のタグが 露出してしまいます。 target TextFirld、ダイナミックテキストからそれらを 除くとタグは効くようになるのですが、今度は長文でも スクロールバーが動かなくなります。 ◆ステージの1フレーム目 -------------------------------------- System.useCodepage = true; disp.condenseWhite = true; loadVariables("text/01.txt", "bun"); loadMovie("img/a.jpg", "jpeg"); ◆テキスト1ボタン -------------------------------------- on (press) { loadVariables("text/01.txt", bun); loadMovie("img/a.jpg", jpeg); } ◆テキスト2ボタン -------------------------------------- on (press) { loadVariables("text/02.txt", bun); loadMovie("img/b.jpg", jpeg); } ◆ムービークリップ名:jpeg ◆ダイナミックテキストインスタンス名:bun タグが効くようになるにはどうすればよいでしょうか? どうぞよろしくお願いしますm(_ _)m

  • 外部txtファイルを利用した画像の読み込み方について

    外部テキストファイルを利用して画像を読み込みたいのですが、できずに困っています。 『loadMovie』を利用しての画像の読み込みはできるのですが、テキストファイルに『img1=button1.jpg』のように、変数を利用して汎用性を持たせたいと思っています。 今現在、リンクやターゲットについては変数の読み込みができている状態ですが、画像の場合ですとundefinedになってしまいます。 分かりにくい質問で申し訳ありませんが、分かる方、ご教授お願いします。

    • ベストアンサー
    • Flash
  • Powershellで外部テキストファイルより

    まだまだPowershellの初心者で勉強中です。よろしくお願いします。 下記のような記述がしてある『applist.txt』というテキストファイルがあります。 ホスト名  チーム名 abc123  ponpon666 12def456  gekogeko777 ghi78912  fufufu888 Powershellで、まず端末のホスト名を取得し、その値と、上記の『C:\share』というフォルダの中にあるテキストのホスト名と一致した行にある値を表示したいのです。 外部テキストは、他の作業でも使用するため編集はできません。 作ってみたものは、   $result = ipconfig /all $hostname = $result[6].split(":")[1].Trim()  Select-String $hostname -Path C:\share\applist.txt  として、  ホスト名がghi78912という名前のPCのPowershell ISEで実行したところ  C:\share\applist.txt:3:ghi78912 fufufu888 と1行分が出てしまいます。 これをチーム名のfufufu888だけが取得できるようにするには、どのようにすると良いのか、教えていただけませんでしょうか。

  • テキストファイルからの読み込みがうまくできません(>_<)

    C言語初心者の学生です。 読んでいただきありがとうございます。 テキストファイルに数字を並べ、それを読み込んで char型の変数に入れ、さらにatofによってfloat型に変換し、計算に使っていくということがしたいのですが、 テキストファイルの書き方がおかしいのか、プログラムの書き方がおかしいのか、テキストファイルに書いたとおりの値とは異なるおかしな値が表示されます・・・ だいたいのプログラムの書き方は、 char型のa2、float型のa[n][n]、FILE *fpINを定義して if ( (fpIN = fopen("matrix.txt", "r" )) != NULL ){ if ( fgets(a2,sizeof(a2),fpIN) != NULL ){ } fclose( fpIN ); } for(i=0;i<n;i++){ for(j=0;j<n;j++){ a[i][j]=atof(a2); } } というようなものです。 テキストファイルは、数字をカンマで区切ったり、スペースで区切ったりと いろいろ試してみたのですが、やはり書き込んだ値とは異なるものが表示されます・・・ 最終的には、ひとつのテキストファイルに 複数の行列のための値を書き込んでおき、それを読み込んで計算させるということをしたいのです・・・ どなたか、正しく値が読み込まれない原因が分かりましたら、教えていただければと思います。 お手数をおかけしてすみませんが、よろしくお願いします。

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

    外部テキストの読み込みについて質問です。 AS2.0で作成しています。 PHPのカウンタ機能を応用して、データを送信する毎に 1.txt、2.txt、3.txt…といったようなファイル名が付いたテキストを生成させています。 テキストデータにはそれぞれ座標が入っており、FLASH上に直線で表示させます。 とりあえず、最も新しい直線を表示させようと思い以下のようにASを書いてみました。 var col :Number = 0x000000; var a:Number = 0; Count = new LoadVars(); myLV = new LoadVars(); Count.load("http://●●/●●/counter.txt"); Count.onLoad=function(){ count = Count.cn myLV.load("http://●●/●●/+"count"+.txt"); } myLV.onLoad=function(){ lineStyle( 2, col); for (i = 0; i < myLV.pn(X座標の数); i++) { if(a != 0){ lineTo(myLV["x座標"+a],myLV["y座標"+a]); a++ } else { lineStyle( 2, col); moveTo(myLV["x座標"+a],myLV["y座標"+a]); a++ } } }; 動的なファイル名にアクセスさせる為にmyLV.load("http:~としてみましたが、 どうもこの部分がおかしいようです。 直接ファイル名を指定してやると、ちゃんと直線が表示されます。 今回教えていただきたいのは、 ・動的ファイル名の指定の仕方 ・最新の10件の直線を表示させる方法 ・「次へ」「前へ」ボタンを押すと、過去ログを10件づつ表示させたい ASはどのように記述すればいいでしょうか? ご教示お願い致します。

  • FLASH ダイナミックテキスト 外部ファイル

    初めまして。 現在外部ファイル(mNO.txt 内容:a=1&b=2&c=3&d=4&e=5)を アクションスクリプト(レイヤーにloadVariablesNum("mNO.txt", 0);)で読み込み、 外部ファイルに書き込まれている値をダイナミックテキストで表示させたいのですが、 外部ファイルは読み込まれますが、変数の値がうまく表示されません。 方法は、 テキスト入力をして、これをダイナミックテキストに変換・変数(no1)を設定し、シンボルに変換(ムービークリップ)、 レイヤーに上のアクションスクリプトを入力。 ムービークリップにアクションスクリプト、 (onClipEvent (load) { no1 = a + "号室"; }) を入力。 以上です。 デバッグすると 左上に _lebel0. L_lebel0.instance1 のように表示されますが関係あるのでしょうか。 バージョンは6です。 説明が下手で申し訳ございません。 よろしくお願いします。

    • ベストアンサー
    • Flash