• ベストアンサー

外部ファイルからのデータの読み込み

以前、同じ内容の質問をさせて頂きましたが、「スクロール表示」にFocusされてしまい、本来お尋ねしたかった内容が隠れてしまったので、再度質問させて頂きます。 「News Release」のようなページで扱われているように、過去ログの一覧表のようなものを作りたいのですが、可能でしょうか?、と言うのが本来の質問です。 日付 タイトル XXXX XXXXXXXXXXXX    XXXXXXXXXXXX XXXX XXXXXXXXXXXX    XXXXXXXXXXXX このような一覧を表示したいのですが。 どうぞよろしくお願い致します。

  • Flash
  • 回答数9
  • ありがとう数15

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

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

MS Pゴシックはプロポーショナルフォントです。プロポーショナルフォントは、文字を並べた時に不自然な間が空かないように文字の送りが調整されたフォントで、例えば1と2では、同じ 14pt でも2の方が1文字あたりの少し幅が広くなっています。 また、テキストフィールドの大きさを縮小すると、文字のサイズが自動的に縮小されて小さくなることがあるようです。 タブが計算通りにいかない理由としては、このくらいしか思いつきませんが。 文字のサイズが気になる時は、TextFormat の size プロパティで設定し直しておくといいかもしれません。 紹介したスクリプトでは、format という TextFormat オブジェクトを生成して使っています。文字のサイズは、tabStops の前あたりで  //文字のサイズを設定  format.size = 15; といった具合で設定しておくと、タブと一緒に設定されます。 ところで、フォントですが。 ダイナミックテキストで大量の文字を表示する場合は、文字のアウトライン情報を埋め込まないデバイスフォント(フォント名が”_”で始まるフォント)がオススメです。 ムービーを再生するマシンでは、指定したデバイスフォントに最も近いフォントで表示されます。 デバイスフォントについての詳細は、ヘルプなどを参考にしてください。 ---------------- Flash MX には、ScrollBar というコンポーネントがあります。 最初から提供されている UI コンポーネントは、「コンポーネント」のライブラリウィンドウから配置します。配置や変形に関しては、普通のムービークリップやボタンシンボルと同様です。 テキストフィールド disp_fld の横に ScrollBar コンポーネントのインスタンスを配置し、「変形」ツールなどで大きさをテキストフィールドの高さに調節してください。 このインスタンスを選択して「プロパティ」パネルを見ると、右上の方に「プロパティ」と「パラメータ」というタブが表示されているかと思います。 コンポーネントとは、パラメータを持つムービークリップです。このパラメータを編集するパネルが、「パラメータ」のタブです。各項目の名前が表示されている右側をクリックすると、値を編集できます。 ScrollBar コンポーネントのパラメータは2つです。  ・Target TextField   スクロールを利用するテキストフィールドのインスタンス名。ここでは disp_fld と入れてください。  ・Horizontal   横スクロールの切り替えフラグ。true で横、false で縦のスクロールバーになります。 ファイルを多く読み込むか、長いテキストを読み込んでみてください。スクロールが必要になると、スクロールバーのつまみが表示されます。 なお、テキストフィールドに背景や枠がないと、スクロールバーが目立って間抜けになります。テキストフィールドの外枠や背景を設定する方法は、以前他で回答したことがあるので、よろしければご参照ください。  ・flash MX でのテキストフィールドの色変更   http://okweb.jp/kotaeru.php3?q=962597 描画ツールで描いた四角形の上に、外枠・背景なしのテキストフィールドを重ねても、それらしい雰囲気は出ます。 Flash MX 2004 では、この ScrollBar コンポーネントは廃止されてしまいました。 代わりに、より高機能な TextArea コンポーネントというコンポーネントが提供されています。 TextArea コンポーネントでは、必要に応じて自動的にスクロールバーが表示されます。 ただし、TextArea コンポーネントはフォントなどの設定の仕方がややこしい上に、タブ幅が設定できなくなってしまいます。 スクロールバーを自前で作るのはかなり面倒です。1行ずつスクロールするボタンなどであれば、割と簡単に作れます。 また長くなると、スレが重くなりますので ^^; スクロールについては、改めて別のスレを立てた方が、いい回答が得られると思いますよ。

teddy1014
質問者

お礼

色々とありがとうございます。 フォントの件、ようやくわかりました。微妙な調整は結構経験によるものなんでしょうね。 Scrollバーの件は、おっしゃる通り別の質問で掲載させて頂きました。 確かにScrollバーと言うコンポネントは無かったです。 textareaと言うコンポネントはありましたが、データを入力したら勝手にスクロールバーが表示されるようですが、色々な設定をどこですれば良いのか、良く分かりません。 いやぁ、非常に助かりました。 これからも宜しくお願い致します。

その他の回答 (8)

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

タブのコードですが。 何を見ればと言われましても、白状しますと、半分は知識で半分は実践で実証したというのが正直なところです ^^ゞ コンピュータでの文字は、1文字ずつコードを割り振って扱います。日本語の表示に使われるシフトJIS、Flash Player 6 からは Flash の標準になった UTF-8( Unicode )など様々なコード表があり、コードの割り振り方がそれぞれ違います。 文字コード表の1つに、ANSI というコード表があります。半角文字の標準とされるもので、プログラムの世界では昔から利用されているコード表です。 ANSI コード表にはタブや改行・ビープ音を鳴らすなど、目に見えない、いわゆる制御文字のコードも割り振られています。 この表で、水平タブのコードは 09 です。ちなみに、改行は 10 (16進数では 0A )、復帰が 13(16進数では 0D )です。 テキストファイルから読む変数に改行などの特殊文字を挿入する方法は、Flash のテクニカルノートで公開されています。  ・CGIで文章を改行させて Flash に渡すには   http://www.macromedia.com/jp/support/flash/ts/documents/fl0159.html  ・テキストファイルから特殊文字を読み込む時の表記方法   http://www.macromedia.com/jp/support/flash/ts/documents/fl0100.html 特殊文字を挿入する時に指定するコード(%○○の、○○の部分)は、ANSI コード表で各文字に割り振られているコードと全く同じものです。(改行と復帰のコードは、どちらも改行として扱われます) タブのコードは記載されていませんが、タブも ANSI コードと同じ %09 で挿入できるのではないかという発想でした。 ------------------ タブ= %09 は、このコードを見つけたら、その次の文字を、同じ行(改行コードが現れるまでの間)のどこの位置から表示するかという指定です。09 という数字そのものがその位置の指定になっているわけでも、他の数字で違うタブ幅になるわけでもありません。 この位置を具体的に指定するのが、TextFormat オブジェクトの tabStops プロパティです。 タブ幅は、  format.tabStops = new Array( 200 , 400 ); のように、配列で渡します。new Array に渡す引数が、それぞれのタブの停止位置になります。単位はポイントですので、ダイナミックテキストに設定した文字のポイントを参考にして、見やすい配置になるように数値を調節してください。 タブについては、実は私も研究中(ヘルプと実際に試しながらやってます ^^;)で、偉そうに解説できるほど詳しくはないのですが、  ○○○ □□□□□      △△△△△△△△△△△△ という配置なら、tabStops に渡す配列の要素は2つでいいようです。3つにすると、3列の段組みもできます。 タブの直前までの文字がタブ幅をオーバー(上の例では、○○○の文字列の長さが 200pt を超えた場合や、△△・・・の部分が 400pt を超えた場合など)したり、タブを入れた結果、全文字列の長さがテキストフィールドの横幅をオーバーした場合は、タブ幅が0になったり、全体のレイアウトが崩れることがあります。 フォントの関係で、1行(表計算ソフト式にいうと、1つのセル)あたりに表示できる文字数が変わることもあります。デバイスフォントの「_等幅」を使うと字数を固定でき、テキストファイルも作りやすいかと思います。 1行に入る字数を計算してタブや改行を挿入していくと、最初の回答で挙げたHPのような段組みや、2行にわたる長い文章でも、行頭を揃えて表示することも可能です。 HTML のテーブルタグのような高度な段組みはできませんし、テキストファイルの作成が少々面倒ではありますが、ちょっとした一覧表のレイアウトくらいなら、タブを利用して何とかできそうです。 このあたりを解説した書籍やサイトは見当たりませんでした。 ヘルプと実際に調整しながら、何とか上手くやってくださいとしか、言いようがないのですが。 難しいですけれど、タブ幅を上手く調節すると、ちょっと凝ったレイアウトができます。根気よく試してみてください。

teddy1014
質問者

補足

ありがとうございます。 ようやく、何とか分かり始めて来ました。「09」はタブを意味するコードである事が。 ただ、最後にもう一度質問させてください。 ダイナミックテキストのフォントをMS Pゴシック 14ポイントと設定しました。ファイルの内容は以下の通りです。 test=1111111111%092222222222%093333333333(数字は全て全角です。) Scriptにて「Array(140 , 280 , 420 );」と設定しました。 14ポイントで10文字分ですから各項目間は空白が空かないと思っていましたが、3~4文字分ほど空いてしまいます。これって、やはり「このポイントならタブ設定はこの程度」と言うふうにしないと駄目なんでしょうか?。 単に指定文字ポイントx文字数で考えては駄目なんでしょうかねぇ?。 それと、便乗質問で恐縮ですが、今はダイナミックテキストエリアを横450・縦400ピクセルと指定していますが、いくつかのファイルを読み込んで400ピクセルを超える場合にだけ縦スクロールバーを表示したいのですが、どのようにすれば宜しいのかご教授ください。 どうぞ宜しくお願い致します。

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

#5、6です。 とりあえず、読み込みは成功したということで、よろしいでしょうか? となると、あとはテキストフィールドの名前が違っているか、階層の問題など、単純な誤りだと思います。 また、読み込んだ文字列はフレーム4で表示されることになりますので、テキストフィールドはフレーム4まで存在している必要があります。 レイヤー1のフレーム1にテキストフィールドを置き、フレーム4に「フレームの挿入」でフレームを挿入して、フレーム1と同じ内容を表示するフレームを作成してください。テキストフィールドがフレーム4ではなくなっていると、インスタンス名がいくら正しくても undefined になってしまいます。 -------------------- エラーを利用してファイルがあるだけ読み込むには、#5で紹介したスクリプトでは無理でしょう。 #5のスクリプトは、変数 test に文字列が入ったかどうかを利用して読み込みの終了を判断しています。つまり、ファイルが存在していないために読み込みが失敗して Null なのか、読み込みがまだ終わらないから Null なのかの区別ができません。 (エラーに弱い、ちょっと脆弱なスクリプトです ^^ゞ) LoadVars オブジェクトの onLoad イベントの success 引数を利用して、ファイルの数だけ読み込むスクリプトができましたので、こちらをご紹介します。 基本的な考え方は同じですが、ファイルを読み込む処理が少し違います。 ファイルの最大数を表す変数 file_max は不要になります。代わって、load_flg というフラグを用意します。このフラグの値を、次のように決めます。  0:待機(読み込み中)  1:読み込み成功  -1:読み込み失敗 onData の引数 success の値は true か false です。 この値は onLoad イベント発生時に呼ばれる関数の中でしか利用できないため、ちょっと不便です。 そこで、success の持つ情報を load_flg に保存し、他のフレームでも読み込み状況を把握できるようにしておきます。フラグの値を2つから3つにするのは、単に成功か失敗かではなく、読み込み中かどうかも判別できるようにするためです。 フレームでは load_flg を監視し、処理の流れを制御します。0の時は読み込みが終わるまで待ち、1の時は文字列の連結と次の読み込みの準備を、-1 の時は読み込みを終了して、内容を表示する処理をします。 つまり、フレームをまたいでループしながら、ファイルの読み込みに失敗するまで読み込み続けるという仕組みです。 今回はフラグの値による分岐ですから、switch 文が利用できます。 #5のスクリプトと同様に、4フレームで作ります。  ・フレーム1のスクリプト   //読み込むファイルの番号   loadfile_no = 1;   //読み込み判定フラグ   load_flg = 0;   //文字列連結の作業用変数   temp = "";  ・フレーム2のスクリプト   //ファイルの読み込み   logload = new LoadVars();   logload.load( "log" + loadfile_no + ".txt" );   //読み込み終了時の処理   logload.onLoad = function ( success )   {    //読み込み状況をフラグに保存    if( ! success )    {     load_flg = -1;    }    else    {     load_flg = 1;    }   }; フレーム3は読み込み終了まで待つためのフレームです。スクリプトは設定しません。  ・フレーム4のスクリプト   switch( load_flg )   {    case 0:     //読み込み終了を待つ     gotoAndPlay( 3 );     break;    case 1:     //読み込み成功の場合:     //読み込んだ内容を作業用変数に連結     temp += logload.test;     //次のファイルを読み込む     loadfile_no++;     load_flg = 0;     gotoAndPlay( 2 );     break;    case -1:     //読み込み失敗の場合:     //ファイルが残っていないものと見なす     //テキストフィールドに表示     disp_fld.text = temp;     //タブ幅の設定     format = new TextFormat();     format.tabStops = new Array( 200 , 400 );     disp_fld.setTextFormat( format );     //タイムラインはここで止める     stop();     break;    default:     break;   } 「ムービープレビュー」で見ると、必ず「出力」ウィンドウが開いてファイルオープンエラーが報告されますが、スタンドアロンプレイヤーやブラウザでは出てきません。 ファイルの読み込みが失敗する理由は、ファイルが存在しないからというだけではありません。ファイルはあるけれど破損して開けないからかもしれませんし、通信の途中で回線が切れたなどの理由も考えられます。 エラーを利用した読み込みでは、例えば3つあるうちの2番目が、破損していたか、あるいは何らかの原因で読み込みに失敗した場合、表示されるのは1番目だけということになります。 あまり細かいことを言ってもキリがありませんが、Flash 単体で作るなら、このくらいが限度ではないかと思います。 度々長文になり、申し訳ありませんでした。

teddy1014
質問者

補足

すみませんでした。私のミスでした。 テキストフィールドを配置したレイヤーには1フレームしかありませんでした。4フレームまで作成したら正しく表示されました。 ファイルの存在チェックに関しては、ご指摘されたような内容で以前作成した事があるので、それを利用して反映させようと思います。 最後に、タブに関して教えて下さい。 最初の回答で、「改行は%0D、タブは%09」とありますが、これは何を見れば分かりますか?。 試しに、 「test=xxx%09xxxxx%0D%09xxxxxxxx%0D%0D%0D%0D」 このようなテキストを作成しました。 改行は問題無いのですが、タブが異常に開いたところから 開始されてしまいます。%09を%02とか数字を変えて トライしましたが、%09以外は認識されないようです。 最後に、これだけご教授ください。 宜しく御願い致します。

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

#5です。 動作確認しました(各行頭の全角のスペースにさえ気をつけていただければ、コピーしてそのまま使えます)ので、全く動かないということは、ないはずですが... ・テキストフィールドで表示する変数名は不要です。あっても読み込み自体には影響しませんが、表示がちらつきます。 ファイルから読み込んだ変数 test は、連結作業用変数 temp に連結したあと、次の読み込みのために Null("")にしています。ダイナミックテキストに表示する変数として test を指定している場合、log1.txt からの読み込みが成功して test に文字列が入っても、test の内容は一瞬だけ表示されて、すぐに消えてしまいます。(ちなみに、先述のちらついて見える原因はこれです) ・ファイルの番号が正しくカウントされない理由が気になります。 2回目以降に読み込みを始める時の gotoAndPlay(フレーム4のスクリプトの最後)の移動先を確認してください。ここに存在しないフレームが指定されている、またはフレーム1に戻っている場合に、loadfile_no が延々と1になり、何も表示されなくなります。 (フレーム1で、loadfile_no に1を入れているためです) ただ、loadfile_no が1回だけ2になる現象は、trace アクションでは確認できませんでした。まあ、デバッガで見れば、1に戻る前にほんの一瞬だけ、2になる瞬間はありますが。 ・テキストフィールドとスクリプトが、別の階層になっていませんでしょうか。テキストフィールドとスクリプトは、同じムービークリップ内に置いてください。 テキストフィールドとスクリプトがムービークリップの中にある場合も、ステージにテキストフィールドを置いてメインのタイムラインにスクリプトを設定している場合でも、両者が同じ階層に存在しているのであれば問題はありません。 ・変数 test は読み込めていますでしょうか。 フレーム4の、  //読み込んだ文字列を、作業用変数に連結  temp += test; の直前に、trace アクションで変数 test の内容を表示してみてください。 正常に読み込めていれば、「出力」ウィンドウに、ファイルの数だけ test の内容が表示されるはずです。 loadfile_no が2になるなら、log1.txt は読めていると見なせますが、log1.txt の内容は読み込めていますか?また、その次の log2.txt はいかがでしょうか? スクリプトを打ち直しているのでしたら、{ } の対応や if 文の構造等に誤りがないか、確認してみてください。特にフレーム4のスクリプトは複雑ですので、ご注意を。 どうしても直らない場合は、差し支えなければ、各フレームに設定したスクリプトをコピー&ペーストして、再度補足していただけませんでしょうか。原因が分かるかも知れません。

teddy1014
質問者

補足

コピー&ペーストで再度トライしました。 if (test == "") { gotoAndPlay(3); } else { trace(test) ; temp += test; trace(temp) ; test = ""; loadfile_no++; if (loadfile_no>file_max) { disp_fld.text = temp; trace(loadfile_no) ; trace(disp_fld.text) ;      以下省略 3ファイル用意して実行しましたら、testにも毎レコード読み込まれていますし、tempにも毎回連結されて入っています。 ですが、全レコードを読み終えてtempからdisp_fldに移しているのですが、disp_fldのTraceを取得しようとしたところ、「undefined」になってしまいます。 1フレームにダイナミックテキストを作成し、そのインスタンス名に「disp_fld」と命名してあります。 あと1歩なんですが、何とかご指導宜しくお願い致します。 また、ファイルがあるまで読み込むと言うロジックにするには、2フレーム目のscriptで読み込みが成功しなかったらフラグをセットし、3フレームでそれを判定すると言うロジックでいいのでしょうか?。

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

テキストフィールドを動的に生成する方法はありますが、一覧表を作るなら、テキストフィールドは1つで充分だと思います。 読み込んだ変数の内容を1つに連結したものをダイナミックテキストで表示すれば、テキストフィールドは1つでも複数のファイルの内容を表示できます。 ファイルの命名については、通し番号を利用してください。また、#3の方がおっしゃる通り、Flash ではどんなファイルがあるかを調べる方法はありませんので、予め最大数を変数などで与えておくのが、一番簡単だと思います。 変数も全てのファイルで統一しておくといいでしょう。読み込むファイルが違っても変数の名前が同じであれば、読み込んだ後の処理を共有できます。 ダイナミックテキストでは段組みの表示はできませんし、一部の HTML タグが利用できるものの、テーブルタグは使えません。 その代わり、タブ幅を任意に設定できる”カスタムタブ”が用意されています。タブ幅を調節し、読み込むファイルにタブや改行を上手く挿入すると、段組みのような表示も可能です。 タブを利用して、日付・タイトル・テキストを全て1つの変数にまとめます。改行は %0A か %0D 、タブは %09 で挿入します。 例えば、  test=8月16日%09○○○○%0D%09□□□□□□□□□□ この変数を読み込んで、タブ幅を調節すると  8月16日  ○○○○        □□□□□□□□□□ このような配置で表示できます。 なお、全ファイルを連結して表示しますので、それぞれのファイルのテキストの末尾に、改行コードをお忘れなく。 余談ですが、  http://www.postpet.so-net.ne.jp/index_j.html ↑このサイトの What's New は、Flash で作られています。おそらくですが、段組みはタブで付けていると思います。 表示のレイアウトはともかく、ポイントは、日付もタイトルも文章も、1つの変数にまとめることです。一覧表として表示したいだけなら、あえて日付やタイトルを別の変数にする必要はないかと思います。ひとかたまりのテキストとして扱う方が、スクリプトも組みやすいです。 上記のサイトのように一部にだけリンクを設定したい場合は、HTML を利用して、文字列の中に HTML タグを挿入しておけば実現できます。 仮に、log1.txt ~ log5.txt という5つのファイルがあり、それぞれに test という変数が書かれているとします。 テキストフィールドを ActionScript で制御するには、TextField オブジェクトを使います。書式を制御する TextFormat オブジェクトを合わせて利用すると、編集画面ではできない細かいカスタマイズも可能です。 TextField オブジェクトの text は、テキストフィールドに表示する文字列を管理するプロパティです。変更可能なプロパティで、テキストフィールドの内容を直接書き換えることもできます。HTML を利用する場合は、同じ機能の HTML 版である htmlText プロパティを使います。 ファイルから読んだ変数を直接 text プロパティに連結していくと、読み込みの済んだファイルから順次表示されます。また、text プロパティの代わりに作業用の変数を用意し、これに連結していって、全部のファイルを読み終えてから text プロパティに代入すると、全て読み終えてからテキストフィールドの内容を更新できます。 ここでは後者の、読み込み完了後に表示するスクリプトをご紹介します。 一覧表のムービークリップを、1つ作ります。 レイヤー1にテキストフィールドを配置し、インスタンス名を付けます。ここでは、disp_fld という名前だとします。 レイヤー2をアクション専用にして、フレームは  フレーム1:初期設定  フレーム2:ファイルの読み込み  フレーム3:空き(読み込みの終了を待つためのフレーム)  フレーム4:読み込んだ変数の連結と、次の読み込みなどの処理 このような構成にします。 フレーム1は初期設定に使います。 初期設定とは、ファイルの最大数や今読んでいるファイルの番号を管理する変数の初期化などです。 TextField オブジェクトでテキストフィールドの外観などを変更したい時は、ここで済ませておくといいでしょう。 ただ、先のタブ幅に関しては、文字が読み込まれる前に設定しても上手くいかない場合があるので、text プロパティに代入した後の方が確実だと思います。タブ幅の設定には TextFormat オブジェクトの、tabStops プロパティを使います。単位は Flash のテキストのサイズと同じで、ポイントです。 (以下のスクリプトをコピーして使う場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うと、シンタックスエラーになります)  ・フレーム1のスクリプト   //ファイルの最大数   file_max = 5;   //読み込み中のファイル番号を管理する変数   loadfile_no = 1;   //文字列連結の作業用変数   temp = ""; フレーム2ではファイルを読み込みます。 ファイル名は log*.txt で付けています。番号の部分を変数 loadfile_no で指定し、連続して読み込めるようにします。  ・フレーム2に設定するスクリプト   //ファイルの読み込み   this.loadVariables( "log" + loadfile_no + ".txt" ); フレーム3は読み込み完了を待つためのフレームです。そのまま空のキーフレームにしておきます。 フレーム4が、今回のポイントになる処理です。 読み込みが完了していない、つまり、変数 test が Null だったらフレーム3に戻って読み込み終了を待ち、読み込みが終わったら、読み込んだ内容を作業用の変数に連結します。 また、次のファイルが残っているかどうかを判別し、残っていれば読み込みを続行、なければテキストフィールドに内容を表示させる処理をします。  ・フレーム4に設定するスクリプト   //ファイルの読み込み完了まで待つ   if( test == "" )   {    gotoAndPlay( 3 );   }   //読み込み完了時の処理   else   {    //読み込んだ文字列を、作業用変数に連結    temp += test;    //読み込み用の変数をクリア    test = "";    //次の読み込みの処理    loadfile_no++;    //ファイルが残っていなければ読み込み終了    if( loadfile_no > file_max )    {     //テキストフィールドに表示     disp_fld.text = temp;     /*タブ幅を設定する時はここで行う*/     format = new TextFormat();     format.tabStops = new Array( 200 , 400 );     disp_fld.setTextFormat( format );     //タイムラインはここで止める     stop();    }    //ファイルが残っている場合は読み込みを続行    else    {     gotoAndPlay( 2 );    }   } ファイルに設定されている変数は、一律 test になっています。これが Null かどうかで読み込み完了を検出しますから、1件の読み込みが完了して用が済んだら、その都度 Null にしておきましょう。前に読み込んだ内容が残っていると、次のファイルの読み込みが終わらないうちに if 文の条件が成立して、同じ内容だけが連結される不具合も考えられます。 ログファイルの最大数や読み込むファイルの番号を変数で管理すると、ファイルの数が変わった時も、これらの初期値を変更するだけで対応できます。 CGIでファイルの数を管理し、CGIが出力する変数を読んでくれば、手作業で書き換えなくても、完全に自動化できます。 長くなってすみませんでした。 不明な点がありましたら補足してください。

teddy1014
質問者

補足

まずは、教えて頂いたとおり記述したのですが、結果は何も表示されません。 ・レイヤー1の1フレームにダイナミックテキストを配置。  インスタンス名=disp_fld 変数名=test ・logx.txt(xは1~3を作成)の内容は  「test=xレコード目のデータです。」 ・レイヤー2の2、3,4フレームは教えて頂いたScriptを記述。 試しに3フレームのScriptに「ファイル名をTraceして実行したところ、「log1.txt」,「log2.txt」,「log1.txt」と、以降はずっと「log1.txt」が延々続きます。 疑問1:何故1ファイル目を表示しないのでしょう?。 疑問2:1,2,1,1,1,1,1・・・・・と言うように、1,2ファイルを読んだ後に1ファイル目を読みつづけるのでしょうか?。 宜しくお願い致します。

  • UNAHO
  • ベストアンサー率57% (20/35)
回答No.4

>functionメソッドの引数「success」を利用して読み込み成功したかどうかでファイルが存在していたかどうかの判定が出来ないのかなぁと思っていたのですが。 実際にやったことはありませんができると思います。 ただ、ファイル名のシリアルが歯抜けになったりすると読込効率が非常に悪くなるので、ファイル名の規則性(とフォーマット)をどこまで自由にできるのか疑問に思ったので手動か自動かをおたずねしました。 >「ログファイル」とは何を指しているのでしょう?。 すいません。 テキストファイルの事です。「過去ログの一覧表のようなものを・・・」とあったのでログファイルのことだと思っていました。 そのぉ・・・よく分からないのですが、テキストを読み込んで表示できたということですが、これを連続して行い一覧表示を行えないのはなぜですか? 「こういう方法でやったらこういう結果になって思い通りにならない」というのであれば具体的なアドバイスが(私以外からも(^^;))得られると思いますよ。 また、本来の可能かどうかというご質問については「可能です(レイアウトは違いますが作ったことはあります)」とお答えしておきます。

  • UNAHO
  • ベストアンサー率57% (20/35)
回答No.3

>・複数のダイナミックテキストをどのように定義するのか?。 読み込むファイル名に連番などの一定規則があれば不可能ではありませんが「どのファイルからどのファイルまで」を指定する必要があります。この指定を手動でやるのは本末転倒なのですがFlash単体ではファイル名やファイル数を調べる事ができません。 ですので、ログを書き出すと同時に範囲に関する情報のファイルを書き出すようにすれば実現可能です。 ファイル名やファイル数を調べるにはPerlやPHP等のCGIを使用する必要があります。 >・ファイル名などは、どのような命名規則でも構わないのですが、ループ処理などを用いて存在するだけ読みこみたい。 1例として テキストファイル名 yomikomi0.txt yomikomi1.txt yomikomi2.txt yomikomi3.txt . . . . テキストファイルのフォーマット date=00/00&title=タイトル 1フレーム flle_neme = 0; file_list = Array(); 2フレーム stop(); myLV = new LoadVars(); myLV.load("yomikomi"+flle_neme +".txt"); myLV.onLoad = function() { file_list[flle_neme][0] = myLV.date; file_list[flle_neme][1] = myLV.title; nextFrame(); }; 3フレーム //変数flle_nemeが10以下の場合はflle_nemeを+1する。そうでない場合は通りすぎる。 stop(); if(flle_neme<10){ flle_neme++; prevFrame(); }else{ play(); } という感じになります。 なぜfor等のループ処理を使わないのかというとテキストデータの読込が完了するまで待つ必要があるからです。 >1ファイルの中に「text1=xxxxxxx          text2=xxxxxxx」などと言う記述は出来れば避けたい。1テキスト毎に別ファイル管理したいのです。 Flashは text1=xxxxxxx&text2=xxxxxxx&・・・ というフォーマット以外は読み込めません。 どうしてもオリジナルのフォーマットを使いたい場合はCGI等を使って変換する必要があります。 また、1テキスト毎に別ファイルにすると読込に時間がかかります。(10ファイル程度なら問題ないと思いますが) ということで、 実現は可能ですがFlash単体では厳しい といったところでしょうか。 ところでログファイルの書き出しは手動ですか自動ですか?よろしかったら教えてください。

teddy1014
質問者

補足

ありがとうございます。 「text1=xxxxxxx」のフォーマットにしたくないと言うのは、全ての情報を1ファイルで管理したくないということです。 命名規則はおっしゃる通りシーケンスを付与して作成する事にしたいと思っています。そしてループ処理などを使ってファイルを読み込み、functionメソッドの引数「success」を利用して読み込み成功したかどうかでファイルが存在していたかどうかの判定が出来ないのかなぁと思っていたのですが。 「ログファイル」とは何を指しているのでしょう?。 当該のテキストファイルの事でしょうか?。 それなら、手動で入力します。 どうぞ宜しく御願い致します。

  • UNAHO
  • ベストアンサー率57% (20/35)
回答No.2

>例で挙げたように複数の情報(ファイル)を、存在するだけ読み込んで表示する方法が分からないのです。 テキストファイルを読み込むことはできるということは・・・ 1.読み込んだ後の変数の表示の仕方が分からない。 2.複数のファイルのファイル名が動的に変化するため読み込む方法が分からない。 のどちらかか、もしくは両方か、とにかくもう少し具体的に説明していただかないと、どこでつまずいているのかが分かりません。

teddy1014
質問者

補足

すみません、要するに複数のテキストの取り扱い、表示方法全てがわかっておりません。 単に1ファイルを読み込んで、その内容をダイナミックテキスト上に表示する事は出来たのですが、 ・複数のダイナミックテキストをどのように定義するのか?。  (いくらファイルがあるのか分からないので) ・ファイル名などは、どのような命名規則でも構わないのですが、ループ処理などを用いて存在するだけ読みこみたい。 1ファイルの中に「text1=xxxxxxx          text2=xxxxxxx」などと言う記述は出来れば避けたい。1テキスト毎に別ファイル管理したいのです。 宜しくお願い致します。

  • UNAHO
  • ベストアンサー率57% (20/35)
回答No.1

>可能でしょうか? 可能です。 それに近いサンプルを見つけたのでURLに入れて置きます。 また、一行で流れるタイプとして http://ren.kdn.jp/newsflash/ というのを作られている方もいます。 実際のスクリプトは千差万別であり、ここにサンプルのスクリプトを書けばすむというレベルではありません。最近のFlash解説本であればたいてい載っていますので一冊、手に入れられた方が解決は早いと思いますよ。

参考URL:
http://www.fpower.org/tips.htm#FL013
teddy1014
質問者

補足

サンプルを見ましたが、若干違うようです。それとダウンロードは出来ませんでした。 外部ファイル(テキスト)を読み込む事は出来るのですが、例で挙げたように複数の情報(ファイル)を、存在するだけ読み込んで表示する方法が分からないのです。

関連するQ&A

  • php select 外部ファイル読み込み

    log.phpにて20110210.logの中身を表示させたいと思っています。 仕様としてはアクセスログになるのですが、毎日のようにlogファイルが作成され、ファイル名は上記の用に日付.logにしています。 log.phpでformのselectにて保存されているアクセスログファイルの一覧が表示され、submitをクリックすると選らんだ日付のアクセスログが同ファイルに表示されるようにしたいのですが・・・ 例 log.php <select> <option value="/log/20110207.log">20110207</option> <option value="/log/20110208.log">20110208</option> <option value="/log/20110209.log">20110209</option> <option value="/log/20110210.log">20110210</option> </select> <input type="submit" name="log" value="表示"> 20110207を選んだら、20110207のlogファイルが表示される。 20110208を選んだら、20110208のlogファイルが表示される。 日が変わりファイルが作成されたらselectにも日付が追加されている。 また、月日が経つとlogファイルがとてつもない数になるので、月が変わったら月ごとの表示にしたいのですが、こちらは可能なのでしょうか? 以上のことなのですが、お分かりの方がいらっしゃいましたらご教示お願いします。 ご面倒でなければソースも教えていただけると助かります。

    • ベストアンサー
    • PHP
  • IEで長いWEBページを表示した場合に、スクロールがループしてCPU使用率が100%になります

    下記現象にて困っております。 解決策をご存知の方がいらっしゃいましたら、ぜひご教授下さい。 ______________________        │ タイトル一覧      │         ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ メニュー  | コンテンツ内容    |        |               |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ PHPにて、上記のようなフレーム構成のWEBページを作成しておりました。 メニューをクリックすると、タイトル一覧が表示されるのですが、 タイトル一覧の行数が650行を越える辺りから、メニューを選択した時に、 CPUの負荷が異常に高くなったままになります。 そこで、タイトル一覧のスクロールバーをずっと下に押しっぱなしにして みたところ400行辺りから、401->402->403->400->401->402->403->404 ->400・・というように表示がループしておりました。 何度か試したところ、これは、タイトル一覧のフレームにフォーカスを あてることで、解消されることがわかり、読み込み時にjavascriptで フォーカスをあてるようにしました。 これで万事OKかと思っていたのですが、この現象は、ウィンドウの最大化等 を行った時にも、再描画の為に発生することが判明し、どうしたらいいもの かと困っています。 現在、判明していることは下記4点になります。 (1)一覧が650を越える辺りから発生する。それ以下だと発生しない。 (2)フォーカスをあてることで、処理が正常に行われ、解消する。 (3)コンテンツの場合はなぜか650行を越えても発生しない。 (4)MicroSoftサポートにある「スムーズ スクロールを使用しない」に設定 を行っても、解消されない。 ページ分割も考えたのですが、全件表示を一機能としてもたせたいと考えて います。

    • ベストアンサー
    • PHP
  • アップロードしたら外部テキストが表示されない

    お世話になります。過去ログを探ってみましたが、解決しませんでしたので質問させて頂きます。Windows XP、FLASH MX、IE7という環境です。 ダイナミックテキストで外部テキストを読み込み、スクロール表示させるというswfファイルを作成しました。パブリッシュプレビュー及び、パブリッシュしたhtmlファイルをIEを通して確認すると全く問題なく表示させるのですが、アップロードしたら外部テキストの部分のみ表示されません。ページに関連するhtmlファイル、swfファイル、txtファイルは全て同じ階層にアップロードされいるのに何故なのか分からず困っています。質問内容分かりにくかったらすみません。どなたかお助け願えないでしょうか。

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

    http://okwave.jp/qa/q7803076.htmlで質問させて頂きましたが、 質問内容がおかしかったので再度投稿させて頂きたいと思います。 a.phpファイル(クライアント表示) <?php include("b.php"); ?> b.phpファイル(読み込まれるファイル) for ($i = 1; $i <= 7; $i++) { } a.phpファイルの任意の場所にb.phpファイルに記載している「1~7」までの数字を表示させたいのですが、いろいろと試してみましたがa.phpファイルでクライアント表示させると「7」や「8」と表示されてしまいうまく表示ができませんでした。 b.phpファイルに「echo $i;」をすると、やはりa.phpファイルの表示させたくない場所に1234567が表示されてしまいます。 調べ方が悪いのか検索しても、解決策が見つからなかったのでご教授頂けたら幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 過去ログ、タイトル一覧はつけられないの?

    シーサーブログを利用しているのですが、 ○○年××月の過去ログを一覧表にして表示させたいのです。 ○○年××月をクリックすると、 ○○年××月に書いた日記すべての 日付と「タイトル」を表示させたいのです。 が、できるのかどうかすら、わかりません。 どなたか、教えていただけませんか? よろしくお願いします。

  • 外部swfの読み込みでnow loading

    色々過去ログ読み返していたらhttp://oshiete1.goo.ne.jp/qa1598422.html が一番聞きたい事に近かったのですが、若干細部が把握できなかったので質問致します。 昔作ったフラッシュファイルがあります(b.swf) そのファイルを今回新しく作る(a.swf)に読み込ませたいと考えています。 読み込ませるだけでしたら、上記の過去回答で対応できますが、 今回問題は、b.swfをいじれないと言う事です。 過去回答ではb.swfにnow loadingを入れれば良いとありましたが、 それが出来ない為困っているのです。 a.swfにnow loadingを入れてb.swfを100%読み込んだら表示するようにするには、どのようにやったらいいでしょうか? 質問に便乗してアドバイス頂きたいのですが、実際now loadingをする際は、どの位のサイズからnow loadingをつけるべきでしょうか? また、TOPページに置くFLASHのサイズはどのくらいが許容範囲ですか? 今回b.swfは4Mほどあります。TOPページにこのサイズのFLASHを表示させること自体ナンセンスなような気もしますが、どうしても表示させたいのです。 質問ともどもアドバイスもお願いします。 Flash8 WinXP

    • ベストアンサー
    • Flash
  • フレームのスクロール

    ご質問させていただきます。 1つのページを上下2つのフレームに分けます。 そして、下のフレームのページを左右にスクロールさせると、 同じように上のページが自動的に左右にスクロールする。 といったことは可能でしょうか? 上のフレームに表のタイトル 下のフレームに表のデータ を表示させようと考えています。 アドバイスよろしくお願い致します。

    • ベストアンサー
    • HTML
  • エクセルで管理表を作りたい

    20枚程になる機械の一覧表を作成したのですが、各ページの表の一行目に機械名や日付などの項目のタイトルを入れて、一列目には機械の横に1から20まで番号を付けます。追加や削除があったときに簡単に一行削除や行追加ですむように各ページの一行目、一列目に常に同じ内容を印刷するにはどうすればいいんでしょうか? 一行目はページ設定の中の印刷タイトルを使ったんですが、列の方がよくわかりません。いい方法があれば教えてくださいよろしくお願いします。

  • 横スクロールを右から左へ・・・

    すみません。以前過去ログで見つけたと思ったのですが 見つけられなかったため新しく質問させていただきます。 横に長いHPを作成するとき、普段は左から右にスクロールして 全体を見ていくという形になっていますが、それをページを開いた 時に一番右側の画面が表示されて、そこから左にスクロールさせて 全体を見ていくという構成にしたいと思ってます。 そのようなことはできるのでしょうか?? よろしくお願いします。

    • ベストアンサー
    • HTML
  • AccessVBAデータシートビューの挙動について

    Access2003を用いて、 メインフォームにサブフォーム(データシートビュー:表)を組込み 一覧表を作成しております。 【問題】 プログラムコード上で、実行ボタンを押すと データシートの全行にあるAAAというテキストに一前の行の値をセットする 記述を下記のようにしております。 For i = 1 to 表最大行数 Me.SelTop = i '処理行の指定 aaa.value = strAAA '1行前の「項目:AAA」データをセット strAAA = aaa.value '現在行の「項目:AAA」データをセット保持 Next データシートビューの各行のAAAというテキストに値をセットする度に、 フォーカスがあたる為か、どんどん最後の行のAAAテキストにフォーカスが移動していってしまい 最終的には、フォーカスが自動スクロールで最後の行まで移動してしまいます。 フォーカス自体は、最終的に最初の行には戻す処理は入れたのですが、 見栄えを考えると、ボタンを押すたびに、データシートビューがスクロールするのは あまりよろしくなく、スクロールをさせず(値にフォーカスを当てず)に データをセットする方法を探しています。 --------------------------------------- 初歩的なことだろうとは思いますが、 ご存知の方ご教授願います。