質問: フラッシュのスライドメニューにリンクを張る方法 fkash cs3 でパソコンはマックです。 フラッシュでjpegの画像を三枚並べて、横にスライドさせるだけの 簡単なフラッシュを作りました。 その三枚の画像をスライドさせているのですが その画像の一枚一枚にリンクを貼りたいのですが どうしたらいいのかわからくて・・・ アクションスクリプトのプログラミング初心者です。 わかる方おられましたら 是非教えてください! よろしくお願い致します。
回答: 「三兎追うものは一兎をも得ず」というわけで, とりあえず, 「動くこと」は「動くこと」,「リンク」は「リンク」,別々に考えましょう。 そして, 「3枚のjpeg」ではなく「1枚のjpeg」で考えましょう。 「新規ドキュメント」作成状態からです。 というわけで, 「新規ドキュメント」のステージ上に静止させた(つまり何もしない),jpegを1枚だけ用意します。 そして, ステージ上のそのjpegを選択した状態で, 「修正」→「シンボルに変換」より,「ボタン」または「ムービークリップ」に変換します。 変換するシンボルは「ボタン」でも「ムービークリップ」でもどちらでも良い(都合によって変える)のですが, この話の都合上,ここでは「ボタン」に変換したことにしておきます。 以下は,actionscript のバージョンや, パブリッシュするswfの flash player のバージョンによって変わります。 ◎ 場合1 actionscript 1.0 (flash lite 1.x など対応版) この「場合1」は, 「ファイル」→「パブリッシュ設定」で「flash」タブを選択し, スクリプトを actionscript 1.0 に設定してした場合です。 上で作成したjpeg入りボタンを選択した状態で「アクション」パネルを表示させます。 そしてその「アクション」パネルに次のようなスクリプトを書きます。 //---------------------------------- //このボタンをクリックしたとき on (release) { //「aaa.html」を同窓で開く geturl("aaa.html", "_self"); } //---------------------------------- 「aaa.html」の部分はリンクさせたいページに変えてください。 http:// から始まるリンクでもかまいません。 「_self」の部分を「_blank」にすると,リンク先が別窓で開くようになります。 ちなみに, 一応これは actionscript 1.0 を想定していますが, flash liate 1.x などを考えない場合は actionscript 2.0 に設定していても大丈夫です。 ◎ 場合2 actionscript 2.0 (場合1 で書いたスクリプトは消してください。) この「場合2」は, 「ファイル」→「パブリッシュ設定」で「flash」タブを選択し, スクリプトを actionscript 2.0 に設定してした場合です。 上で作成したjpeg入りボタンを選択した状態で「プロパティ」パネルを表示させます。 ※「アクション」パネル ではなく,「プロパティ」パネル です。 その「プロパティ」パネル の, [ <インスタンス名> ] のようになっている入力可能部分でボタンにインスタンス名を付けます。 ここでは「my_btn」(全て半角) というインスタンス名を付けることにしておきます。 その「my_btn」と命名したボタンのあるレイヤーとは別にactionscriptを書くために新規レイヤーを挿入します。 その新規レイヤーのキーフレームを選択した状態で「アクション」パネルを表示させます。 そしてその「アクション」パネルに次のようなスクリプトを書きます。 //---------------------------------- //「my_btn」クリック時に動作するイベントハンドラメソッドを定義 my_btn.onrelease = function():void{ //「aaa.html」を同窓で開く geturl("aaa.html", "_self"); } //---------------------------------- 「aaa.html」の部分はリンクさせたいページに変えてください。 http:// から始まるリンクでもかまいません。 「_self」の部分を「_blank」にすると,リンク先が別窓で開くようになります。 ◎ 場合3 actionscript 3.0 (場合1 や 場合2 で書いたスクリプトは消してください。) この「場合3」は, 「ファイル」→「パブリッシュ設定」で「flash」タブを選択し, スクリプトを actionscript 3.0 に設定してした場合です。 場合2 と同様, 上で作成したjpeg入りボタンを選択した状態で「プロパティ」パネルを表示させ, [ <インスタンス名> ] のようになっている入力可能部分でボタンにインスタンス名を付けます。 ここでは「my_btn」(全て半角) というインスタンス名を付けることにしておきます。 そしてこれまた 場合2 と同様, その「my_btn」と命名したボタンのあるレイヤーとは別にactionscriptを書くために新規レイヤーを挿入します。 (場合2 ですでに作成してあれば新規に作成する必要はありません。そのままのレイヤーを使用してください。) その新規レイヤーのキーフレームを選択した状態で「アクション」パネルに次のようなスクリプトを書きます。 //---------------------------------- //「my_btn」クリック時に 関数btnclickを実行 my_btn.addeventlistener(mouseevent.click,btnclick); //関数btnclickの定義 function btnclick(e:mouseevent):void { //リンク先urlのリクエストを作成 var my_req:urlrequest=new urlrequest("aaa.html"); //リクエスト先を同窓で開く navigatetourl(my_req); } //---------------------------------- 「aaa.html」の部分はリンクさせたいページに変えてください。 http:// から始まるリンクでもかまいません。 「_self」の部分を「_blank」にすると,リンク先が別窓で開くようになります。 場合1~3 のうちいずれかの方法で作成したボタンを3つ作り, その3つのボタンをスライド移動させれば良いと思います。 ただし, 場合2 または 場合3 のようにしてインスタンス名を付けたボタンを まとめて1つのムービークリップに変換して, そのムービークリップをスライド的に動かす場合は, そのムービークリップにもインスタンス名を付けて(例えば「my_mc」), スクリプトの my_btn.onrelease や my_btn.addeventlistener(mouseevent.click,btnclick); の部分を my_mc.my_btn.onrelease や my_mc.my_btn.addeventlistener(mouseevent.click,btnclick); のように変更する必要があります。 今回は場合1~3のような複数の場合を書きましたが 普通はそんな回答はできないので, パブリッシュする「actionscript のバージョン」 や 「swf の flash player のバージョン」 を決めて明記した上で質問するようにしてください。 でないと,無回答であったり,トンチンカンな回答が付くだけの場合が多いです。(または,私みたいな者から「状況がわからん!」 と説教を受けるかですね。)