• ベストアンサー

アコーディオンメニューのFLASHの自動遷移

少し前に流行った(?)Flashでのアコーディオンメニューで、 下記サイトのスクリプトを使って実装しようと思っています。 http://exyz.cocolog-nifty.com/good_sleep/2007/12/au_45b8.html 一定時間が経過した後に、自動的に次のパネルに自動的に遷移するようにしたいのですが、やり方がわかりません。 SetInterval関数を使うのだとは思いますが、どうにもうまく動いてくれませんでした。 どなたか、この問題を解決する方法がお分かりになられる方がおられましたなら、どうかご教授下さいませんでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

setInterval関数 を使うので正解だと思います。 しかしパネルにロールオーバーしたときは, パネルが自動で切り替わってくれたら困るので setInterval を切ったり, さらにロールアウトしたときは, 開いているパネルの続きから自動で切り替わってくれないと変ですよね。 そんなこんなを考えていると 結局フレーム1 のスクリプトを全面的に作成しなおした方が良いということになります。 どっちにしてもほぼ全面作りかえなので, ついでに,もっと使いやすいように変えてみました↓。 ============================================== // ライブラリ読込 import caurina.transitions.Tweener; // 各MCのデータ用配列を用意(※場合によって変える) var datArr:Array = new Array(); datArr[0] = [0, 300, 320, panel01_mc, panel02_mc, panel03_mc]; datArr[1] = [0, 10, 320, panel01_mc, panel02_mc, panel03_mc]; datArr[2] = [0, 10, 30, panel01_mc, panel02_mc, panel03_mc]; // インターバル時間[ミリ秒]の設定(※好みによって変える) var time:Number = 2000; // --- 以下は変えなくても良い------------- // カウントアップする用の変数cntの初期化 var cnt:Number = 0; // 動かすためのデータを入れる配列を作成 var movArr:Array = new Array(); // トゥイーンをさせる関数 function tw():Void { for (var i:Number = 0; i<datArr.length; i++) { Tweener.addTween(movArr[datArr.length+i], {_x:movArr[i], _y:0, time:1, transition:"easelnOutCubic"}); } } // 自動で動かす関数 function autoRollOver():Void { cnt = (cnt<datArr.length-1) ? cnt+1 : 0; movArr = datArr[cnt]; tw(); } // 自動で動かす関数 を time 時間間隔で実行 var myID:Number = setInterval(autoRollOver, time); // パネル01~0? のロールオーバー&ロールアウト for (i=0; i<datArr.length; i++) { // 各パネル固有の変数nに i の値を格納 this["panel0"+(i+1)+"_mc"].n = i; // // パネル01~0? ロールオーバー時の動作 this["panel0"+(i+1)+"_mc"].onRollOver = function():Void { clearInterval(myID); movArr = datArr[this.n]; tw(); }; // // パネル01~0? ロールアウト時の動作 this["panel0"+(i+1)+"_mc"].onRollOut = function():Void { clearInterval(myID); cnt = this.n; myID = setInterval(autoRollOver, time); }; } ============================================== パネルの枚数などもデータの個数から自動取得するようにしてあります。 こうしておけば, パネルの枚数を増やしたり大きさや座標を変えたいときでも, 「--- 以下は変えなくても良い---」より上を変えるだけで大丈夫になると思います。 理解しやすさより使いやすさを重視したスクリプトです

syk_san
質問者

お礼

早速試したところ上手く動作させることができました。 しかも枚数の増減も簡単に変更できるようになって、非常に助かりました。ありがとうございます。 この度は大変お世話になりました。

関連するQ&A