• 締切済み

外部テキストのランダム表示

Flash初心者です。 ソフトは Flash MX 2004 をつかっています。 質問なんですが、 ボタンを作るとき、マウスがボタンの上にあるとき 一言コメントが出るようにしたいのですが、 そのコメントが何種類かあって、それをランダムで表示させたいです。 外部テキストで出来ると聞いたのですがやり方がまったくわかりません。 onClipEvent(load){ this.loadVariables("text.txt"); } で文字は読み込めたのですが、全部読み込んでしまってどうやってランダムにしたらいいかがわかりません。 どうかお答えお願いします!

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

みんなの回答

noname#35109
noname#35109
回答No.1

> 外部テキストで出来ると聞いたのですが > やり方がまったくわかりません。 どなたから聞いたのでしょうか? (と言っても,本気で質問しているわけではありませんよ。ボヤいてみただけです。) 好い加減なことを言われる方だと思います。 正確には,「外部テキスト "でも" できる。」です。 Flash 内部のデータ処理ができない方が, 外部からデータを読み込んでさらにそのデータをFlashで内部処理すると言うのは, かなり踏むべき段階を超えすぎていると思います。 というわけで, 内部テキストデータでまず考えます。 その後それを外部テキストデータに当てはめて動作させる方法を回答します。 また, ご質問に唐突に, > onClipEvent(load){ > this.loadVariables("text.txt"); > } という意味不明な onClipEvent(load) が出てきていますが, なぜムービークリップに loadVariables を書かれているのか, またどういう構造になっているのかがさっぱりわからないため, この onClipEvent(load) は除いてシンプルな例を書きます。 簡単なできるところから, 1つ1つ確実に作成してください。 いきなり段階を超えても何も作成できませんし, コピペでできたとしても理解できないと思います。 ======================= ◎ 内部データ処理だけでランダムなメッセージを表示 Flash で新規ドキュメントを作成して, ステージ上に「mytext」というインスタンス名(変数名ではありませんよ)の ダイナミックテキストフィールドを用意します。 文字の色は背景色とは違う黒などの色を選んでおいてください。 そして, タイムラインに新規レイヤーを追加して, その新規レイヤーのフレーム1の空白キーフレームに次のスクリプトをコピペしてください。 データも適当に考えただけの無意味なものですから, いちいち書くのではなくてコピペで良いです。 ----------------------------------- comment0 = "おや,お久しぶりぃ~!"; comment1 = "あら,今日は暇なの?"; comment2 = "最近どう?元気にしてる?"; comment3 = "ここ見る時間があったらメールしてよ!"; comment4 = "私のハートをクリックできるかしら?"; ----------------------------------- これは, ActionScript というよりも, comment0~4 の5つの変数に, 各メッセージデータを値として用意しているだけです。 変数名は半角アルファベットから始まっていて, ActionScript の既存のことばとかぶらなければ何でも良いのですが, ランダムに表示するという部分で使い勝手が良いように, 全て comment という共通の文字列と,連番の数をひっつけた変数名にしています。 そして, 「mytext」というインスタンス名のテキストフィールドを用意したレイヤーに, 適当にボタンになるような塗りの長方形を書いて, その塗りを ボタンシンボル に変換してください。 そのボタンに次のように書いてください(コピペ可)。 ----------------------------------- // ボタンにロールオーバーしたとき on (rollOver) { // 変数 ransu に 0~4(5個) の整数の乱数を取得 ransu = Math.floor(Math.random()*5); // mytext に comment? の値を表示 _root.mytext.text = _root["comment"+ransu]; } // ボタンからロールアウトなどをしたとき on (press, rollOut) { // mytext の表示をなしにする _root.mytext.text = ""; } ----------------------------------- そして, 任意の場所にドキュメントを保存して, パブリッシュもしくは,「制御」→「ムービープレビュー」してみてください。 ボタンのロールオーバーで, 「mytext」というインスタンス名のテキストフィールドに, 私の考えたろくでもないメッセージがランダムに表示されると思います。 これですよ。 これがスタートです。 上のボタンのスクリプトにある  ransu = Math.floor(Math.random()*5); についてですが, 内側から説明します。  Math.random() これで 0以上 1未満のランダムな小数が取得できます。  Math.random()*5 これでその範囲が 5 倍に拡大されます。 つまり, 0以上 5未満の乱数が得られます。  Math.floor() は,少数以下切り捨てのメソッドです。 したがって,  Math.floor(Math.random()*5); で,0~4までの5つの何れかの整数が得られます。 そして次の行,  _root.mytext.text = _root["comment"+ransu]; に行きます。 _root["comment"+ransu]; の [] は配列アクセス演算子と呼ばれる物で, 配列でなくても何かのオブジェクトに動的にアクセスする場合は非常に便利な演算子です。 [ ] で何かをくくると,[ ]内を1つの階層として扱ってくれます。 もし乱数に 2 が取得された場合, 上の式は次のようになります。  _root.mytext.text = _root["comment"+2]; つまり,  _root.mytext.text = _root["comment2"]; つまり,  _root.mytext.text = _root["comment2"]; つまり,  _root.mytext.text = _root.comment2; というわけで, 取得される乱数の値が 2 であれば,  comment2 = "最近どう?元気にしてる?"; の,「最近どう?元気にしてる?」が,mytext に表示されるのです。 ここまでを良く理解してください。 そして, 外部ファイルを読み込む必要がないと判断されたなら, 外部ファイルを読み込む方向ではなく, 内部データの次の発展にとりかかってください。 ===================== ◎ 外部データをロードしてランダムなメッセージを表示 これは上の場合に,_root のフレームに用意した comment0 ~ 4 の変数と値を, 外部のテキストファイルに持っていけば良いということになります。 ですから, まず外部テキストデータの形が重要になります。 用意する外部テキストは, ご質問にある通り, パブリッシュされる SWF と同じフォルダに置いた, 「text.txt」 というテキストファイルに用意することにします。 その「text.txt」 というテキストファイルの中身ですが, これは,上のことと同じように実現したい場合, 次のようなデータになります(コピペ可能)。 --「text.txt」内のデータ------------------------ comment0=おや,お久しぶりぃ~!& &comment1=あら,今日は暇なの?& &comment2=最近どう?元気にしてる?& &comment3=ここ見る時間があったらメールしてよ!& &comment4=私のハートをクリックできるかしら? ------------------------------------------ 形のパターンはわかりますでしょうか? 基本的に1行は,  変数=値 となっていて,それが複数行あるという形式です。 そして, 変数=値 の改行前と改行後に & がある形式です。   変数=値&  &変数=値&  &変数=値&  &変数=値&   …  … 本当は,  変数=値&変数=値&変数=値&… という形が必要なのです。 この形は, 例えば Google で Flash と検索した場合, http://www.google.co.jp/search?hl=ja&q=Flash&btnG=Google+%E6%A4%9C%E7%B4%A2 これの search? の後の引数↓の形と同じです。 hl=ja&q=Flash&btnG=Google+%E6%A4%9C%E7%B4%A2 しかし,これは人間にとっては見にくいので, 変数=値 を1セットとして,改行を入れる場合の形式が, 上のテキストのデータ形式になります。 そして, Flash の方にはフレーム1に次のように書きます(コピペ可能)。 ---------------------------------------- // テキストを 日本語コード Shift-Jis で読み込む System.useCodepage = true; // 外部テキストを読み込む this.loadVariables("text.txt"); ---------------------------------------- テキストフィールドの用意やインスタンス名, ボタンの用意やボタンのスクリプトは, 上の 「◎ 内部データ処理だけでランダムなメッセージを表示」 と全く同じ物を使用してくださってかまいません。 フレーム1に用意していた, comment0~4 とその値の部分を全て削除して, 上のように書き替えてくださると良いだけです。 ====================== 本当は最近は, loadVariables メソッドはあまり使われません。 LoadVars クラスのメソッドを使います。 loadVariables が使われなくなった理由は, loadVariables 読み込んだら読み込みっぱなしで, 外部テキストを, 「読み込んだのか」,「読み込んでいないのか」, 「読み込みの途中なのか」,「読み込みに失敗したのか」… こういうことががわからないからです。 今回のサンプルのように, マウスがボタンにロールオーバーするような場合は, 読み込んで即処理ではなく, 読み込んだあと,しばらくして処理する場合は, loadVariables でもかまわないと思います。 しかし, Flash が表示されてすぐに, 外部テキストを読み込んで, そして即,ランダムなメッセージを自動で表示させるような場合は, LoadVars クラスのメソッドを使うようにしてください↓。 LoadVarsオブジェクトを使った外部テキストファイルの読込み http://www.fumiononaka.com/TechNotes/Flash/FN0303007.html しかしとにかく何より, 外部のファイルロードより,内部の処理ができることが大切ですよ。 内部処理ができてからこそ, 外部データの形式などが決まるのですから。

emo1029
質問者

お礼

丁寧でわかりやすい回答ありがとうございます!! 内部処理でできましたw 本当にありがとうございました!!!

関連するQ&A

  • Flash MXで外部テキストを読み込むと文字化けしてしまいます。

    以下のように、Flash MXで外部テキストを読み込むと文字化けしていまいます。 どうすれば文字化けせず、表示されるのでしょうか? onClipEvent (load) { this.loadVariables("myData.txt"); }

    • ベストアンサー
    • Flash
  • 外部テキストを読み込んで外部swfを表示

    flashの中に外部テキストに指示されたswfを読めるようにしたいのです。 今、試しているのが、 外部のテキスト(pics.txt)の中は pict="51.swf"と書いて flaには onClipEvent (load) { this.loadVariables(”pics.txt”); } onClipEvent (data) { myPict=pict; myStage.loadMovie(myPict); } とやってみたのですが、ぜんぜんダメでした。 どうしたもんでしょう? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • Flashの外部テキストのフォントを変えるには

    Flashで外部テキストを読み込むものを作っているんですが、始めたばかりで初心者です。 onClipEvent (load) { Rnd = Math.floor(Math.random()*1000); this.loadVariables("http://www.aaaaaaa/test.txt?"+Rnd ); this.onData = function() { msgArea.text = test1; }; } これでFlash自体は動くようになったのですが、文字が小さかったため大きくしたいです。 フォントサイズを変えようと思い、 this._fmt.size = 24; を5行目に追加してみたのですが、反応がありません。 シンボルの状態のためか、プロパティを見てもフォントの項目が見当たらないです。どうしたら変えれるのでしょうか?

  • ボタンを押すと外部テキスト表示

    初心者です。フラッシュはMXです。よろしくお願いします。 ボタンを押すと外部のテキストをテキストフィールドに表示する、というものを作りたいと思っています。過去の記事を検索して、私なりに組み立ててみました。 外部テキストファイル名はphoto01.txtです。読み込みたいテキストはtxt01_1です。 まず、メインにダイナミックテキスト、複数行、変数comentを用意しました。 ボタンは、メインにあるムービークリップthumbnailsの中にあるボタンに、 on (release) { _parent.coment = txt01_1; } というアクションを書きました。 そしてメインのフレームには System.useCodepage = true; this.loadVariables("photo01.txt"); というアクションを書きました。 プレビューしてボタンを押してみたらundefinedと出てしまいました。 意味も全くわからないまま拾い集めて組み立ててみたので、何が悪いかもわかりません。 どなたかぜひ教えてください。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASHで外部テキストの読み込みができません。

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

  • Flashで外部テキストファイルを読み込ませようとしたらば文字化けが発生

    Flashで外部テキストファイルを読み込ませようとしたらば文字化けが発生しました。 文字化けを解消しようと思いいろいろと試したのですがどうしても解消する事ができませんでした。 1つわかる事は数字を表示する事はできるという事です。 日本語になると文字化けになってしまいました。 テキスト側の記述 text=あいうえお フラッシュ側の記述 onClipEvent(load){ this.loadVariables("news.txt"); } になっています。 どうか良いアドバイスをいただけないでしょうか? お願いします。

  • Flash スクロールバー表示

    環境 Win OS XP   Macromedia Flash MX Professional 2004 外部テキストを読み込んでいるんですが ◆スクロールパーツがうまく表示されない …スクロールバーの部分が上下に長い ◆スクロールの反応が悪い …マウスでスクロールできず上下の矢印を押さないと移動できない ◆*.flaだと上下の矢印も表示されない白い棒のまま。 ◆外部テキスト(HTML)が全部スクロールで表示しきれない …もっと文章があるんですがスクロールできるのは数行止まりで それ以上、下へ行かないんです。 サイトや本など色々見たのですが確証あるものがなくご指導いただきたく思いますので よろしくお願いします。 アクション部分は onClipEvent (load) { this.loadVariables("txt.html"); } onClipEvent (data) { scrollbar.setScrollTarget(txt.html); } 初心者なモノで説明不足かもしれませんが どうぞよろしくおねがいします。

    • ベストアンサー
    • Flash
  • 外部テキストの文字化けが直らないのす。

    こんにちわ。お世話になっております。 Flashを勉強しております。 今回は、外部からtxtファイルをswfに呼び出そうとしてます。 そのテキストの文字化けが解消されずに困っております。 現在、 【titleP1】と言う【ムービークリップ】内に【title_P1】と言う【グラフィック】を配置してます。 【titleP1】内でゆっくりと文字が浮き出るようにトゥイーンを設定してます。 【title_P1】に【ダイナミックテキスト】を配置して、変数を【mes】としてます。 【シーン1】上に【titleP1】を設置して、【titleP1】にスクリプトを設定してます。  onClipEvent (load) {  this.loadVariables("titleP1.txt");  check = false;  }  onClipEvent (data) {  this.play();  } イロイロなサイトさんや、参考書を見てテキストを出すことまで出来たのですが、文字化けを防ぐ方法が分かりません。 txtファイルの文字コードを【UTF-8】に設定しても文字が化けました。 どなたか問題解決方法をご存知でしたら、是非教えてください!!お願いいたします!!!!

  • 外部テキストのURLを読み込みたい

    外部テキストにあるURLを読み込みたいと思っています。 しかし外部テキスト内では「&」で変数宣言を区切りますので、URL中にある「&」文字でデータが区切られてしまいます。どのようにすればURLを1つのデータとして読み込む事ができるのでしょうか? 現在は以下のように読み込む処理のみ行っています。 お手数をお掛けしますがよろしくお願い致します。 ・FLASH MX ・アクションスクリプト内容 this.loadVariables("data.txt"); trace(this.data); ・テキストの内容(data.txt) data=http://aaa.net/aaa/aaa.cgi?mode=link&id=123

    • ベストアンサー
    • Flash
  • 外部ファイルの読込みで"<"より後の文字が表示されません。

    いつもお世話になっています。 初めてダイナミックテキストに対して外部ファイルの読込みを行いましたが、問題が発生しています。 お力添えをお願いします。 以下のようにASを記述しています。 ------------ onClipEvent (load) { file_name = "file/aaa.txt"; // System.useCodepage = true; this.naiyou.loadVariables( file_name ); } ------------ 読込みを行うテキストファイル(aaa.txt)の内容は、URLエンコード済みです。 今回問題となっている"<"の文字コードは、[%3C]に変換されています。 文字コードは、[UTF-8]です。 改行コードは、[CR]です。 環境:windows xp    Flash MX 2004 Pro ご回答宜しくお願いします。

    • ベストアンサー
    • Flash