1

マウスが押されている間に関数を何度も繰り返す方法を誰かが知っているかどうか知りたいのですが、それを機能させる方法がわかりません。プロトタイプでは、次のようなイベントを実行できることを知っています

$('id').observe("click",function(event){}) 
$('id').observe("leave",function(event){})
$('id').observe("change",function(event){})
//etc...

しかし、次のようなものです$('id').observe("whilemousepress",function(event){}):P
//Javascriptにイベントがないことは知っていますが、エミュレートしたいと思います。

4

4 に答える 4

5

プロトタイプの詳細についてコメントすることはできませんが、 on を使用して開始され、停止される間隔を作成することで、おそらくこれを行うことがsetInterval()できmousedownます。.clearInterval()mouseup

于 2010-04-22T17:48:47.447 に答える
1

マウスがダウンしたときのイベントとmousedown、マウスがアップしたときのイベントがありmouseupます。マウスが押されたときにイベントを開始し、ボタンが離されたときにイベントを停止します。

$('id').observe("mousedown",function(event){
    // Do whatever you want
})

$('id').observe("mouseup",function(event){
    // Stop the events starts when the mouse when down
})
于 2010-04-22T18:04:00.513 に答える
0

わかりました...私がしたことは両方とも正しいと思います:

        $('right').observe('mousedown',function(event){ intervalRigth = setInterval(this.name + ".dosomething()",50); }.bind(this));
        $('left').observe('mousedown',function(event){ intervalLeft = setInterval(this.name + ".dosomething()",50); }.bind(this));


        $('right').observe('mouseup',function(event){ clearInterval(intervalRigth ); }.bind(this));
        $('left').observe('mouseup',function(event){ clearInterval(intervalLeft ); }.bind(this));            

//したがって、両方の答えが混在していると思います ありがとう =)

于 2010-04-22T18:32:39.980 に答える
0

var MouseUtils = (function() {
  'use strict';
  // VARIABLES
  var _isScrolling = false;
  var _buttonsArray = [false, false, false, false, false, false, false, false, false]; // 0 left, 2 right, 1 middle, other.. extra buttons, gaming mouses
  var _mousePressed = false;

  //EVENT LISTENERS
  var _init = function(w, d) {
    w.onscroll = function() {
      _isScrolling = true;
    };
    d.onmousedown = function(e) {
      _buttonsArray[e.button] = true;
      _mousePressed = true;
    };
    d.onmouseup = function(e) {
      _buttonsArray[e.button] = false;
      _mousePressed = false;
    };
    d.oncontextmenu = function() { // this is mandatory for clicks down|ups works well
      return false;
    };
    return this;
  };

  // TIMERS
  var _scrollInterval = setInterval(function() {
    if(_isScrolling) {
      _isScrolling = false;
    }
  }, 500);

  // EXPOSED
  var _isLeftPressed = function() {
    return _buttonsArray[0];
  };
  var _isRightPressed = function() {
    return _buttonsArray[2];
  };
  var _isMiddlePressed = function() {
    return _buttonsArray[1];
  };
  var _isScrolling = function() {
    return _isScrolling;
  };

  var _clearScrollInterval = function() {
    clearInterval(_scrollInterval);
  };

  return {
    init: _init,
    isLeftPressed: _isLeftPressed,
    isRightPressed: _isRightPressed,
    isMiddlePressed: _isMiddlePressed,
    isScrolling: _isScrolling,
    clearScrollInterval: _clearScrollInterval
  };
})();

MouseUtils.init(window, document);

while(MouseUtils.isLeftPressed) {
   // DO SOMETHING
}

于 2015-09-17T16:58:01.697 に答える