プロが教える店舗&オフィスのセキュリティ対策術

以前、同じ内容の質問をさせて頂きましたが、「スクロール表示」にFocusされてしまい、本来お尋ねしたかった内容が隠れてしまったので、再度質問させて頂きます。

「News Release」のようなページで扱われているように、過去ログの一覧表のようなものを作りたいのですが、可能でしょうか?、と言うのが本来の質問です。

日付 タイトル
XXXX XXXXXXXXXXXX
   XXXXXXXXXXXX

XXXX XXXXXXXXXXXX
   XXXXXXXXXXXX

このような一覧を表示したいのですが。


どうぞよろしくお願い致します。

A 回答 (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行ずつスクロールするボタンなどであれば、割と簡単に作れます。


また長くなると、スレが重くなりますので ^^;
スクロールについては、改めて別のスレを立てた方が、いい回答が得られると思いますよ。
    • good
    • 0
この回答へのお礼

色々とありがとうございます。
フォントの件、ようやくわかりました。微妙な調整は結構経験によるものなんでしょうね。

Scrollバーの件は、おっしゃる通り別の質問で掲載させて頂きました。
確かにScrollバーと言うコンポネントは無かったです。
textareaと言うコンポネントはありましたが、データを入力したら勝手にスクロールバーが表示されるようですが、色々な設定をどこですれば良いのか、良く分かりません。

いやぁ、非常に助かりました。

これからも宜しくお願い致します。

お礼日時:2004/08/22 02:29

タブのコードですが。


何を見ればと言われましても、白状しますと、半分は知識で半分は実践で実証したというのが正直なところです ^^ゞ


コンピュータでの文字は、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/do …

 ・テキストファイルから特殊文字を読み込む時の表記方法
  http://www.macromedia.com/jp/support/flash/ts/do …


特殊文字を挿入する時に指定するコード(%○○の、○○の部分)は、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 のテーブルタグのような高度な段組みはできませんし、テキストファイルの作成が少々面倒ではありますが、ちょっとした一覧表のレイアウトくらいなら、タブを利用して何とかできそうです。
このあたりを解説した書籍やサイトは見当たりませんでした。
ヘルプと実際に調整しながら、何とか上手くやってくださいとしか、言いようがないのですが。
難しいですけれど、タブ幅を上手く調節すると、ちょっと凝ったレイアウトができます。根気よく試してみてください。

この回答への補足

ありがとうございます。
ようやく、何とか分かり始めて来ました。「09」はタブを意味するコードである事が。

ただ、最後にもう一度質問させてください。
ダイナミックテキストのフォントをMS Pゴシック 14ポイントと設定しました。ファイルの内容は以下の通りです。

test=1111111111%092222222222%093333333333(数字は全て全角です。)

Scriptにて「Array(140 , 280 , 420 );」と設定しました。

14ポイントで10文字分ですから各項目間は空白が空かないと思っていましたが、3~4文字分ほど空いてしまいます。これって、やはり「このポイントならタブ設定はこの程度」と言うふうにしないと駄目なんでしょうか?。
単に指定文字ポイントx文字数で考えては駄目なんでしょうかねぇ?。

それと、便乗質問で恐縮ですが、今はダイナミックテキストエリアを横450・縦400ピクセルと指定していますが、いくつかのファイルを読み込んで400ピクセルを超える場合にだけ縦スクロールバーを表示したいのですが、どのようにすれば宜しいのかご教授ください。

どうぞ宜しくお願い致します。

補足日時:2004/08/21 01:30
    • good
    • 0

#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 単体で作るなら、このくらいが限度ではないかと思います。
度々長文になり、申し訳ありませんでした。

この回答への補足

すみませんでした。私のミスでした。
テキストフィールドを配置したレイヤーには1フレームしかありませんでした。4フレームまで作成したら正しく表示されました。
ファイルの存在チェックに関しては、ご指摘されたような内容で以前作成した事があるので、それを利用して反映させようと思います。

最後に、タブに関して教えて下さい。
最初の回答で、「改行は%0D、タブは%09」とありますが、これは何を見れば分かりますか?。
試しに、
「test=xxx%09xxxxx%0D%09xxxxxxxx%0D%0D%0D%0D」
このようなテキストを作成しました。
改行は問題無いのですが、タブが異常に開いたところから
開始されてしまいます。%09を%02とか数字を変えて
トライしましたが、%09以外は認識されないようです。

最後に、これだけご教授ください。

宜しく御願い致します。

補足日時:2004/08/20 17:07
    • good
    • 0

#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のスクリプトは複雑ですので、ご注意を。
どうしても直らない場合は、差し支えなければ、各フレームに設定したスクリプトをコピー&ペーストして、再度補足していただけませんでしょうか。原因が分かるかも知れません。

この回答への補足

コピー&ペーストで再度トライしました。
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フレームでそれを判定すると言うロジックでいいのでしょうか?。

補足日時:2004/08/20 00:16
    • good
    • 0

テキストフィールドを動的に生成する方法はありますが、一覧表を作るなら、テキストフィールドは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が出力する変数を読んでくれば、手作業で書き換えなくても、完全に自動化できます。


長くなってすみませんでした。
不明な点がありましたら補足してください。

この回答への補足

まずは、教えて頂いたとおり記述したのですが、結果は何も表示されません。

・レイヤー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ファイル目を読みつづけるのでしょうか?。

宜しくお願い致します。

補足日時:2004/08/18 00:53
    • good
    • 0

>functionメソッドの引数「success」を利用して読み込み成功したかどうかでファイルが存在していたかどうかの判定が出来ないのかなぁと思っていたのですが。



実際にやったことはありませんができると思います。
ただ、ファイル名のシリアルが歯抜けになったりすると読込効率が非常に悪くなるので、ファイル名の規則性(とフォーマット)をどこまで自由にできるのか疑問に思ったので手動か自動かをおたずねしました。

>「ログファイル」とは何を指しているのでしょう?。

すいません。
テキストファイルの事です。「過去ログの一覧表のようなものを・・・」とあったのでログファイルのことだと思っていました。

そのぉ・・・よく分からないのですが、テキストを読み込んで表示できたということですが、これを連続して行い一覧表示を行えないのはなぜですか?
「こういう方法でやったらこういう結果になって思い通りにならない」というのであれば具体的なアドバイスが(私以外からも(^^;))得られると思いますよ。
また、本来の可能かどうかというご質問については「可能です(レイアウトは違いますが作ったことはあります)」とお答えしておきます。
    • good
    • 0

>・複数のダイナミックテキストをどのように定義するのか?。



読み込むファイル名に連番などの一定規則があれば不可能ではありませんが「どのファイルからどのファイルまで」を指定する必要があります。この指定を手動でやるのは本末転倒なのですが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単体では厳しい
といったところでしょうか。

ところでログファイルの書き出しは手動ですか自動ですか?よろしかったら教えてください。

この回答への補足

ありがとうございます。

「text1=xxxxxxx」のフォーマットにしたくないと言うのは、全ての情報を1ファイルで管理したくないということです。

命名規則はおっしゃる通りシーケンスを付与して作成する事にしたいと思っています。そしてループ処理などを使ってファイルを読み込み、functionメソッドの引数「success」を利用して読み込み成功したかどうかでファイルが存在していたかどうかの判定が出来ないのかなぁと思っていたのですが。

「ログファイル」とは何を指しているのでしょう?。
当該のテキストファイルの事でしょうか?。
それなら、手動で入力します。

どうぞ宜しく御願い致します。

補足日時:2004/08/16 15:10
    • good
    • 0

>例で挙げたように複数の情報(ファイル)を、存在するだけ読み込んで表示する方法が分からないのです。


テキストファイルを読み込むことはできるということは・・・
1.読み込んだ後の変数の表示の仕方が分からない。
2.複数のファイルのファイル名が動的に変化するため読み込む方法が分からない。

のどちらかか、もしくは両方か、とにかくもう少し具体的に説明していただかないと、どこでつまずいているのかが分かりません。

この回答への補足

すみません、要するに複数のテキストの取り扱い、表示方法全てがわかっておりません。

単に1ファイルを読み込んで、その内容をダイナミックテキスト上に表示する事は出来たのですが、

・複数のダイナミックテキストをどのように定義するのか?。
 (いくらファイルがあるのか分からないので)

・ファイル名などは、どのような命名規則でも構わないのですが、ループ処理などを用いて存在するだけ読みこみたい。

1ファイルの中に「text1=xxxxxxx
         text2=xxxxxxx」などと言う記述は出来れば避けたい。1テキスト毎に別ファイル管理したいのです。

宜しくお願い致します。

補足日時:2004/08/15 21:29
    • good
    • 0

>可能でしょうか?


可能です。
それに近いサンプルを見つけたのでURLに入れて置きます。
また、一行で流れるタイプとして
http://ren.kdn.jp/newsflash/
というのを作られている方もいます。

実際のスクリプトは千差万別であり、ここにサンプルのスクリプトを書けばすむというレベルではありません。最近のFlash解説本であればたいてい載っていますので一冊、手に入れられた方が解決は早いと思いますよ。

参考URL:http://www.fpower.org/tips.htm#FL013

この回答への補足

サンプルを見ましたが、若干違うようです。それとダウンロードは出来ませんでした。

外部ファイル(テキスト)を読み込む事は出来るのですが、例で挙げたように複数の情報(ファイル)を、存在するだけ読み込んで表示する方法が分からないのです。

補足日時:2004/08/14 22:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!