- 締切済み
外部からアドレスを読み込む方法は・・・?
Flash勉強一年生です。 皆様のお力をいただきたく、投稿しました。 今、制作しているFlashなのですが 更新の都合上、あるボタンのリンクアドレスを外部(テキストなど)から 設定したいと考えています。 そのやり方全般について教えていただきたいのです。 ある程度は調べたのですが、文字を読み込めてもそれを リンク先に設定するのは…?ん?ってとこで頭が止まっています…。 どうか宜しくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
Flash のバージョンや ActionScriptのバージョン などがないと回答しにくいです。 このご質問の場合に限らず,だいたいどの場合でもそうです。 回答できるだけのバージョンを回答します。 どのバージョンであったとしても, 共通で次のようなファイル構造を作成したとします。 任意のフォルダ ├ ○○.html (○○.swf が貼り付く) ├ ○○.swf └ address.txt (アドレスデータ) またどのバージョンであったとしても, 共通で次のようなアドレスデータであったとします。 「address.txt」 --------------------------- url0=xxx/aaa.html& &url1=xxx/bbb.html& &url2=xxx/ccc.html& &url3=xxx/ddd.html& --------------------------- ※上のデータは本来, url0=xxx/aaa.html&url1=xxx/bbb.html&url2=xxx/ccc.html&url3=xxx/ddd.html (変数名=値&変数名=値&変数名=値&変数名=値&変数名=値) のような, 検索エンジンで検索したときのURLのような感じのデータ なのですが, これだと人間が見にくいので各データごとに改行を入れています。 改行を入れると 改行コード という 文字 がゴミになるので, そのゴミが入らないように改行前に & を入れています。 そういうデータの形です。 ===================== ◎ Flash3 (CS3 ではなく ただの 3) 以下の場合 Flash3 以下では 「変数」 という概念そのものが存在しません。 したがって, 外部テキストをロードするということもできません(できても無意味)。 ◎ Flash4 の場合 シーン1 などメインムービーのタイムライン(_level0)に,4つのボタンを用意します。 そしてその メインムービーのタイムライン のフレーム(空白キーフレーム)に, 次のようなアクションを書いて(コピペはできません), 外部テキストを _level0 にロードします。 Load Variables ("address.txt", 0) そして4つのボタンにはそれぞれ次のように書きます。 --------------- On (Release) Get URL (url0) End On --------------- --------------- On (Release) Get URL (url1) End On --------------- --------------- On (Release) Get URL (url2) End On --------------- --------------- On (Release) Get URL (url3) End On --------------- ◎ Flash5 以上の場合 シーン1 などメインムービーのタイムライン(_level0(_root))に,4つのボタンを用意します。 そしてその メインムービーのタイムライン のフレーム(空白キーフレーム)に, 次のようなアクションを書いて (コピペ可能), 外部テキストを _level0(_root) にロードします。 loadVariablesNum("address.txt", 0); そして4つのボタンにはそれぞれ次のように書きます。 --------------- on (release) { getURL(url0); } --------------- --------------- on (release) { getURL(url1); } --------------- --------------- on (release) { getURL(url2); } --------------- --------------- on (release) { getURL(url3); } --------------- ◎ FlashMX 以上の場合 シーン1 などメインムービーのタイムライン(_root)に,4つのボタンを用意します。 その4つのボタンにインスタンス名を付けます。 たとえば 「btn0」,「btn1」,「btn2」,「btn3」 というインスタンス名を付けたとします。 そして メインムービーのタイムライン のフレーム(空白キーフレーム)に, 次のようなアクションを書いて (コピペ可能), 外部テキストを LoadVarsオブジェクト にロードし, ロード完了次第,各ボタンに動作を定義します。 -------------------------------- // LoadVarsオブジェクト myLV を作成 myLV = new LoadVars(); // myLV に外部データロード時の動作を定義 myLV.onLoad = function(Seikou) { // ロード成功の場合 if (Seikou) { // 変数 i を 0~3 に変えてループ for (i=0; i<=3; i++) { // 各ボタンの変数 my_url にアドレスを保存 _root["btn"+i].my_url = myLV["url"+i]; // 各ボタンクリック時の動作を定義 _root["btn"+i].onRelease = function() { // 保存したアドレスに getURL getURL(this.my_url); }; } } else { // ロード失敗時は各ボタンの機能を無効にする(例) for (i=0; i<=3; i++) { _root["btn"+i].enabled = false; } } }; // 外部テキスト 「address.txt」 を myLV にロード myLV.load("address.txt"); -------------------------------- ここまでが ActionScript1.0 です。 (Flash4 のコードは ActionScript ではなく単なるアクションと呼ばれるものです。) ◎ FlashMX2004 及び Flash8 以上の場合 シーン1 などメインムービーのタイムライン(_root)に,4つのボタンを用意します。 その4つのボタンにインスタンス名を付けます。 たとえば 「btn0」,「btn1」,「btn2」,「btn3」 というインスタンス名を付けたとします。 そして メインムービーのタイムライン のフレーム(空白キーフレーム)に, 次のようなアクションを書いて (コピペ可能), 外部テキストを LoadVarsクラス のインスタンス にロードし, ロード完了次第,各ボタンに動作を定義します。 ---------------------------------------- // LoadVarクラス のインスタンス myLV を作成 var myLV:LoadVars = new LoadVars(); // myLV に外部データロード時の動作を定義 myLV.onLoad = function(Seikou:Boolean) { // ロード成功の場合 if (Seikou) { // 変数 i を 0~3 に変えてループ for (var i:Number=0; i<=3; i++) { // 各ボタンの変数 my_url にアドレスを保存 _root["btn"+i].my_url = myLV["url"+i]; // 各ボタンクリック時の動作を定義 _root["btn"+i].onRelease = function() { // 保存したアドレスに getURL getURL(this.my_url); }; } } else { // ロード失敗時は各ボタンの機能を無効にする(例) for (i=0; i<=3; i++) { _root["btn"+i].enabled = false; } } }; // 外部テキスト 「address.txt」 を myLV にロード myLV.load("address.txt"); ---------------------------------------- FlashMX のスクリプト(ActionScript1.0)と大して変わらないと思いますが, これが ActionScript2.0 の形です。 ◎ FlashCS3 の場合 基本的に私は知りません。 パブリッシュ設定 で, ActionScriptのバージョンを ActionScript2.0 以下にしておけば, 上の Flash5~Flash8 のどの方法でもできると思います。 しかし, ActionScript3.0 では上の ActionScript2.0 とはまるで違います。 また ActionScript3.0 と 2.0 以下とは共存できません。 ActionScript3.0 以上の回答がご希望の場合は, そのことを補足で書いてください。 どなたか回答してくださるかもしれません。