- 締切済み
Flashでグローバルナビゲーションを製作
フレームなしwebにFlashでgNaviを製作し、運用したいと考えています。 「コンテンツA」「コンテンツB」「コンテンツC」がある場合「コンテンツB」を見ているときは常にgNaviFlashの「コンテンツB」は色反転状態にしたいのですが、現状では「コンテンツB」をクリックし、移動してもFlashはデフォルト状態で、マウスオーバーしたときしか色反転しません。URLが変わるのでFlashがデフォルトに戻ってしまいます。 フレーム切りなら話は早いのですが・・・。 現在、計3つのFlashを作成し ・www.aaa/contentA にはgNaviA.swf(「コンテンツA」が色反転) ・www.aaa/contentB にはgNaviB.swf(「コンテンツB」が色反転) ・www.aaa/contentC にはgNaviC.swf(「コンテンツC」が色反転) という方法で色反転を表現しています。 それぞれのswf内のボタンのアクションスクリプトは以下の通りです。 on (release) { this.getURL("www.aaa/content○"); } ○の中はA~Cの数字が入ります。 これではURLやコンテンツが増えた際に3つのFlashで同じ事をやらなくてはならず非常に面倒です。 調べてみると、ボタンのクリックアクションはあったのですが。 on (release) { this.gotoAndStop("gNaviA"); } この「on (release)」というところをURL判断で「this.gotoAndStop」が効くアクションスクリプトを教えて下さい。(結果URL判断でフレームスキップできればもう何でもかまいません・・・) よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
サイト内容は gNavi でも何でも関係ないのでしょう? また > 「コンテンツB」は色反転状態にしたいのですが、 ではなくて, 「コンテンツB」のページでは,「コンテンツB」に行くための "ボタン" の色を非アクティブを示すものにしたい。 ということでしょう? つまり, ・「コンテンツA」のページのボタンの色の様子 [ボタンA]=黒 [ボタンB]=白 [ボタンC]=白 ・「コンテンツB」のページのボタンの色の様子 [ボタンA]=白 [ボタンB]=黒 [ボタンC]=白 ・「コンテンツC」のページのボタンの色の様子 [ボタンA]=白 [ボタンB]=白 [ボタンC]=黒 こんな感じ。 それで現在は, 「コンテンツA」のページには「コンテンツA」のページ用のFlashを作り 「コンテンツB」のページには「コンテンツB」のページ用のFlashを作り 「コンテンツC」のページには「コンテンツC」のページ用のFlashを作って対応しているけど, そうではなくて, 「コンテンツA」「コンテンツB」「コンテンツC」用に1つのFlashで済ませたい。 ということですよね。 ここまで読解するのに30分以上かかってしまった...。 説明が長い割に,肝心な Flash のバージョンなどをかかれていませんが...。 > URL判断で「this.gotoAndStop」が効くアクションスクリプトを教えて下さい。 このURLはFlashのURLではなく,Flash が貼り付いている ページのURLでしょう? それはActionScriptでは(だけでは),取得不可能ですし, また取得してからもそのURLの処理が大変です。 『FlashVars』 これを使うのが一般的です。 Flash が貼り付いているページのURLを取得するのではなくて, Flash が貼り付いているページからFlashに変数とその値を送信する方法です。 たとえば, HTMLから 「frameNo=5」 という変数と値を受け取った場合, gotoAndStop(frameNo); というスクリプトを_rootに書いておくと, gotoAndStop(5); が実行されます。 Google検索「FlashVars」 http://www.google.co.jp/search?hl=ja&q=FlashVars&lr=lang_ja ただ, gotoAndStop(5); などと_rootのフレーム1などに書いた場合, 途中で落下するか,Flashが真っ白になって止まってしまう危険性が高いです。 軽いSWFと言っても,数十キロバイトくらいはあります。 フレーム1 を表示したとたん gotoAndStop(5); などを実行された場合, そのフレーム5のロードが済んでいなければ, その手前のフレーム2とか4とかで停止してしまうか, どこかわからないフレームの狭間みたいなところで停止してしまうことが多々あります。 そのために, よく見る「NowLoading....」などを付けて,SWF全体のロードを待ってから, gotoAndStop(5); などをするのが普通です。 あと, _rootのフレームをジャンプさせてボタンの色を変えるという手間なことは普通はしません。 「ボタンA」みたいな機能をするものをムービークリップで作成して, そのムービークリップ製のボタン内のフレーム1に本物のボタンを置いて, そのムービークリップ内の フレーム1 に stop(); を書いて停止させておきます。 そして, ムービークリップ製のボタン内のフレーム2に色が反転した絵だけを置いておきます。 そして, 非アクティブにしたいボタンだけを ムービークリップ.gotoAndStop(2); でフレーム2に進めるというような手段を使うのが普通です。 こうすると,_rootのフレームは1つで済みます。 仮に「ボタンA」のムービークリップのインスタンス名を「mcA」 「ボタンB」のムービークリップのインスタンス名を「mcB」 「ボタンC」のムービークリップのインスタンス名を「mcC」 として置いた場合, HTMLからFlashVarsで 「mcName=mcB」 という変数と値をFlashに送信し, Flash側では_rootのフレーム1に, _root[mcName].gotoAndStop(2); というスクリプトを_rootに書いておくと, _root.mcB.gotoAndStop(2); が実行されます。 その他色々と工夫次第です。
お礼
分かりにくい内容ですみませんでした。 Flashのバージョン書いてませんでした、すみません。MX2004です。 詳しい内容をありがとうございます、こちらを参考に作成してみます。