フラッシュMXで外部テキストから複数種類出力する方法

このQ&Aのポイント
  • 初心者のため、フラッシュMXで外部テキストから複数の種類を出力する方法を知りたい。
  • 日記のようなものを作成し、外部テキストを使用して簡単に増やすことができるようにしたい。
  • ボタンを押すと日記の内容が出力される仕組みを作成したいが、具体的な方法がわからない。
回答を見る
  • ベストアンサー

フラッシュMXで外部テキストから複数種類出力する方法

まだ初心者なので初歩的なことを書くかもしれませんがよろしくお願いします。 日記みたいなのを作ろうとしているのですが、今作っているものがとても重くなってきたのと簡単に増やすことが出来るよう外部テキストにしようと考えています。 ひとつのテキスト出力のところにボタンを押すとそのボタンの日付の日記が出力されるようにしたいのですが、どのようにしたらいいのでしょうか? ひとつの外部テキストを表示する方法は分かりますが、ボタンを押してするというのがどのようにやったらいいのかを重点的に教えてください。 外部のファイルはひとつ(変数1=text1&変数2=…)からでも複数(全く違うファイル)でも可能なんでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • mat-21
  • ベストアンサー率56% (91/162)
回答No.3

そうですか(ToT).... ちょうど、今、私も仕事で同じスクリプトを書いているのですが、私はちゃんと動いてくれるのです...。 なぜ、エラーにになるかを考えてみたのですが、たぶん、このスクリプトは、タイムラインが1しかない設定で書いたので....。 もし、1よりも例えば、「タイムライン10まであって、それがループすると」えらーになると思います。 text01=今日は大変良い日でした。 &text02=今日は最悪の一日だった。 の「nikki.txt」を準備し、 スクリプト用のフレームのタイムライン1の○に、 System.useCodePage = true; this.loadVariables("nikki.txt"); スクリプト用のフレームのタイムライン10の○に、 this.gotoAndPlay(2); 上記は10までいったら2に戻るという設定。 つまり、2~10まで繰り返します。 テキストボックスは、新しいテキストボックスのフレーム(タイムライン1~10まであるキーフレーム)に、テキストボックスの変数をdiaryと設定。 functionではない方法では、 新しいボタン用のフレームを設け(タイムライン1に10まであるキーフレーム)、ボタンA・ボタンBを配置。 ボタンAのスクリプト on (release) { diary=text01; } ボタンBのスクリプト on (release) { diary=text02; } これで以上です。 ボタンAをくりっくすると、テキストボックスに「今日は大変良い日でした。 」 と表示され、ボタンBをクリックすると「今日は最悪の一日だった。 」に入れ代わる。再度ボタンAをクリックすると「今日は大変良い日でした。」に差し変わる。といった感じになると思うのですが....。 だんだん自信がなくなってきました。ごめんなさい。

kotora9
質問者

お礼

ありがとうございますっっっっっっっっ! できました!今教えていただいたやり方でやったらちゃんと動きました。 何がいけなかったのか今から調べてみようかと思いますが、まずはお礼をと思い書いてます。 何度もご親切にありがとうございました。

その他の回答 (5)

  • mat-21
  • ベストアンサー率56% (91/162)
回答No.6

そこまでの経験がないので、わかりませんが、理論でスクリプトを書けば可能だと思います。 [diary]の変数があるダイナミックテキストのテキストボックスを作ってインスタンス名を[textBox]とします。次にそれをムービークリップ(シンボル)にし、インスタンス名を[clipDiary]と入力します。つまり、[clipDiary]のシンボルの中に[textBox]という名のテキストボックスがある、ムービークリップができたと思います。さらに、スクロールボタンを付ける場合は、そのシンボルの中に新規のフレームを設け、上下のスクロールボタンを配置します。その時、各スクロールボタンのシンボルのActionScriptは、 上へのスクロールボタン on (press) { Box=_root.clipDiary.textBox; if ( Box.scroll > 1 ) { Box.scroll--; } } 下へのスクロールボタン on (press) { Box=_root.clipDiary.textBox; if ( Box.scroll < Box.maxscroll ) { Box.scroll++; } } となります。[textBox]がある_root階層が[clipDiary]の中にあるためです。 これを、シーンに配置します。この配置したフレーム名を説明がしやすいように、[frame_TextDiary]としましょう。このフレームのキーをタイムライン1ー10(●____|)と仮定します。 次に前回作ったボタンを新規のフレーム[frame_button]に配置し、[frame_TextDiary]と同じようにタイムライン1ー10(●____|)と設定します。 次にActionScript用にフレーム[frame_ActionScript]を設けます。 これでフレーム数は3つで、タイムラインは1ー10までのはずです。 次に、ActionScriptを入力しましょう。 まず、[frame_ActionScript]のタイムライン1と2と10に空白のキーフレーム○を入れます。そして、ここが肝心です。 1の○に System.useCodePage = true; _root.clipDiary.loadVariables("nikki.txt"); だけです。もし、このタイムライン1上に[clipDiary]のシンボルがないとエラーになります。さらに、この2行目のスクリプトは、ただ単に、[nikki.txt]にあるテキストをダウンロードするだけで、表示するまでのスクリプトではありません。ようは、flashの中にテキストを蓄積するだけです。ダウンロードされたテキストの中の変数(XXX=)とテキストボックスの変数(XXX)が一致すればXXX=以降のテキストが表示されるというスクリプトは別にある訳です。 10の○には、 this.gotoAndPlay(2); これは、タイムライン10まできたら、タイムライン2に戻るというわけです。つまり、1から始まり、2~10を繰り返します。では、もし、1~10を繰り返したらどうなるでしょう。たぶん、もし、[textBox]に表示されている文章があったら、消えてしまうと思います。たぶん....。 System.useCodePage = true; も_root.clipDiary.loadVariables("nikki.txt");も、一回読み込まれればいいわけですから、1に戻る度、リロードされてしまいます。 次に、前回作ったボタンのスクリプトですが、[textBox]の_root階層が違うので以下のようにしなければならないと思います。 ボタンAのスクリプト on (release) { _root.clipDiary.textBox.scroll=1; _root.clipDiary.textBox.diary=text01; } ボタンBのスクリプト on (release) { _root.clipDiary.textBox.scroll=1; _root.clipDiary.textBox.diary=text02; } これでいいと理論上、思うのですが、ひょっとして、テキストボックスの_root階層が上にあると、よみこまれないかもしれません。自信はないです。動かなかったらごめんね。

kotora9
質問者

お礼

ずいぶんやってみましたが無理のようでした。やっぱり階層が上だとだめなんでしょうね。 でもムービークリップを使わないやり方ではちゃんとできました。 変な質問ばかりだったのに毎回丁寧に返答していただき、本当にありがとうございました。

  • mat-21
  • ベストアンサー率56% (91/162)
回答No.5

コンポーネントは使用したことがないので、それに関する回答はできませんが、スクロールボタンの作成についてなら回答できます。 今までの設定をしたところで、スクロールボタンを配置してみましょう。 まず、スクロールボタン(ボタンシンボル)を上下用に2種類作成します。作成したら、ボタン用にフレームを設け、同じタイミング(タイムライン1)に配置します。上用のボタンシンボルのアクションスクリプトに on(press){ if (_root.textBox.scroll > 1) { _root.textBox.scroll--; } } と入力(この場合のtextBoxは、変数diaryのテキストボックスのインスタンス名textBoxの事です)し、 下用のボタンシンボルのアクションスクリプトに on(press){ if (_root.textBox.scroll < _root.textBox.maxscroll){ _root.textBox.scroll++; } } と入力します。 以上です。 これで、各スクロール用のボタンをクリックすると上下に1行ずつ動くとおもうのですが....... やり方はいろいろありますが、これが一番スクリプト的に簡単だと思います。

kotora9
質問者

補足

今まで使ってきたダイナミックテキストをスクロールをするテキストとしてムービークリップにしておきたいんですが、出来ますか? 上を参考にスクロール付きのテキストをムービークリップするところまでは出来たのですが(これはちゃんと動いています(^o^)/)、 また今まで動いていたボタンを押すと出力されるという処理がうまくいかなくなってしまいました。 ボタンのスクリプトは同じで、スクリプト用のフレーム(1)に onClipEvent (load) {   System.useCodePage = true;   this.loadVariables("nikki.txt"); } その後に onClipEvent (data) { かonClipEvent (mousedown) { あたりを使って読み込むのでしょうか? それともやはり10フレーム後とかに gotoを入れればいいのでしょうか? onClipEvent (data) { は読み込んだ後1度のみしかできないとかヘルプに書いてあるし!!! あーわからなーーーーーい! そもそもムービークリップに使用と考えたこと自身無理があるのかしら。。。。。。。。。。

  • mat-21
  • ベストアンサー率56% (91/162)
回答No.4

それはそれは、良かったです。 アドバイスですが、日記の文字数が多いと、テキストボックスより下がはみ出てしまいますよね。たぶんそのとき、スクロール設定するとおもいますが、今までのスクリプトだと、途中までスクロールして、違う日にちの日記に差し変わった時、前の日にちの途中までスクロールした行の部分が差し変わったテキストの行になってしまうので、以下のスクリプトをたすと、差し変わってもいつも、各テキストの先頭になります。 もし、テキストボックスをスクロール設定にしたら、 テキストボックスのインスタンス名を仮に「textBox」とした場合、 on (release) { diary=text01; } ↓以下のようにすると on (release) { _root.textBox.scroll=1; diary=text01; } ※ボタンBも同じ設定で......。 つまり、この場合のscroll=1は、テキストボックス(_root.textBox)の1行目という意味です。

kotora9
質問者

補足

すごくタイミングのいいアドバイスとってもうれしいです。 今ちょうどスクロールバーをつけようとしていたところです。今回は初めてなのでコンポーネントを使ってやってみようとしはじめていたところなんですが(>。<) ダイナミックテキストにtextBoxという名前をつけコンポーネントのスクロールバーをテキストの線の上やくっつけてドロップしてみるのですがサイズも変わらなければ吸着もしません。プロパティーを見るとちゃんとTagetTextFieldにはtextBoxとなっているのに…。もちろんパブリッシュしても全く動きません。 なにか設定しなければいけないのですか?

  • mat-21
  • ベストアンサー率56% (91/162)
回答No.2

すんません。 動作確認してないですが、下記に間違いがありました。 loadVariablesNum("nikki.txt", 0); ではなく、 loadVariables("nikki.txt"); でどうでしょう?

kotora9
質問者

補足

loadVariables("nikki.txt"); でするとパラメーターが足らないとエラーが出ます。 0を足すと以前と変わりないです。 trace文を入れてみたのですが、変数a,b,day,diaryどれもundefinedになっています。読み込みができていないということでしょうか? function使う以外に他に方法はありませんか?

  • mat-21
  • ベストアンサー率56% (91/162)
回答No.1

まず、テキストファイルを作成しておきましょう。作り方はわかりますね。例えば --------------(←この線は関係ありません 以下同) text01=今日は大変良い日でした。 &text02=今日は最悪の一日だった。 -------------- と言った内容の「nikki.txt」というファイルを最後Flashを書き出すディレクトリと同じ階層に保存します。 次に、flashMXでテキストボックスを<ダイナミックテキスト>で<複数行>で<変数を「diary」>とし、描きます。ここで書き出しても、変数「diary」はないので白いままですね。 次に、ボタンを2つ作ります。各ボタンアクションスクリプトを以下の様にします。 ---ボタンAのスクリプト--- on (release) { textOpen(a); } ---ボタンBのスクリプト--- on (release) { textOpen(b); } ------------------------- これで書き出してもまだです。 次に、ActionScript用に空のフレームを設けます。そうすると当然1のタイムライン上に○がありますね。その○のタイムラインにActionScriptを入力します。 まず、文字化けが起こらないように、エキスパートモードで、下記のスクリプトを入力 ------------------------- System.useCodePage = true; ------------------------- そして、先ほど作った、テキストファイルを先にロードしておく設定で、同じスクリプト画面に続きで、 ------------------------- loadVariablesNum("nikki.txt", 0); ------------------------- と入力します。この段階では、「diary」変数のテキストがないので、テキストファイルはロードしますが、何も表示されません。 そして、いよいよ、各ボタンを押すとテキストが入れ代わるスクリプトを入力します。 引き続き同じスクリプト画面に ------------------------- function textOpen(day){ if (day == a) {diary = text01;} if (day == b) {diary = text02;} } ------------------------- とします。 これで書き出してみて確認して見てください。 いかかでしょうか?

kotora9
質問者

補足

やってみましたが動きませんでした。 テキスト用、アクション用、ボタン用と3つのレイヤーに分け、タイミングは全部同じでいいんですよね? アクションのレイヤーですが、 load… function… の後はonClipEvent等何もいらないのでしょうか?

関連するQ&A

  • 外部から読み込んだテキストを切り替える方法

    1.外部テキストを読み込む 2.ボタン1、ボタン2、ボタン3をクリックすると、   テキストフィールドに表示される文字が   各1~3までの変数を読み込んで切り替わる。  (ボタンの数と表示するテキストの数は同じ) …という内容をやってみようと考えてるのですが、 こちらは技術的に可能なのでしょうか? 読み込む変数の数だけテキストフィールドは必要になりますか? テキストファイルを個別に分けて切り替える…という手法は、 たくさんあったのですが、変数で切り替える方法がわからず、 どなたかご教授くださると助かります。

    • ベストアンサー
    • Flash
  • Flashで外部テキストをテキストフィールドオブジェクトに読み込む方法

    FlashMXを使用しています。 外部テキストファイルをまず loadVariablesで読み込みました。 そして、その読み込んだテキストファイルの内容を、 ダイナミックテキストボックスに入れて表示させたいと思っています。 その際、テキストボックスには変数名をつけるのではなく、インスタンス名をつけることでテキストフィールドオブジェクトとしています。 以下、そのスクリプトです。 mc_text_fieldという名前のテキストフィールドオブジェクトに外部テキストの変数v_textのストリングを読み込ませようとしていますが、うまく作動しません。 タイムラインのスクリプト this.loadVariables("gaibu.txt"); mc_text_field.text=v_text; 外部テキストgaibu.txtの中身 v_text=こんにちは。 宜しくお願いします。 また、LoadVarsを使っても読み込むことは可能なのでしょうか。どちらがお薦めでしょうか。宜しくお願い致します。

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

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

    • ベストアンサー
    • Flash
  • 外部テキストをsplitで分割する時

    宜しくお願いいたします。 外部テキストをsplitで分割しようと思うのですが・・。 スクリプトはこんな感じになっています。 System.useCodepage = true; // Shift-JISのテキストを読み込む設定に変更 myText01 = new LoadVars(); // 新規LoadVarsオブジェクトmyTextの作成 txt_file01 = "text/text001.txt"; // 外部テキストファイル名を変数txt_fileに代入 myText01.load(txt_file01); // 外部テキストファイルの読み込み _root.bp=t001 //変数 myText01.onLoad = function(ok) { if (ok) { // 外部テキストファイルを読み込んだときの処理 work_txt = myText01._root.bp.split("~"); と書いて、text/text001.txtというテキストのt001という行を"~"で分割したいのですが、うまくいきません・・・。 変数でオブジェクトを指定しているのが悪いと思うのですが、何か良い方法はありますか? 何分初心者なもので・・・。 説明がわかりづらいかもしれませんが、困ってしまっているので宜しくお願いいたします。

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

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

    • ベストアンサー
    • Flash
  • FLASH Lite1.1 外部テキストを表示する

    お世話になっております。 携帯サイト初心者です。アドバイスお願いします。m(__)m したいことは単純で、外部テキストa.txtをダイナミックテキストフィールドに表示させたいのです。 ★メインのTLにダイナミックテキストフィールドを作り、変数「text」としました。単一行でフォントサイズは10です。 ★テキストファイルは、「text=あいうえお・・・」で、シフトJISでswfと同じ階層に「a.txt」で保存しています。 ★メインのTLの1フレーム目に以下を入力しました。 loadVariablesNum("a.txt", 0); ●エミュレーターでは表示されていますが、携帯では表示されません。 (ソフトバンクの921SHとLite1.1対応ドコモ) FLASH CS3でFLASH Lite1.1にしています。 なにが悪いのか・・・ よろしくお願いします。

    • ベストアンサー
    • Flash
  • ボタンを押すと外部テキスト表示

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

    • ベストアンサー
    • Flash
  • 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
  • FLASHで外部テキストを表示するには

    こんにちは。 現在FLASHで、あるボタンをクリックすると吹き出しが出て、その吹き出しの中に外部テキストを表示させる、というものを作ろうとしています。 吹き出しはムービークリップシンボルで作成し、ダイナミックテキストブロックを配置したフレームに「loadVariablesNum("text1.txt", 0);」というアクションを追加しました。 そしてボタンには「on (release)」イベントを追加し、クリックすると吹き出しシンボルが表示されるようにしました。 その結果、ボタンをクリックすると吹き出しは表示されるのですが、テキストが全く表示されません。スクリプト内で指定した外部テキストのファイル名および階層は間違っていないようです。 このように、うまく外部テキストを読み込みできない原因として、何か考えられることはありますでしょうか? 説明が下手で申し訳ありませんが、ご教示いただけると助かります。 よろしくお願いいたします。

  • 外部テキストファイルの読込み

    FLASH初心者です。 外部テキストファイルに &text1=あああああ& &text2=いいいいい& ・・・ $text10=こここここ& のように書かれているファイルをFLASHで読み込んで flash側でこの文字をスクロールしたいのです。 スクロールする文字のスピードが、最初ゆっくり、終わりのほうは早く。というように「あああああ」「いいいいい」それぞれにそのようにスピードの変化をつけたいのです。変化は全て同じでよいのですが。 読み込んだ文字のスクロールが始まる前に、少しアニメーションがあって、その後変数分(今回は10回)分文字を スクロールさせたいのです。 そのようなことは可能でしょうか? どこか参照になるようなサイトはないでしょうか? 説明が下手でごめんなさい。

    • ベストアンサー
    • Flash