- ベストアンサー
Flash アコーディオンメニューの再生回数
Flash アコーディオンメニューの再生回数 こちらを参考に、元のASを回答者さんのアドバイスのように書き換えました。 http://okwave.jp/qa/q4766273.html メニュー追加も簡単にでき、用途としてはOKなのですが 再生がリピート状態になるので、どう変更・追加したらいいのかわからず悩んでいます。 使用ツールは「Adobe Flash CS3 Pro」です。 やりたい事、再生回数を制御したい(例の場合だと1回だけ) 例:「メニュー1の画像」→「メニュー2の画像」→「メニュー3の画像」→「メニュー1画像」(停止) アドバイス宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
全自動で動くものなら書かれていらっしゃることも理解できるのですが マウスが乗ったときにも動作するのですよ。 マウスが介入すればたくさんの分岐があると思います。 なんだかわかりませんが, とりあえずマウスのことは一切無視した場合を書きます。 書かれていらっしゃるページの次の部分↓ --------------------------------- // 自動で動かす関数 function autoRollOver():Void { cnt = (cnt<datArr.length-1) ? cnt+1 : 0; movArr = datArr[cnt]; tw(); } --------------------------------- これを次のように変えます↓ --------------------------------- //フラグとなる変数を用意 var flg = true; // 自動で動かす関数 function autoRollOver():Void { //もしflgがtrueであるなら if (flg) { cnt = (cnt<datArr.length-1) ? cnt+1 : 0; //もしcntがdatArrの要素数-1になればflgをfalseにする flg = (cnt == datArr.length-1) ? false : true; movArr = datArr[cnt]; tw(); } } --------------------------------- これでフラグが true であるときのみ自動で動きます。 もし マウスが1回でもどれかのパネルに乗ったときに 自動で動くのを解除したいのでしたら 上のようにスクリプトを変更した上でさらに スクリプトのずっと下の方にある // パネル01~0? ロールオーバー時の動作 this["panel0"+(i+1)+"_mc"].onRollOver = function():Void { clearInterval(myID); movArr = datArr[this.n]; tw(); }; の部分の tw(); のすぐ下の行辺りにでも flg = false; を入れれば良いと思います。
その他の回答 (1)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
#1です。 スクリプトを1行訂正します。 #1で書いたスクリプトでは 「メニュー1の画像」 →「メニュー2の画像」 →「メニュー3の画像」(停止) になります。 「メニュー1の画像」 →「メニュー2の画像」 →「メニュー3の画像」 →「メニュー1画像」(停止) のように元に戻って停止させるのでしたら 書かれていらっしゃるページの次の部分↓ --------------------------------- // 自動で動かす関数 function autoRollOver():Void { cnt = (cnt<datArr.length-1) ? cnt+1 : 0; movArr = datArr[cnt]; tw(); } --------------------------------- これを次のように変えます↓ --------------------------------- //フラグとなる変数を用意 var flg = true; // 自動で動かす関数 function autoRollOver():Void { //もしflgがtrueであるなら if (flg) { cnt = (cnt<datArr.length-1) ? cnt+1 : 0; //もしcntが0になればflgをfalseにする flg = (cnt == 0) ? false : true; movArr = datArr[cnt]; tw(); } } --------------------------------- ですから #1の状態からでしたら次の部分↓を //もしcntがdatArrの要素数-1になればflgをfalseにする flg = (cnt == datArr.length-1) ? false : true; 次↓のように変えるということです。 //もしcntが0になればflgをfalseにする flg = (cnt == 0) ? false : true; その他は#1のままで。
お礼
なるほど、この方法もあるのですね^^ 前の回答者さんへのお礼にもあった 途中パネルを選ぶと、その次のパネルに行かないという アコーディオンの必要が無くなってしまう仕様を考えてしまいました(ノ_・。) 途中のパネルが選ばれた時に次に進むにはどうすれば良いか また色々と見て考えてみます。今回はありがとうございました
お礼
思い通りの挙動にはなったのですが、 仰るとおり、自分の仕様では ロールオーバーに問題がありました。 (ロールロールアウト後に他パネルや元(画像1)に戻らない) 再度、色々なサイトを見て考えてみたいと思います。ありがとうございます!