AVAudioPlayer在使用fadeDuration控制音量逐渐降低时,如果在还未完成降低的过程中再次调用该方法,则会出现跳跃的问题
创始人
2024-11-12 21:30:41
0

可以在设置音量的时候,使用CATransaction来控制动画效果的执行。在动画完成前,再次调用fadeDuration方法时,可以设置动画的时间为剩余动画时间的比例,使得新的动画能够顺利接替原有的动画。

示例代码如下:

let player = AVAudioPlayer(contentsOf: url)
var currentVolume: Float = 1.0

// 使用CATransaction来控制音量变化的动画效果
CATransaction.begin()
CATransaction.setAnimationDuration(duration)

// 设置新的音量
player.volume = newVolume
player.play()

CATransaction.setCompletionBlock({
    // 动画执行完成后,更新当前音量
    currentVolume = newVolume
})

CATransaction.commit()

// 如果还有剩余的动画时间,再次调用fadeDuration方法时,指定新的动画时间为剩余时间的比例
let remainingTime = duration - CATransaction.currentAnimationDuration()
if remainingTime > 0 {
    let proportion = remainingTime / duration
    player.setFadeDuration(duration * proportion)
}

相关内容

热门资讯

透视软件“扑克之星辅助”透视辅... 透视软件“扑克之星辅助”透视辅助工具(果然真的有挂)一、扑克之星辅助AI软件牌型概率发牌机制”必胜“...
透视能赢!德普之星辅助器怎么用... 透视能赢!德普之星辅助器怎么用,德扑圈有透视吗,必赢教程(有挂工具)小薇(透视辅助)致您一封信;亲爱...
透视有挂!cloudpoker... 透视有挂!cloudpoker怎么开挂,约局吧德州真的有透视挂吗,解密教程(有挂详情);1、点击下载...
透视免费!德普之星透视辅助软件... 透视免费!德普之星透视辅助软件激活码,(德扑之心)确实真的是有挂,揭秘教程(有挂攻略)1、不需要AI...
透视ai代打!xpoker辅助... 透视ai代打!xpoker辅助器,xpoker辅助怎么用,存在挂教程(有挂攻略);1、完成xpoke...
透视好牌!德普之星透视软件免费... 透视好牌!德普之星透视软件免费入口官网,(德普之星)果然是真的有挂,玩家教你(有挂揭秘)1、德普之星...
透视能赢“steampoker... 透视能赢“steampokermaster辅助”透视辅助脚本(竟然是有挂)1、下载好steampok...
透视新版!德普之星辅助器,(德... 透视新版!德普之星辅助器,(德扑之心)原来有挂,安装教程(有挂解说);1、透视新版!德普之星辅助器,...
透视ai代打!sohoo开挂辅... 透视ai代打!sohoo开挂辅助,大菠萝辅助器,曝光教程(有挂教程)1、每一步都需要思考,不同水平的...
透视智能ai!德普之星私人局辅... 透视智能ai!德普之星私人局辅助器,(德普)总是是真的有挂,靠谱教程(有挂黑科技)进入游戏-大厅左侧...