- ベストアンサー
外部テキストをボタンでスクロールさせたいのですが
色々本を読んでがんばったのですが、どうしてもテキストがスクロールしてくれないのです。 FLASH MX プロフェッショナル2004を使ってます。 以前のバージョンではちゃんと動作するものを作れたのですが、もうすっかり忘れてしまっていて・・・汗 もうひとつ質問なのですが、その外部テキストの改行コードをCRにしないと2回改行されてしまうことになると書いてたので、改行コード変換ツールをDLして変換したのですが、テキスト開くと■で改行したところが区切られていて、テキスト上では一行で表示されているのですが、これは直しようがないのでしょうか。 テキストでもちゃんと改行していて欲しいのですが、色々なテキストエディタや変換ツールを使ってみましたが、なかなかうまくいきません。有料のソフトはちゃんと改行して見えるのでしょうか。 以上2つについて教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 Windows のメモ帳は改行を LF と CR の2つのコードで記録しますので、メモ帳で編集・保存したテキストファイルを読み込む限り、Flash では2回改行されてしまいます。 これは MX 2004 でも、その前の MX や Flash 5 でも同じです。 普通に改行を入れたテキストファイルでも1回しか改行されていなかったのであれば、それは、テキストファイルを作る時点で何かカラクリがあったはずです。 例えばフリーのテキストエディタ”TeraPad”では、保存する際に、改行を LF + CR で記録するか、LF または CR のどちらか1つのコードで記録するかを選択できます。 LF か CR だけで記録するように設定して保存し、これを Flash で読み込むと、改行は1回しか入りません。 TeraPad でこのファイルを開いた場合は、きちんと改行された状態で表示されますし、ワープロのように Enter キーで改行を入れながらテキストを編集していくこともできます。 しかし、Windows のメモ帳は LF + CR の改行にしか対応していません。 改行コードを LF もしくは CR だけで記録したテキストファイルを Windows に付属のメモ帳で開いてみると、改行は無視されてしまいます。 #2でも書きました通り、Flash では LF ・ CR ともに改行と見なします。 従って、どんな方法をとっても、要するに改行コードを LF か CR のどちらか1つだけで記録しているテキストファイルを都合してくれば、テキストファイル内に改行を直に入れてあっても、改行された状態で読み込めるわけです。 Windows に付属のメモ帳では LF + CR でしか改行を解釈できないので、Flash で読み込んだ時にも改行を正確に表現できるテキストファイルを作成するには不向きといえます。 改行が LF + CR で記録されたとしても、それを LF か CR 1つに直すツールで変換したファイルを読み込めば、Flash では1回しか改行されなくなると思います。 ただし、変換したファイルをメモ帳で開くと、改行が正しく解釈されないために改行されなかったり、文字がおかしく表示されることがあります。 これはメモ帳の仕様なので、どうにもなりません。 正しく改行された状態で確認・編集したいのであれば、目的の改行コードに対応したエディタで開くしかありません。 Windows をお使いでしたら、先ほどご紹介した TeraPad がオススメです。 無料ですし、インストール・使い方も簡単です。 TeraPad は Vector からダウンロードできます。 ・TeraPad http://www.vector.co.jp/soft/win95/writing/se104390.html
その他の回答 (2)
- DPE
- ベストアンサー率85% (666/776)
イベントハンドラ(インスタンス名.on*** = function ・・・の、on*** の部分)のつづりの間違い・変数名の間違い・スクロールボタンにインスタンス名が付いていないといった、些細な誤りがありませんでしょうか? スクリプトの発想に問題がなければ、こうした細かいミスが原因と思われます。 イベント発生時にきちんとスクリプトが実行されているか、変数に目的の値が入っているかなどは、trace というアクションを使って調べることができます。 例えば、 up.onPress = function () { press_flg = true; trace( press_flg ); }; このようなアクションを書くと、ムービークリップ”up”がクリックされた時、変数 press_flg には true が入ります。 正常にこの関数が呼び出されていれば、「出力」パネルが開いて press_flg の内容が表示されます。 クリックして「出力」パネルが開かなかったら、trace アクションは実行されていません。つまり、onPress 自体が正常に機能していないことになります。 「出力」パネルは開くけれど undefined と表示された時は、変数 press_flg は存在しないことになっています。変数名の誤りや階層の間違いなどがないか、確認してみてください。 true が入っているはずなのに false と表示されるなど、意図しない値が入っているようならば、press_flg を書き換える処理に問題があると思われます。 こんな感じで、不具合の原因を探っていくといいですよ。 「アクション」パネルでは、キーワードや識別子になっている語には色が付きます。 onPress や onReleaseOutside など、Flash 内部で定義されているキーワード・識別子を記述して色が変わらなかったら、それは、つづりや大文字・小文字が間違っているということです。スクリプトを入力する時や、間違いを探す時の目安にしてください。 Flash MX 2004 からは大文字・小文字の区別が厳しくなりましたので、こちらも気をつけましょう。 なお、文字の配色は「編集」→「環境設定」の「 ActionScript 」のタブで変更できます。 ---------------------------------------------- 外部テキストを確実に改行して読み込むには、改行したい箇所に、改行のURLエンコード %0A か %0D を挿入してみてください。 例えば、 test=あいうえお%0Aアイウエオ%0D12345 というテキストファイルを読み込み、表示させてみると、 あいうえお アイウエオ 12345 このように改行されます。 これくらいのことで有料のエディタを使うなんて、ちょっともったいないと思いますよ ^^; Windows での改行は、LF と CR という2つのコードで表されています。 ところが Flash では、どちらのコードも1つで改行と見なすため、Enter キーで改行を入れると、2回改行されて1行間が空くことになります。 このあたりの事情については、以前別の質問で説明したことがありますので、よろしければご参照ください。 #2で、説明しております。 ・ダイナミックテキストに読み込んだテキストを改行させるにはどうすればよいのでしょうか? http://okweb.jp/kotaeru.php3?q=1368317
補足
回答ありがとうございます。 FLASHはなんとか作動させることができました。 外部テキストのことなんですが、テキストを読み込んだとき、また、テキストに書き加えて更新するときに、いちいち%0Dというようなものを入れるとすごくやりづらいのと、見たときに非常に分かりづらいですよね。 確か、前のバージョンで作ったときは、テキストは普通に改行しても、FLASHで見た時に1回分の改行しかしてなかったと思ったのですが・・・。 質問の仕方が悪くて申し訳ないです。
- kai123
- ベストアンサー率53% (88/163)
自分はプロフェッショナル版でないflashMX2004を 使用してますが、変わらないと思うので。 まずは、外部テキストのスクロール・・・ 外部テキストを読み込むテキストフィールド(インスタンス名text)が インスタンス名txt_mcのムービークリップに配置されているとします。 そして、そのムービークリップがステージ上(つまりroot)に配置してあるとします。 ステージ上に配置したUPボタンに以下のアクションを記述します。 on (release){ _root.txt_mc.text.scroll-=1; } ステージ上に配置したDOWNボタンに以下のアクションを記述します。 on (release){ _root.txt_mc.text.scroll+=1; } スクロールする簡単なやり方はこんな感じです。 外部テキストの改行コードについて・・・ 「CR」改行コードでない場合は、改行時に「%」を入力します。 例えば、 tt=行の改行時には改行コードが% 挿入されています。 みたいな感じです。 どうでしょうか? ところで参照ファイルが開けませんが・・・
お礼
回答ありがとうございました。 無事にFLASHは作動することができました。 テキストの改行については、やはり改行のたびに何か入力しないといけないのですね。 テキストをメモ帳などで開いた状態で改行されていて欲しいのですが、無理なのでしょうか・・・。
お礼
回答ありがとうございました。 改行コードというものを実は、今回本を見直してみて初めて知ったのですが、DPEさんの説明でよく分かりました。 さっそくTerapadをDLして使ってみたいと思います。 ありがとうございました。