- 締切済み
flashメニューボタン
flashでメニューボタンを制作しているのですが…。 (マウスオーバーの時に徐々に明るくなるような感じで) メニュー内で他のページに飛んだ時にそのページのボタンをマウスオーバー時のときのように色を変えたいのですが何か良い方法はありますか? サイトはオールFLASHではなく、メニュー(ヘッダー)だけFLASHです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
#1です。 #1ので書いた ◎場合1 getURL で 「プロフィール」のページにページごと入れ替わる。 ○場合1-1 「TOP」も「プロフィール」のページのメニューも 同じFlashファイルを使っている。 という場合でも簡単にできる方法を考えつきました。 FlashVars を使えば良いのです。 「FlashVars を使用して SWF へ変数を渡す」 http://www.macromedia.com/jp/support/flash/ts/documents/fl0284.html === 例です ========== ボタンをムービークリップで作ってモーショントゥイーンで明るくする場合です。 (モーショントゥイーンで明るくしなくても良いですが例です。) まずムービークリップで作ります。 そのムービークリップ内のレイヤーを例えば10フレームにして, その中でだんだん明るくなるアニメーションを作成したとします。 1 10 □ レイヤー 筆・・|○ []|○| □ レイヤー 筆・・|●>------------>|●| こんな具合に タイムラインの フレーム1 のスクリプトには stop(); と書いておきます。これで勝手にだんだん明るくはなりません。 タイムラインの フレーム10 のスクリプトにも stop(); です。これで フレーム1 には勝手に戻りません。 こういうボタンをページの数だけ作ります。 ドキュメントの編集でメインムービーの編集に移ります。 そして,「TOP」ボタンのムービークリップには b1 というインスタンス名をつけます。 「プロフィール」ボタンのムービークリップには b2 というインスタンス名, 次は b3 b4 … という具合にインスタンス名をつけます。 これらボタンを配置した "次の" フレームに stop(); _root["b"+hensuu].play(); と書きます。 メインムービーのタイムラインが 1フレームしかなかった場合は, 2フレームにして,フレーム2のスクリプトに上記スクリプトを書くということです。 メインムービーのタイムラインが3フレーム以上ある時は, 1行目の stop(); は不要です。 スクリプトの意味は, もし,変数hensuu に 1 が入れば _root["b"+1].play(); つまり _root.b1.play(); ということです。 もし,変数hensuu に 2 が入れば _root["b"+2].play(); つまり _root.b2.play(); ということです。 この hensuu を FlashVars で Flash内に送り込んでやればいいわけです。 「TOP」ページのHTMLのOBJECTタグ内には, <PARAM NAME=FlashVars VALUE="hensuu=1"> を追加します。 そして,EMBEDタグは以下のようにします。 <EMBED src="○○.swf" FlashVars="hensuu=1" quality= … 「プロフィール」ページのHTMLのOBJECTタグ内には, <PARAM NAME=FlashVars VALUE="hensuu=2"> を追加します。 そして,EMBEDタグは以下のようにします。 <EMBED src="○○.swf" FlashVars="hensuu=2" quality= … 各ページこうしていきます。 HTML側で FlashVars="hensuu=1" などとしておくと,Flash内に特別なスクリプトを書かなくても, その変数と値が貼り付いているFlashに送信されます。 実際にやってみましたがうまくいきました。 でも,どこかでタイミングがずれるのでしょう。 ボタン出没と同じフレームに _root["b"+hensuu].play(); を書いてもうまく行きませんでした。 フレームを1つずらして,ムービークリップが完全に出没した次のフレームで, _root["b"+hensuu].play(); をするとちゃんと動作しました。 ===================== 以上は例です。 実際にはボタンをどのような手段で明るくされているのかわかりません。 でも上記の方法を応用するとできると思います。
あの… とりあえず場合が多すぎて回答に困ります。 半分補足要求の,半分回答です。 たとえば,メニュー(ヘッダー)に, 「TOP」 「プロフィール」 「研究室」 「日記」 みたいな,ボタンがあったとして,「TOP」のページから,「プロフィール」をクリックしたとします。 どんな場合なのでしょうか。 ◎場合1 getURL で 「プロフィール」のページにページごと入れ替わる。 この場合もさらに2通りあります。 ○場合1-1 「TOP」も「プロフィール」のページのメニューも 同じFlashファイルを使っている。 ○場合1-2 「TOP」と「プロフィール」のページのページのメニューは 違うFlashファイルを使っている。 ◎場合2 HTMLにフレームやインラインフレームを使っていてページのヘッダーが別フレームになっており, getURL で下フレームが 「プロフィール」のページに入れ替わる。 ◎場合3 getURL + JavaScript を使って「プロフィール」は小窓(子窓・サブウィンドウ)で開く。 >> サイトはオールFLASHではなく、 と書かれている部分は,「loadMovie で他のSWFファイルを読み込むのではない。」という意味ですよね,おそらく。 また「他のページに飛んだ時にそのページのボタンを徐々に明るくする」というのは, 「プロフィール」ページを表示させたとき,そのページ内の「プロフィール」ボタンが徐々に明るくなるということですよね。 loadMovie を使わず,getURL を使った場合も上のような場合があります。 「そのページ内の「プロフィール」ボタンが徐々に明るくなる」というパターンは, ○場合1-2 か ◎場合2 か ◎場合3 で可能で, 手間や環境を考えても ◎場合2 がお薦めです。 つまり,Flashもその表示してあるページもそのままで,フレーム内のページが入れ替わる。 それだと,簡単で全て楽にできます。 ○場合1-1 の場合は… ちょっとわかりませんね。 SharedObject. http://www.fumiononaka.com/TechNotes/Flash/FN0203002.html を使えばなんとかできるのかもしれませんが,かなり難しいです。 まだ ○場合1-2 にする方が手間はかかりますが簡単です。