2010-04-22 56 views
1

我想知道如果有人知道如何在鼠標按下時反覆重複某個功能,我不知道如何使它工作。我知道在原型你可以採取的事件,如鼠標按下事件。原型JS或Javascript

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

但像$('id').observe("whilemousepress",function(event){}):P //我知道有沒有在JavaScript無論如何但我想效仿。

感謝...

回答

5

我不能原型細節發表評論,但你很可能通過創建使用上啓動mousedownmouseup使用.clearInterval()停止setInterval()的間隔做到這一點。

+0

mmmmm不錯...讓我試試並稍後評論...感謝您的時間... – ncubica 2010-04-22 18:00:44

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 
}) 
+0

感謝s約翰我認爲這工作對我來說很好,謝謝你的時間... – ncubica 2010-04-22 18:13:10

+0

我想你需要setInterval才能使它工作。 – ncubica 2010-04-23 04:57:19

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));    

//所以我想這兩個答案的組合是正確的感謝=)

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 
 
}

+0

大聲笑,5年前我做過這個問題,不再使用prototypejs。但謝謝我的猜測。順便說一句,每個人都在做免費的事情,所以你對有關自由的評論有點無知:P。 – ncubica 2015-09-17 17:37:42

+1

這是一個笑話,好吧,一個非常糟糕的.. – 2015-09-17 17:42:12