• ベストアンサー

マウスを押している間繰り返す

マウスを押している間繰り返すスクリプトはどう書けばいいのでしょうか? スクロールボタンを作ろうと思っています。 on(press)とwhileやfor、onMouseup、onMousedownを組み合わせればできるかと思い調べてみたのですが、マウスが押されている間という条件が分かりませんでした。 よろしくお願いします。

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

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

なるほど,そうですね。 言われてみると確かに「マウスが押されている間」というのはありません。 でも「マウスが押されている間」と言うのをもう少し突っ込んで考えたら onMouseup、onMousedownなどを組み合わせればできると思います。 「マウスが押されている間」 =「マウスが押されてマウスが上げられるまで」   or「マウスが押されてドラッグアウトされるまで」 と言い換えることができます。 例として, マウスが押されている間 ムービークリップ(インスタンス名=A)を右にズルズル動かすボタンのスクリプトを書いておきます。 ステージ上に,下のようにムービークリップとボタンを配置してください。 ┌─┐ │A │ ←ムービークリップ(インスタンス名=A) └─┘ ■    ←Aを右に動かすボタン Aを右に動かすボタンには,以下のようなスクリプトを書くと, ムービークリップ(インスタンス名=A)を右にズルズル動かすことができます。 ------------------------------ on (press) { this.onEnterFrame = function() { A._x += 10; }; } on (release, dragOut) { this.onEnterFrame = null; } ------------------------------ ~~~上のスクリプトの説明~~~ //マウスを押したとき on (press) {   //Aをx軸で10ずつプラスする   this.onEnterFrame = function() {     A._x += 10;   }; } //マウスアップかドラッグアウトしたとき on (release, dragOut) {   //上のonEnterFrameは終了    this.onEnterFrame = null; } ~~~~~~~~~~~~~~ onEnterFrameは, フレームレートとして設定されたフレームが1コマ進む時間当たりに1回, function() { };内の計算をする。 ということです。 デフォルトでのフレームレートは12fpsになっていると思います。 この場合,1/12秒に1回, A._x += 10; という計算をするということです。 10はスピードになるので,これでAの動くスピードを調節してください。 あと, もし,Aがある位置に達したら, this.onEnterFrame = null; みたいなのを付け加えて, ある位置以上Aは動かなくすることもできます。 ---例------------------------ on (press) { this.onEnterFrame = function() { if (A._x<=400) { A._x += 10; } else { this.onEnterFrame = null; } }; } on (release, dragOut) { this.onEnterFrame = null; } ---------------------------- 左や上下に動かす場合も,同じような要領で考えればできると思いますよ。

ryotatronica
質問者

お礼

お礼が遅れてしまいすみません。 回答ありがとうございました。 無事に作ることが出来ました。 this.onxxxxx=function() this.onxxxxx=null はいろいろ使いまわせそうです。

その他の回答 (1)

  • kai123
  • ベストアンサー率53% (88/163)
回答No.2

たしかに、「押し続けている間」はないですね。 そこで自分は下記のようにしてます。 対象のボタン(ムービークリップシンボルである事)に次のスクリプトを記述してます。 on (press) { MCclick = "on"; } on (release) { MCclick = "off"; } on(dragOut){ MCclick = "off"; } onClipEvent (enterFrame) { if (MCclick == "on") { ここに、押している間に処理したいことを記述 } } MCclickという変数にマウスが押されているかどうかを代入して、 onClipEvent (enterFrame) {}内のif文でそれを判断して押されていれば("on"ならば)、 「ここに、押している間に処理したいことを記述」の部分を実行しています。 で、マウスが離されればMCclickにoffを代入。それをまた判断しています。 ちなみに、MCclickという変数を_root.をつけてルート変数にして、どこからでも参照できる ようにすれば、onClipEvent (enterFrame) {}部分を他のムービークリップに記述することも できます。 スクロールボタンを作ろうと・・・という事ですので、 http://okweb.jp/kotaeru.php3?qid=1455531 をご覧くださいませ。 多少の参考にはなると思います。

参考URL:
http://okweb.jp/kotaeru.php3?qid=1455531
ryotatronica
質問者

お礼

お礼が遅れてしまいすみません。 無事に作ることが出来ました。 リンク先のスクロールバーも参考になりました。 回答ありがとうございました。

関連するQ&A