(我纠正了mousedown事情......)
我想要实现的是在画布上拖动一个球,然后球将跟随鼠标并改变其颜色。
鼠标一旦释放,它的颜色就会变回原来的状态。
我使用“休息”,因为一次只能拖动一个球。
现在的问题是,
下面的主要功能(完整代码 http://jsfiddle.net/nyTkU/1/):
var mousePress = false;
var mouseEvent = function(){
$(canvas).mousedown(function(e){
mousePress = true;
$(canvas).mousemove(function(e){
for(var i=0;i<figureNum;i++){
var distX=e.pageX-balls[i].x;
var distY=e.pageY-balls[i].y;
var distance = Math.sqrt((distX*distX)+(distY*distY));
if(distance<=20){
balls[i].x=e.pageX;
balls[i].y=e.pageY;
if(mousePress){
balls[i].c="#F05133";
}
break;
}
//else{balls[i].c="#FFED79";}
}
});
});
$(canvas).mouseup(function(e){
mousePress=false;
//for(var i=0;i<figureNum;i++){
// balls[i].c="#FFED79";
//}
})
setTimeout(animate,speedMouse);
}
非常感谢。
答案 0 :(得分:1)
你有两个mouseDown事件......也许第二个应该是mouseUp?
我仍然对你想要的功能感到困惑。你是否希望球只在mouseDown = true时移动,或者如果一次点击它就会移动球?因为你应该在第二种情况下使用click()处理程序。
你的mouseMove看起来也很奇怪......你是否试图让任何球在一定距离D内绑定到鼠标坐标?这会产生一些奇怪的行为。
最好的方法是:
1)在mouseDown上,检测是否已选择球并保存该ID。 (设置mousePressed = true)
2)在mouseMove上,如果mousePressed = true&amp;&amp;选择球,将球绑定到鼠标坐标。不要以任何速度更新()这个球。
3)在mouseUp上,设置mousePressed = false并清除任何选定的Ball