Mouse Movement Time and Speed

Discussion in 'JavaScript' started by Mac Weng, Jan 19, 2006.

  1. #1
    Hello i want to ask whether can we capture time or speed for mouse movement..if can...can anybody help me please...:(
     
    Mac Weng, Jan 19, 2006 IP
  2. dave487

    dave487 Peon

    Messages:
    701
    Likes Received:
    20
    Best Answers:
    0
    Trophy Points:
    0
    #2
    dave487, Jan 19, 2006 IP
  3. Mac Weng

    Mac Weng Peon

    Messages:
    17
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    how dave?? i have track the mouse movemnet coordinate..but i still donno how to find time and speed...below is my tracking mouse script...

    
    <html> 
    <body> 
    
    <script type=text/javascript> 
    // Set Netscape up to run the "captureMousePosition" function whenever
    // the mouse is moved. For Internet Explorer and Netscape 6, you can capture
    // the movement a little easier.
    if (document.layers) { // Netscape
        document.captureEvents(Event.MOUSEMOVE);
        document.onmousemove = captureMousePosition;
    } else if (document.all) { // Internet Explorer
        document.onmousemove = captureMousePosition;
    } else if (document.getElementById) { // Netcsape 6
        document.onmousemove = captureMousePosition;
    }
    // Global variables
    xMousePos = 0; // Horizontal position of the mouse on the screen
    yMousePos = 0; // Vertical position of the mouse on the screen
    xMousePosMax = 0; // Width of the page
    yMousePosMax = 0; // Height of the page
    
    function captureMousePosition(e) {
        if (document.layers) {
            // When the page scrolls in Netscape, the event's mouse position
            // reflects the absolute position on the screen. innerHight/Width
            // is the position from the top/left of the screen that the user is
            // looking at. pageX/YOffset is the amount that the user has 
            // scrolled into the page. So the values will be in relation to
            // each other as the total offsets into the page, no matter if
            // the user has scrolled or not.
            xMousePos = e.pageX;
            yMousePos = e.pageY;
            xMousePosMax = window.innerWidth+window.pageXOffset;
            yMousePosMax = window.innerHeight+window.pageYOffset;
        } else if (document.all) {
            // When the page scrolls in IE, the event's mouse position 
            // reflects the position from the top/left of the screen the 
            // user is looking at. scrollLeft/Top is the amount the user
            // has scrolled into the page. clientWidth/Height is the height/
            // width of the current page the user is looking at. So, to be
            // consistent with Netscape (above), add the scroll offsets to
            // both so we end up with an absolute value on the page, no 
            // matter if the user has scrolled or not.
            xMousePos = window.event.x+document.body.scrollLeft;
            yMousePos = window.event.y+document.body.scrollTop;
            xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
            yMousePosMax = document.body.clientHeight+document.body.scrollTop;
        } else if (document.getElementById) {
            // Netscape 6 behaves the same as Netscape 4 in this regard 
            xMousePos = e.pageX;
            yMousePos = e.pageY;
            xMousePosMax = window.innerWidth+window.pageXOffset;
            yMousePosMax = window.innerHeight+window.pageYOffset;
        }
        top.leftFrame.location='simpan.php?xMousePos=' + xMousePos + ' ,yMousePos=' + yMousePos + ', xMousePosMax=' + xMousePosMax + ' ,yMousePosMax=' + yMousePosMax;
    
        return true; 
    
    }
    
    </script> 
    </body> 
    </html>
    
    PHP:
     
    Mac Weng, Jan 19, 2006 IP
  4. Mac Weng

    Mac Weng Peon

    Messages:
    17
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #4
    anyone help me please...how can i get the speed or time for mouse movement...
     
    Mac Weng, Jan 22, 2006 IP
  5. Mac Weng

    Mac Weng Peon

    Messages:
    17
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #5
    please why dont any one help me....i need to get time went mouse is move untill it stop...please...any javascript expert??
     
    Mac Weng, Jan 26, 2006 IP
  6. Sham

    Sham Peon

    Messages:
    136
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #6
    The way I would do it is to define some sort of "tick" interval. Lets say 10 milliseconds.

    Have an array of length 5 or something, which holds the last 5 known mouse co-ordinates.

    On each tick (which you can trigger with a recursively called JS function using setTimeout), add the current mouse-coordinates to the array, and remove the 5th (easy to do, check out google for getting current mouse co-ords).

    Also on each tick, perform some sort of moving average function on the mouse-cordinates so you can see how many euclidian pixels each co-ordinate is separated by (easily done with a bit of pythagoras).

    Since you know the average number of pixels travelled in the tick, and the duration of the tick (10 milliseconds), you can calculate the speed of the mouse in pixels per second.

    Also, define a stationary constant (2px lets say) and compare this to the moving average of the last 5 co-ordinates to determine if the mouse is currently stationary (or at least, moving extreeeeemly slowly)...

    If you want to be really clever, you could work out their screen resolution and monitor size, and translate each pixel into inches, or even miles. Then you can get a miles per hour speed...

    Hope that helps.
     
    Sham, Jan 27, 2006 IP