• ベストアンサー

スクロールメニューその2

以前コチラでスクロールメニューについて質問させていただいた者です。 丁寧な回答を頂き、なんとか完成に漕ぎ着けた次第ですが、実はまたしても疑問が浮上してきました。 4秒おきにスクロールするのですが、その場合ボタンの制御を無視してしまうようなのです。 『rolloutした場合、そこから起算して』一定時間間隔でスクロールをさせるにはどうすればよいのでしょうか? どうかご教授のほどよろしくお願いいたします。 環境はウィンドウス2000にてFLASH8professionalを使用しております。

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

  • ベストアンサー
noname#35109
noname#35109
回答No.2

前回,「メニュースクロール」で回答した者です。 そう言えば, ボタンに関しては適当にしか回答していませんでしたね。 この回答の #1 の方がすでに書かれていることをすれば良いのです。 具体的に回答すると次のようになります。 作り方は前回の通りです。 「メニュースクロール」 http://oshiete1.goo.ne.jp/qa2544902.html  ↑教えて!goo  ↓OKWave (同じです) http://okwave.jp/qa2544902.html 上のようにだいたいは作成してもらって, フレーム1 のスクリプトを次のように書き替えます。 書き替えると言っても,最後の行あたりを少し変えただけです。 ---------------------------------------- //スピードの設定(可変) var spd = 3/10; // // フラグの初期値を設定 var flg = 0; // // 各変数の初期値を代入(目標座標を記録) var slideY0 = slideMC._y; var slideY1 = slideMC._y-(slideMC._height/4); var slideY2 = slideMC._y-(2*slideMC._height/4); var slideY3 = slideMC._y-(3*slideMC._height/4); // // 1フレーム進む時間ごとに毎回実行 _root.slideMC.onEnterFrame = function() { // slideMC の y座標を slideY? に近づける this._y += (_root["slideY"+_root.flg]-this._y)*_root.spd; }; // // ユーザー定義関数 slideMove の定義 function slideMove() { // flg の 値が 3 より小さければ if (_root.flg<3) { // flg の値に 1 を加算 _root.flg++; } else { // それ以外の場合は flg を 0 にする。 _root.flg = 0; } } // //--- ココから以降を変更 --- // ユーザー定義関数 myfunc の定義 function myfunc() { // 4000ミリ秒(4秒)ごとに slideMove を実行 myID = setInterval(slideMove, 4000); } // ユーザー定義関数 myfunc の実行(初回) myfunc(); ---------------------------------------- そして,各ボタンには次にように書けば, ロールオーバー で setInterval がクリアされて, ロールアウト で setInterval が再度設定されます。 ~例:2つ目を表示させるボタン~ ---------------------------------------- on (rollOver) { clearInterval(_root.myID); _root.flg =1; } on (rollOut) { _root.myfunc(); } ---------------------------------------- ~例:3つ目を表示させるボタン~ ---------------------------------------- on (rollOver) { clearInterval(_root.myID); _root.flg =2; } on (rollOut) { _root.myfunc(); } ---------------------------------------- ボタンによって変えるところは, 変数 flg の番号だけです。 ※なお,すみませんが,時間が経過しすぎためか,  サンプル の方は見ることができず,  拝見させていただいておりません。  その点はご了承ください。

yesFLASH
質問者

お礼

前回に引き続き、丁寧な回答を有り難う御座います。 色々と模索したあげく、限界を感じ再度質問させて頂いた次第です。 ASはさわり程度しか分からず、とても困っていたので本当に助かりました。 2度に渡り丁寧な回答いただき、誠に有り難う御座いました。

その他の回答 (1)

  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.1

丁寧な回答を頂いているなら、各スクリプトの意味は理解していると思うので実現する流れを書き込みますね 初期状態 -> intervalを設定し自動スクロールさせる(既に記述してある) ロールオーバー -> intervalを消し自動スクロールを止める(追加する点) ロールアウト -> 再度intervalを設定する(追加する点)

yesFLASH
質問者

お礼

回答いただきまして有り難うございます。 ボタンでintervalを制御(?)するのだろうか… というトコロまではめぼしを付けていたのですが 自力では限界を感じ、再度質問させていただきました。 大変参考になりました。 誠に有り難う御座います。

関連するQ&A

専門家に質問してみよう