2013-02-10 4 views
4

나는 움직이는 공이있는 자바 스크립트 게임을 코딩하고 있습니다. 사용자가 움직이는 공을 클릭 할 때 경고 메시지를 원합니다. 지금 당장은 작동하지만 이벤트가 매번 발사되는 것은 아닙니다 ... 볼은 실제로 js 엔진이 볼을 너무 빨리 움직이는 것이 좋아서 볼이 실제로 클릭되었음을 알 수 있습니다. 나는 여기 움직이는 대상에서 클릭 이벤트가 발생하지 않음

일부 내 코드의 비트입니다 ... 5 세의 CPU에 파이어 폭스 18, 윈도우 7에 테스트입니다 : A의 클릭 이벤트 리스너를 설정하는 방법은 없나요

myBall = document.getElementById("myBall"); 
function move(){ 
    myLeft += 20; 
    myBall.style.left = myLeft + "px"; 
}  
myTimer = window.setInterval(move, 10); 
... 
myBall.addEventListener("click", function(){alert("win")}); 

작은 움직이는 표적, 그것은 더 정확하게 행동 할 것입니까? jQuery가 여기에 어떤 변화를 주겠습니까? 감사합니다. .

+0

사이드 노트, 요청 애니메이션 프레임을 사용하고 setInterval을 사용하여 애니메이트하지 않습니다. –

+2

어쩌면 볼이 너무 빨리 움직여 마우스 버튼이 아래 위로 움직일 수 있습니까? "mousedown"에 이벤트 리스너를 추가하려고 시도 했습니까? – wassup

+0

html5 canvas + kinetic.js에는 멋진 옵션이 있습니다. wwww.threeblokesfromchina.com에 예제 볼이 있습니다. –

답변

3

문제를 해결하려면 click 대신 mousedown에 이벤트 리스너를 추가해야합니다.

click 모두 상하로 이동 마우스 버튼을 필요로하고 있기 때문이다 - @techfoobar가 언급 한 바와 같이 - mousedownmouseup의 좌표가 동일하지 않은 경우가의 click (대상 요소에 같은 장소에서 수행해야합니다 이벤트가 시작되지 않음). 공은 전술 한 조건을 만족 시키기에는 너무 빨리 움직이기 때문에 문제가된다.

+0

완벽한, 고마워, 그게 문제 야. – Jean

관련 문제