@@ -387,76 +387,71 @@ function actionEnd(e) {
387
387
}
388
388
}
389
389
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 ] ;
399
401
}
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 ) {
402
408
distLeft = leftPt . pageY - touchYstartLeft ;
403
409
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 ) ) ;
406
411
}
407
- if ( touchYstartRight != null ) {
412
+
413
+ if ( touchYstartRight !== null && rightPt . pageX - canvas . offsetLeft > canvas . width / 2 ) {
408
414
distRight = rightPt . pageY - touchYstartRight ;
409
415
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 ) ) ;
412
417
}
413
418
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 ;
418
424
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 ) ) ;
421
426
}
422
427
} else {
423
- if ( touchYstartRight != null ) {
424
- distRight = e . touches [ 0 ] . pageY - touchYstartRight ;
428
+ if ( touchYstartRight !== null ) {
429
+ distRight = touch . pageY - touchYstartRight ;
425
430
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 ) ) ;
428
432
}
429
433
}
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 ) {
434
437
distLeft = e . pageY - touchYstartLeft ;
435
438
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 ) ) ;
438
440
}
439
441
} else {
440
- if ( touchYstartRight != null ) {
442
+ if ( touchYstartRight !== null ) {
441
443
distRight = e . pageY - touchYstartRight ;
442
444
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 ) ) ;
445
446
}
446
447
}
447
448
}
448
-
449
-
450
-
451
-
452
-
453
449
}
454
450
455
-
456
- document . addEventListener ( 'touchstart' , actionStart ) ;
451
+ // 事件监听器
452
+ document . addEventListener ( 'touchstart' , actionStart , { passive : false } ) ;
457
453
document . addEventListener ( 'touchend' , actionEnd ) ;
458
- document . addEventListener ( 'touchmove' , actionMove ) ;
459
- //相应鼠标点击后移动的事件
454
+ document . addEventListener ( 'touchmove' , actionMove , { passive : false } ) ;
460
455
document . addEventListener ( 'mousedown' , actionStart ) ;
461
456
document . addEventListener ( 'mouseup' , actionEnd ) ;
462
457
document . addEventListener ( 'mousemove' , actionMove ) ;
0 commit comments