Skip to content

Commit 32573f7

Browse files
committed
fix bug
1 parent 44887ca commit 32573f7

File tree

1 file changed

+39
-44
lines changed

1 file changed

+39
-44
lines changed

07-Ping-Pong-Game/script.js

Lines changed: 39 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -387,76 +387,71 @@ function actionEnd(e) {
387387
}
388388
}
389389
function actionMove(e) {
390-
//e.preventDefault();
391-
var distLeft, distRight, leftPt, rightPt;
392-
//判断是鼠标左键点击还是触摸
393-
if (e.touches && e.touches.length > 1) {//如果是触摸
394-
e.touches.forEach(element => {
395-
if (element.pageX - canvas.offsetLeft < canvas.width / 2) {
396-
leftPt = element.pageX < leftPt.pageX ? element : leftPt;
397-
} else {//记录右半边,最右边的点
398-
rightPt = element.pageX > rightPt.pageX ? element : rightPt;
390+
e.preventDefault(); // 防止页面滚动
391+
392+
var distLeft, distRight;
393+
394+
if (e.touches && e.touches.length > 1) { // 多点触摸
395+
let leftPt = e.touches[0];
396+
let rightPt = e.touches[0];
397+
398+
for (let i = 1; i < e.touches.length; i++) {
399+
if (e.touches[i].pageX < leftPt.pageX) {
400+
leftPt = e.touches[i];
399401
}
400-
});
401-
if (touchYstartLeft != null) {
402+
if (e.touches[i].pageX > rightPt.pageX) {
403+
rightPt = e.touches[i];
404+
}
405+
}
406+
407+
if (touchYstartLeft !== null && leftPt.pageX - canvas.offsetLeft < canvas.width / 2) {
402408
distLeft = leftPt.pageY - touchYstartLeft;
403409
leftPaddleY = previousPositionLeft + distLeft;
404-
if (leftPaddleY + paddleHeight > canvas.height) leftPaddleY = canvas.height - paddleHeight;
405-
if (leftPaddleY < 0) leftPaddleY = 0;
410+
leftPaddleY = Math.max(0, Math.min(canvas.height - paddleHeight, leftPaddleY));
406411
}
407-
if (touchYstartRight != null) {
412+
413+
if (touchYstartRight !== null && rightPt.pageX - canvas.offsetLeft > canvas.width / 2) {
408414
distRight = rightPt.pageY - touchYstartRight;
409415
rightPaddleY = previousPositionRight + distRight;
410-
if (rightPaddleY + paddleHeight > canvas.height) rightPaddleY = canvas.height - paddleHeight;
411-
if (rightPaddleY < 0) rightPaddleY = 0;
416+
rightPaddleY = Math.max(0, Math.min(canvas.height - paddleHeight, rightPaddleY));
412417
}
413418

414-
} else if(e.touches && e.touches.length == 1) {//如果是单点触摸
415-
if (e.touches[0].pageX - canvas.offsetLeft < canvas.width / 2) {
416-
if (touchYstartLeft != null) {
417-
distLeft = e.touches[0].pageY - touchYstartLeft;
419+
} else if (e.touches && e.touches.length == 1) { // 单点触摸
420+
let touch = e.touches[0];
421+
if (touch.pageX - canvas.offsetLeft < canvas.width / 2) {
422+
if (touchYstartLeft !== null) {
423+
distLeft = touch.pageY - touchYstartLeft;
418424
leftPaddleY = previousPositionLeft + distLeft;
419-
if (leftPaddleY + paddleHeight > canvas.height) leftPaddleY = canvas.height - paddleHeight;
420-
if (leftPaddleY < 0) leftPaddleY = 0;
425+
leftPaddleY = Math.max(0, Math.min(canvas.height - paddleHeight, leftPaddleY));
421426
}
422427
} else {
423-
if (touchYstartRight != null) {
424-
distRight = e.touches[0].pageY - touchYstartRight;
428+
if (touchYstartRight !== null) {
429+
distRight = touch.pageY - touchYstartRight;
425430
rightPaddleY = previousPositionRight + distRight;
426-
if (rightPaddleY + paddleHeight > canvas.height) rightPaddleY = canvas.height - paddleHeight;
427-
if (rightPaddleY < 0) rightPaddleY = 0;
431+
rightPaddleY = Math.max(0, Math.min(canvas.height - paddleHeight, rightPaddleY));
428432
}
429433
}
430-
431-
}else {//如果是鼠标 dist等于鼠标的x坐标x相对touchXstart的移动距离
432-
if (e.pageX - canvas.offsetLeft < canvas.width / 2) {
433-
if (touchYstartLeft != null) {
434+
} else { // 鼠标移动
435+
if (e.pageX - canvas.offsetLeft < canvas.width / 2) {
436+
if (touchYstartLeft !== null) {
434437
distLeft = e.pageY - touchYstartLeft;
435438
leftPaddleY = previousPositionLeft + distLeft;
436-
if (leftPaddleY + paddleHeight > canvas.height) leftPaddleY = canvas.height - paddleHeight;
437-
if (leftPaddleY < 0) leftPaddleY = 0;
439+
leftPaddleY = Math.max(0, Math.min(canvas.height - paddleHeight, leftPaddleY));
438440
}
439441
} else {
440-
if (touchYstartRight != null) {
442+
if (touchYstartRight !== null) {
441443
distRight = e.pageY - touchYstartRight;
442444
rightPaddleY = previousPositionRight + distRight;
443-
if (rightPaddleY + paddleHeight > canvas.height) rightPaddleY = canvas.height - paddleHeight;
444-
if (rightPaddleY < 0) rightPaddleY = 0;
445+
rightPaddleY = Math.max(0, Math.min(canvas.height - paddleHeight, rightPaddleY));
445446
}
446447
}
447448
}
448-
449-
450-
451-
452-
453449
}
454450

455-
456-
document.addEventListener('touchstart', actionStart);
451+
// 事件监听器
452+
document.addEventListener('touchstart', actionStart, { passive: false });
457453
document.addEventListener('touchend', actionEnd);
458-
document.addEventListener('touchmove', actionMove);
459-
//相应鼠标点击后移动的事件
454+
document.addEventListener('touchmove', actionMove, { passive: false });
460455
document.addEventListener('mousedown', actionStart);
461456
document.addEventListener('mouseup', actionEnd);
462457
document.addEventListener('mousemove', actionMove);

0 commit comments

Comments
 (0)