A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
方法はたくさんありますが,
簡単に言うと,
外部テキストファイルに 「変数名=URL」 という形のテキストデータを用意しておいて,
loadVariables関数 または LoadVarsクラス のメソッドで外部テキストデータを Flash 内にロードして
そのロードした変数の値を,getURL() の () 内で参照する方法が一般的だと思います。
以下は具体的な方法例です。
また,ご使用の Flash のバージョンがわかりませんが,
こちらで勝手に Flash MX 以上(MX,MX2004,8)をお持ちだと言うことで回答します。
Flash 5 以下のバージョンでは,下で回答する方法を使うことはできません。
まず,
任意のフォルダ内にテキストファイルを用意しますが,
そのファイル名を 「data.txt」 ということにしておきます。
このファイル名は別に何でもかまいませんが,
この説明では 「data.txt」 というファイル名として説明を続けますという意味です。
「data.txt」 の中身ですが,
getURL() するリンク先が 勝手に 5つあるものとして次のように書きます。
---テキストデータ例---------------
&url0=Http://Www.google.co.jp/&
&url1=Http://Www.yahoo.co.jp/&
&url2=Http://Www.live.com/&
&url3=Http://ask.jp/&
&url4=Http://Www.marsflag.com/&
-----------------------------
※すみません。
本当は,Http ではなく http ,Www ではなく www なのですが,
ここのコミュニティでは,そういうものがあると,
&url0=http://www.google.co.jp/&
のように,勝手にリンクが挿入されてしまいます。
それにともなって,
見えない文字が入ってしまいますので,
コピペする場合は誤動作したり全く動かなくなることが考えられるため,
わざと,全角大文字 の H と W を使用しています。
したがって,
上の「テキストデータ例」をコピペする場合は,
お手数ですが,H を h,W を w に置換または手動で変更してください。
形はわかりますか。
「変数名=URL」が1つのかたまりで,
その改行の前後に & を入れてあるものです。
「&変数名=URL&」 です。
getURL する URL が1つだけしかない場合は,
特に & を使う必要はありません。
url0=Http://Www.google.co.jp/
のような形で良いです。
次に Flash 本体の作成です。
Flash で新規ドキュメントを作成して,
「data.txt」 と同じフォルダに適当な名前を付けて保存します。
そして,
ステージ上に1つの ボタン(ボタンシンボルのインスタンス) を作成してください。
そしてそのボタンをコピペで4つ増やして5つにします。
この時点で,
ボタンが5つ並んだ レイヤー が1つあるだけのはずですから,
新規でレイヤーを挿入し,
そのレイヤーを ActionScript 専用レイヤー と決めておきます。
その新規で作成した レイヤー の フレーム1 の空白キーフレームに,
次のように書きます(コピペ可能)。
------------------------------------
// LoadVarsクラスのインスタンス myLV を作成
myLV = new LoadVars();
// myLV に外部テキスト「data.txt」をロード
myLV.load("data.txt");
------------------------------------
これで,
LoadVarsクラスのインスタンスオブジェクト myLV 内に,
「data.txt」 内の全てのデータが読み込まれます。
ですからあとは,
各ボタンから,
myLV 内の各変数を指定してやればOKということになります。
5つあるうちの1つのボタンには次のように書きます。
--------------------------
on (release) {
getURL(_root.myLV.url0);
}
--------------------------
getURL の () 内に,
myLV 内の変数名を入れてやるのです。
1つわかれば全てわかると思いますが,
他のボタンには,
--------------------------
on (release) {
getURL(_root.myLV.url1);
}
--------------------------
~ 省略 ~
--------------------------
on (release) {
getURL(_root.myLV.url4);
}
--------------------------
と書きます。
そして,パブリッシュしてもらえば,
Google や YAHOO! などにジャンプするボタンができます。
本題は以上です。
====================
本題は上記のみで済んでいますが,
上の物はシンプルに原理だけを説明したもので,
ひょっとしたら何か不都合が生じる可能性もあります。
(全く不都合を生じないかもしれませんが。)
結局ほとんど同じ物ができるのですが,
もう1種類のスクリプトサンプルを書いておきます。
まず,
上で作った5つのボタンにインスタンス名を付けます。
どれがどれでも良いのですが,
5つのボタンに
「mybtn0」,「mybtn1」,「mybtn2」,「mybtn3」,「mybtn4」
という感じで,「文字列+連番数字」のインスタンス名を付けておきます。
そして,
レイヤー の フレーム1 の空白キーフレームに書いたスクリプトを,
次のように書きかえます(コピペ可能)。
------------------------------------
// 「mybtn0」~「mybtn4」のボタン機能を無効にする
for (i=0; i<=4; i++) {
_root["mybtn"+i].enabled = false;
}
// LoadVarsクラスのインスタンス myLV を作成
myLV = new LoadVars();
//
// LoadVars.onLoad 関数の定義
myLV.onLoad = function(Seikou) {
// ロードに成功したら
if (Seikou) {
// 「mybtn0」~「mybtn4」のボタン機能を有効にする
for (i=0; i<=4; i++) {
_root["mybtn"+i].enabled = true;
}
}
};
//
// キャッシュ参照防止策
// 今現在の時刻オブジェクト myDT を作成
myDT = new Date();
// 1970年1月1日(世界時) からのミリ秒を取得
myTM = myDT.getTime();
//
// myLV に外部テキスト「data.txt」をロード
myLV.load("data.txt"+"?time="+myTM);
------------------------------------
これで,パブリッシュすれば良いのですが,
パブリッシュした SWF を直接開いてみたり,
「制御」→「ムービープレビュー」してみても,
外部テキストがロードされないので正常に動かないと思います。
しかし,
同時にパブリッシュした HTML をブラウザで開くと無事に動作するのではないかと思います。
少なくともアップすれば大丈夫だと思います。
こうなってくると何が本題なのか,
さっぱり見えにくくなりますが,結局できるものはほとんど同じ物です。
何をしているのかと言うと,
エラーや不具合に対する対処をしているのです。
スクリプトの上の方では何をやっているのかというとロード待ち処理を入れてあるのです。
Flash はネットで使用することが大半です。
ローカルPCだと,外部テキストのロードは瞬時に行われますから,
まず不具合がおきることはないのですが,
ネットの場合,それも外部テキストの容量がもっと増えた場合,
その外部テキストのロードにある程度時間がかかります。
コンマ数秒 ~ 場合によっては十数秒くらいかかるかもしれません。
もし,まだ外部テキストがロードされていないうちに,
ボタンをクリックされてしまったら,
どこにもジャンプしないとは思いますが,
ひょっとしたら予期しない URL にジャンプしてしまったり,
予期しない動作をしてしまう可能性がないとは言いきれません。
それで,
外部テキストがロードされるまで,
enabled = false;
で,ボタンのボタン機能を無効にしておいて,
外部テキストがロードされ次第,
enabled = true;
で,ボタンのボタン機能を有効にしています。
スクリプトの下の方では何をやっているのかというと,キャッシュ参照防止策をとっているのです。
SWF や TXT がネット上にあってそれをブラウザでみた場合,
Flash からロードされたテキストファイル(「data.txt」)もブラウザのキャッシュ(一時ファイル)に残ります。
ブラウザは,リクエストされた URL があると,
まずそのキャッシュを見に行きます。
そして,リクエストされた URL が過去にリクエストされたものと同じであれば,
キャッシュデータの方を表示(この場合ロード)させることがあります。
普通は,
リクエストされた URL が過去にリクエストされたものと同じであっても,
キャッシュデータと本物のデータを比べて,
差分があれば本物のデータを表示させるような計算をブラウザがしてくれるのですが,
Flash からロードしたテキストファイルは,
なぜか差分があってもキャッシュを表示(ロード)してしまうことが多いようです。
ですから,
「data.txt」と,リクエストするのではなく,
「data.txt?time=1177562306765」
のように,本物のURLのあとに,いつも変わる適当な変数と値を引っ付けてリクエストしているのです。
すると,本当は同じ「data.txt」であっても,
URLが変わるので,ブラウザが過去のキャッシュを参照しなくなります。
本当は,「1970年からのミリ秒」なんていう数字を入れる必要はなく,
Math.random() などを使ってアクセスする度に違う数値を入れても良いですし何でも良いのですが,
この回答では,「1970年からのミリ秒」を入れてみる方法をとりました。
> 外部で簡単に書き換えられるようにする方法
と書かれているので,
頻繁に更新させる可能性があると思い,
キャッシュ参照防止策を入れたものを書かせていただいたわけです。
この回答の前半(===より上)は簡単でしょう。
とりあえず前半の方のスクリプトでも大丈夫だと思いますよ。
このご質問とはあまり関係がないことですが,
色々な状況を想定したり,実験検証すると,
本題とは全く関係のないエラー処理のようなものが増えて行くのです。
最初から自分で考えて作ると,
簡単なエラー処理を入れているだけに過ぎませんが。
後に書いた方のスクリプトを先に見ると,
「何じゃコレ~!?」
「ボタン機能を無効にして有効にするのだったら最初から何もしなくて良いじゃん?」
「なんで1970年が登場するの??」
「わっけわからん,脳みそバーン!」みたいな状態になりますよね。
こう言った処理が多くなるので,
他人が書いたプログラムはなかなかわからないものです。
「他人のプログラムを解析するより自分で作った方が早い!」ということにもなります。
このご質問とは関係なく色々な場合についてですが,
ヘルプや解説書から,
なるべくシンプルなサンプルを見つけて,
1単語1単語を理解して使っていくのが早道だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Flash 私のコンピューター上のファイルが開けられない。 1 2022/07/19 18:15
- USBメモリー・SDカード・フラッシュメモリー プリンタのドライバーをUSB Flash Diskに保存したい。 4 2023/05/23 23:30
- マルウェア・コンピュータウイルス FlashPlayerの削除とマルウェア感染について 5 2023/02/23 20:52
- ホームページ作成・プログラミング Adobe FLASH に代わるソフトはありますか? 4 2022/09/27 19:35
- デスクトップパソコン ホームページビルダー15 1 2023/05/30 12:30
- フリーソフト テキストファイルの一括置換で除外したい文字があります。 2 2022/06/21 17:53
- Mac OS 外部HDディスクの変更したファイルうを保存できないトラブル 3 2022/05/25 11:25
- 英語 「ドント メイク フラッシュフォトグラフィー」 5 2023/05/16 21:49
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- iPhone(アイフォーン) web上の電話番号リンクの桁区切りが、iPhoneだと特定電話番号でおかしくなるのを解決したい 1 2023/03/28 14:27
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
word
-
PowerPoint SmartArtの箇条書...
-
Illustratorテキストエリアへ塗...
-
イラレの古いバージョンのファ...
-
illustratorとExcelは連携出来...
-
イラレでダブルクリックで文字...
-
画像からテキストデータを正確...
-
バイナリファイルの編集
-
VBA:水平スクロールバーが要ら...
-
PDF-XChange Viewer のタイプラ...
-
Photoshop6のワープテキストが...
-
サクラエディタで二つのテキス...
-
Adobe photoshop CS2 テキスト...
-
フォトショップで複数テキスト...
-
Excel VBAで改行を含む文字列を...
-
Chromebookでオフラインでテキ...
-
Publisherをエクセルファイルに
-
シーケンサ(PLC)学習ソフトを購...
-
PDFファイル内の文字データ...
-
In Design CS3 テキスト回り込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
word
-
illustratorとExcelは連携出来...
-
Illustratorテキストエリアへ塗...
-
PowerPoint SmartArtの箇条書...
-
バイナリファイルの編集
-
イラレでダブルクリックで文字...
-
イラレの古いバージョンのファ...
-
PDF-XChange Viewer のタイプラ...
-
画像からテキストデータを正確...
-
Excel VBAで改行を含む文字列を...
-
PDF文書で斜めテキスト
-
exe bat
-
Illustratorのテキストの更新に...
-
Chromebookでオフラインでテキ...
-
フォトショップで複数テキスト...
-
capcutってアプリで質問です。 ...
-
Publisherをエクセルファイルに
-
Adobe Acrobatについて
-
サクラエディタで二つのテキス...
-
PDF→CSVへ変換
おすすめ情報