|  | @@ -26,6 +26,13 @@ import startingData from './data/starting.json'
 | 
	
		
			
				|  |  |  import { unitTestData } from '../unitTest'
 | 
	
		
			
				|  |  |  import iconEvaluatingStart from './icons/icon-evaluatingStart.png'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 节拍器时长
 | 
	
		
			
				|  |  | + * 评测模式时,应该传节拍器时长
 | 
	
		
			
				|  |  | + * 阶段评测时,判断是否从第一小节开始,并且曲子本身含有节拍器,需要传节拍器时长,否则传0
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +let actualBeatLength = 0
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  let backtime = 0
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const initBehaviorId = '' + new Date().valueOf()
 | 
	
	
		
			
				|  | @@ -53,6 +60,8 @@ const formatPitch = (num?: number): number => {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  let starTime = 0
 | 
	
		
			
				|  |  |  const formatTimes = () => {
 | 
	
		
			
				|  |  | +  const rate = runtime.speed / detailState.baseSpeed //1
 | 
	
		
			
				|  |  | +  actualBeatLength = Math.round(detailState.times[0].fixtime * 1000 / rate)
 | 
	
		
			
				|  |  |    const difftime = detailState.times?.[0]?.difftime || 0
 | 
	
		
			
				|  |  |    let ListenMode = false
 | 
	
		
			
				|  |  |    let dontEvaluatingMode = false
 | 
	
	
		
			
				|  | @@ -76,7 +85,8 @@ const formatTimes = () => {
 | 
	
		
			
				|  |  |        return index < startIndex
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |      starTime = times[0].sourceRelativeTime || times[0].relativeTime
 | 
	
		
			
				|  |  | -    // console.log("🚀 ~ times", times)
 | 
	
		
			
				|  |  | +    actualBeatLength = startIndex == 0 && !detailState.needTick ? actualBeatLength : 0
 | 
	
		
			
				|  |  | +    // console.log("🚀 ~ times", times, '开始小节', startIndex, actualBeatLength)
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    // 找到阶段评测,开始小节前面最近的是play或者listen的小节
 | 
	
		
			
				|  |  |    if (preTimes.length) {
 | 
	
	
		
			
				|  | @@ -176,7 +186,7 @@ const connect = async () => {
 | 
	
		
			
				|  |  |      speed: runtime.speed,
 | 
	
		
			
				|  |  |      heardLevel: SettingState.eva.difficulty,
 | 
	
		
			
				|  |  |      // beatLength: Math.round((RuntimeUtils.getFixTime(detailState.times[0].beatSpeed) * 1000) / rate),
 | 
	
		
			
				|  |  | -    beatLength: Math.round(detailState.times[0].fixtime * 1000 / rate),
 | 
	
		
			
				|  |  | +    beatLength: actualBeatLength,
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    // console.log("🚀 ~ content:", content, rate)
 | 
	
		
			
				|  |  |    const clientType = useClientType()
 |