- ベストアンサー
getURL 外部ファイル呼び出しについて
当方初心者で、質問内容が正しいかどうかすら怪しいかもしれません。 質問はフラッシュのアクションスクリプトについてなのですが、 on (release) { getURL("URL"); } このような記述をする場合に、 "URL" の部分を外部のテキストファイルなどから読み取ることはできるのでしょうか。 また、可能であればその方法を教えていただければ幸いです。 初歩的な質問で申し訳ございませんが、何卒お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1です。 お返事遅くなってしまいました。 #1の補足に書かれてらっしゃることから, だいたいの内容は推測できました。 > 例えば上記のような記述で良いということでしょうか? > 検討はずれでしたらすみません。 見当はずれというか,書かれているのは勝手なスクリプトです。 > 読み込むファイルはフラッシュ内という訳ではなく と書かれていますが, #1で書いた loadVariables に関するURL通りのことをとりあえずやってみてください。 やらずに勝手なことをしていると,いつまでもうまく行きません。 loadVariables に関する URL は細かくていねいに説明されすぎていて, 逆に何をしているのかがわからないと言うことでしょうか? 要約しますよ↓。 ~・~・~・~・~・~・~・~・~・~・~・~・~・ まず,Flash と同じフォルダに, 外部テキスト「text.txt」を用意する。 「text.txt」内に書いておくことは ------------------------------------ Mess=読み込まれたメッセージを表示しています。 ------------------------------------ 次に, ステージ上に「Mess」という "変数名" の ダイナミックテキストフィールドを用意する。 フレームのスクリプトとして,次のように書く ------------------------------------ System.useCodepage = true; loadVariables ("text.txt",_root); ------------------------------------ そしてパブリッシュ。 →「読み込まれたメッセージを表示しています。」 が, 「Mess」という "変数名" のダイナミックテキストフィールド に表示される。 ~・~・~・~・~・~・~・~・~・~・~・~・~・ これだけのことです。 この,読み込まれた 変数Mess の値である, 「読み込まれたメッセージを表示しています。」を 上のように表示させるだけでも良いですし, 他に使っても良いということです。 とりあえず表示ができないと,読み込まれたかどうかの確認ができません。 表示させることは実際には不要であっても, 単に表示させると言うことすらできなければ,他のことはできません。 とりあえず上記のようにやってみて, どういうしくみと理屈で表示されているのかを体験で実感しないと理解も応用もできません。 変数をロード 何を どこへ ↓ ↓ ↓ loadVariables ("text.txt",_root); です。 「text.txt」を「_root」にロードすると, 「text.txt」内の変数「Mess」の値である, 「読み込まれたメッセージを表示しています。」が, _root にある変数名「Mess」のダイナミックテキストに表示されるという理屈のものです。 上記のことができた上で, ご質問の場合はメッセージを表示させるのではなく, URL が必要なのですから,そこを変えれば良いのです。 ちなみに URL には 日本語が入らないと思うので, System.useCodepage = true; は不要です。 ↓ ↓ ↓ ~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・ まず,Flash と同じフォルダに, 外部テキスト「text.txt」を用意する。 「text.txt」内に書いておくことは ------------------------------ url1=aa.jp ------------------------------ (aa.jp は適当に変えてください) 次に, ステージ上に「url1」という "変数名" の ダイナミックテキストフィールドを用意する。 フレームのスクリプトとして,次のように書く ------------------------------ loadVariables ("text.txt",_root); ------------------------------ そしてパブリッシュ。 →「aa.jp」 が, 「url1」という "変数名" のダイナミックテキストフィールド に表示される。 ~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・ 以上のことができて,やっと第一歩です。 次に, ボタンで指定 URL に getURL したいわけですから, 変数「url1」の値である,「http://○○.jp」に getURL をすれば良いということになります。 ボタンに書くスクリプトは次のようになります。 --------------------------- on (release) { this.getURL(_root.url1); } --------------------------- getURL の () 内ですが, " " でくくると文字列になります。 「_root.url1」という文字列に getURL するのではなく, 「_root.url1」という変数に getURL するのですから, " " は要りません。 変数名 url1 のテキストフィールドは不要ですね。 削除してください。 最初に,変数名 url1 のテキストフィールドを用意しておいた方が, ちゃんとデータがロードされたかを確認しやすいので置いただけです。 また, どこに読み込まれているのかが目で見て確認しやすいと思います。 /////////////////////////////////////////////////////////// 上記のことができた上で,さらに発展させます。 (見て納得してもダメ。実際やらないと理解も応用もできません。) url1 と書かれているところから推測して, さらに url2,url3,… があるのですよね。 その場合です。 ↓ ↓ ↓ ~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・ まず,Flash と同じフォルダに, 外部テキスト「text.txt」を用意する。 「text.txt」内に書いておくことは ------------------------------ url1=aa.jp& &url2=bb.jp& &url3=cc.jp ------------------------------ (aa.jp,bb.jp,cc.jp は適当に変えてください) 次に,ステージ上に 「url1」という "変数名" のダイナミックテキストフィールドと 「url2」という "変数名" のダイナミックテキストフィールドと 「url3」という "変数名" のダイナミックテキストフィールドを用意する。 フレームのスクリプトとして,次のように書く ------------------------------ loadVariables ("text.txt",_root); ------------------------------ そしてパブリッシュ。 →「aa.jp」 が, 「url1」という "変数名" のダイナミックテキストフィールド に, 「bb.jp」 が, 「url2」という "変数名" のダイナミックテキストフィールド に, 「cc.jp」 が, 「url3」という "変数名" のダイナミックテキストフィールド に表示される。 ~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・ そして3つのボタンを用意して, その3つのボタンに書くスクリプトは次のようになります。 1つめ --------------------------- on (release) { this.getURL(_root.url1); } --------------------------- 2つめ --------------------------- on (release) { this.getURL(_root.url2); } --------------------------- 3つめ --------------------------- on (release) { this.getURL(_root.url3); } --------------------------- これで3つの URL に関してはできますから, あとは,url○ のデータとボタンを増やせば良いだけです。 また, 変数名 url1,url2,url3 のテキストフィールドは不要ですね。 削除してください。 外部テキストの中身に関してですが, 複数の 「変数名=値」 を用意する場合は, その間を & で区切れば,Flash が 「変数名=値」 のセットの区切だと自動的に判断してくれます。 したがって,本来次のようなデータを用意することが望ましいです。 変数名=値&変数名=値&変数名=値&変数名=値&… つまり,上記の例で行くと, url1=http://aa.jp&url2=http://bb.jp&url2=http://cc.jp となります。 しかし,これでは人間が見てわかりにくいので, 「変数名=値」 のセットごとに改行を入れたのが, --------------------------- url1=aa.jp& &url2=bb.jp& &url3=cc.jp --------------------------- この形です。 改行を入れる場合は,改行の前後に & を入れてください。 また, さらに見やすく,作りやすくするために, 次のようにしてもかまいません。 --------------------------- &url1=aa.jp& &url2=bb.jp& &url3=cc.jp& --------------------------- ※環境 上記のスクリプトは, オーサリングツール Flash 5 以上で作成可能, Flash Player 5以上で閲覧可能です。 ※さらに環境の補足(どうでも良いこと) this.getURL(_root.url1); →変更→ getURL(/:url1); などとしてもらうと, オーサリングツール Flash 5 以上で作成可能で, Flash Player 4以上でも閲覧可能になりますが, 今どきそんなに古い Player を使用している方もいないと思うので, 普通はここまで配慮しなくてもかまいません。
その他の回答 (2)
Flashにテキストファイルをロードするのには, 普通, loadVariables(関数orメソッド)か, LoadVarsクラスのメソッドを使うのが一般的です。 簡単なことをするだけでしたら, 昔からある loadVariables の方が簡単です。 次のURLでも参考にしながら実際に作成されると, どんな作り方をするのかだいたいわかると思います。 簡単FLASH講座「外部テキストを読み込む」 http://orange.2-d.jp/flash/action/14.html しかし, loadVariables は読んだら読みっぱなしの関数(またはメソッド)で, 読み込み中なのか,読み込み失敗なのか,読み込みが完了したのか, その辺の把握ができないので,あまり融通が利きません。 したがって, Flash MX 以降(Flash Player 6 以降)は, もっぱら LoadVarsクラス のメソッドでテキストを読み込むのが一般的になりました。 それで参考サイトなども少ないです(少なくなりました)。 もし,loadVariables で無事作成できて, 慣れてきたようでしたら, LoadVarsクラス のメソッドで読み込むことに挑戦してみてください。 LoadVarsクラス のメソッドは検索すればいくらでも参考になるサイトがみつかります。 Google検索「LoadVars」 http://www.google.co.jp/search?hl=ja&q=LoadVars&lr=lang_ja ※ ただし Flash Player は ブラウザではありません。 したがって, HTML はテキストとしてロードできたとしても, HTML を HTML として Flash が扱わないので, SWF 内に HTML のようなものを表示させるのは無理ですよ。 「変数名=値」の形でテキストデータを用意して, その値の部分に HTML タグ入りテキストを用意した上で, テキストフィールドを表示先に使用して, なおかつ 「テキストをHTMLとしてレンダリング」 を ON にしていると, ある程度のタグを HTML のように表示はできます。 しかし, 一般的にあるようなカタチでは無理です。 Flash 8 のヘルプより HTML 形式のテキストの使用 http://livedocs.macromedia.com/flash/8_jp/main/00001457.html
お礼
ありがとうございます! とても参考になり、前進した気がします。 url1 = loadVariables("url1.txt",_parent); on (release) { this.getURL("url1"); } ※url1.txtの一行目にhttp://~~~.jpのように指定しています。 その上で、再度お尋ねしたいのですが、例えば上記のような記述で良いということでしょうか? 検討はずれでしたらすみません。 ちなみに、読み込むファイルはフラッシュ内という訳ではなく、全く新しいページを開くだけで結構です。
その "URL" の部分は文字列が入った変数に置き換えられるだろうから事前に変数に読み込んでおけばできるのでは?
お礼
早速のご回答ありがとうございます! しかしすみません、説明不足のようでした。 on (release) { getURL("http://*****.jp"); } のようにして、htmlファイルなどへリンクする方法は解るのですが、 このリンク先URLをテキストファイルなどから読み込んで、変更作業を簡単にしたいということなのですが・・・・ 解りづらくて申し訳ございません。
お礼
非常に丁寧にご解説いただき、ありがとうございました! なんとか仕上げることができました。 本当にありがとうございます!