|  | @@ -12,6 +12,7 @@ import detailState from '/src/pages/detail/state'
 | 
	
		
			
				|  |  |  import iconFollwBtn from './icons/icon-follwBtn.png'
 | 
	
		
			
				|  |  |  import { unitTestData } from '/src/subpages/colexiu/unitTest/index'
 | 
	
		
			
				|  |  |  import { formatPitch } from '/src/subpages/colexiu/buttons/evaluating'
 | 
	
		
			
				|  |  | +import SettingState from '/src/pages/detail/setting-state'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 显示或隐藏播放按钮
 | 
	
		
			
				|  |  |  const togglePlayer = (show: boolean = false) => {
 | 
	
	
		
			
				|  | @@ -106,6 +107,7 @@ const getDefaultIndex = () => {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 开始
 | 
	
		
			
				|  |  |  const handleStart = () => {
 | 
	
		
			
				|  |  | +  checking = false;
 | 
	
		
			
				|  |  |    onClear()
 | 
	
		
			
				|  |  |    data.start = true
 | 
	
		
			
				|  |  |    openToggleRecord(true)
 | 
	
	
		
			
				|  | @@ -126,6 +128,36 @@ const handleEnd = () => {
 | 
	
		
			
				|  |  |    getNoteIndex()
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 2024.7.9 新增自动结束跟练模式功能
 | 
	
		
			
				|  |  | + * 如果跟练模式,唱完了最后一个有频率的音符,需要自动结束掉跟练模式
 | 
	
		
			
				|  |  | + * 需要判断当前音符的后面是否都是休止音符(休止音符的频率都是-1),或者是否是最后一个音符了
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +const autoEndFollow = () => {
 | 
	
		
			
				|  |  | +	if (data.index >= detailState.times.length) {
 | 
	
		
			
				|  |  | +    // 如果开了自动循环需要重新开始跟练
 | 
	
		
			
				|  |  | +    if (SettingState.sett.loop) {
 | 
	
		
			
				|  |  | +      handleStart()
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      handleEnd()
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	let nextIndex = data.index + 1;
 | 
	
		
			
				|  |  | +	const rightTimes = detailState.times.slice(data.index,detailState.times.length)
 | 
	
		
			
				|  |  | +	// 后面的音符是否都是休止音符
 | 
	
		
			
				|  |  | +	const isAllRest = !rightTimes.some((item: any) => item.frequency > 1);
 | 
	
		
			
				|  |  | +	if (isAllRest && detailState.times[data.index].frequency < 1) {
 | 
	
		
			
				|  |  | +    // 如果开了自动循环需要重新开始跟练
 | 
	
		
			
				|  |  | +    if (SettingState.sett.loop) {
 | 
	
		
			
				|  |  | +      handleStart()
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      handleEnd()
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +		return
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // 下一个
 | 
	
		
			
				|  |  |  const next = () => {
 | 
	
		
			
				|  |  |    if (state.osmd.product) {
 | 
	
	
		
			
				|  | @@ -134,6 +166,7 @@ const next = () => {
 | 
	
		
			
				|  |  |      state.osmd.cursor.next()
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    refreshView()
 | 
	
		
			
				|  |  | +  autoEndFollow()
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 获取当前音符
 |