| 
					
				 | 
			
			
				@@ -32,7 +32,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           class="mycanvas" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           width="252" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           height="252" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          @click="handleclickCanvas" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @click="handleEventCanvas" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ></canvas> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <div class="beatCon"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <img 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -315,11 +315,12 @@ function speedToScalc(speed: number) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function scalcToSpeed(scalc: number) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return Math.round((scalc * 150) / 100 + 50); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const handleclickCanvas = (clickX: number, clickY: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const handleEventCanvas = (e: MouseEvent | TouchEvent) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const circle = mycanvasDom.value!.getBoundingClientRect(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const centerX = circle.left + circle.width / 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const centerY = circle.top + circle.height / 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const angle = Math.atan2(clickY - centerY, clickX - centerX); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const event = isTouchEvent(e) ? e.touches[0] : e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const angle = Math.atan2(event.clientY - centerY, event.clientX - centerX); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const percentage = (angle * (180 / Math.PI) + 180) / 360; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const scalc = Math.round(percentage * 100) - 25; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   speedNum.value = scalcToSpeed(scalc < 0 ? 100 + scalc : scalc); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -341,11 +342,10 @@ function handleDotTouchstart() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   document.addEventListener('touchend', onTouchend); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function onMousemove(e: MouseEvent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  handleclickCanvas(e.clientX, e.clientY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  handleEventCanvas(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function onTouchmove(e: TouchEvent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const touche = e.touches[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  handleclickCanvas(touche.clientX, touche.clientY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  handleEventCanvas(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 根据百分比画圆 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function getCircleBar(steps: number) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -399,6 +399,9 @@ function getCircleBar(steps: number) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ctx.closePath(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ctx.restore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function isTouchEvent(e: MouseEvent | TouchEvent): e is TouchEvent { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return window.TouchEvent && e instanceof window.TouchEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 defineExpose({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   startPlay, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   pausePlay, 
			 |