Timer lua定时声音文件

Timer lua定时声音文件,timer,lua,coronasdk,duration,Timer,Lua,Coronasdk,Duration,我是一个试图为吉他手写一个音乐阅读节目的音乐家。 我想对两个连续的声音计时,以便第一个声音在第二个声音开始时停止。每个都应持续预定的持续时间(在本例中定义为60000/72中的72)。作为一名初学者,我正在努力,非常感谢任何帮助 -- AUDIO 1 -- local aa = audio.loadStream(sounds/chord1.mp3) audio.play(aa) -- TIMER 1 -- local timeLimit = 1 local

我是一个试图为吉他手写一个音乐阅读节目的音乐家。 我想对两个连续的声音计时,以便第一个声音在第二个声音开始时停止。每个都应持续预定的持续时间(在本例中定义为60000/72中的72)。作为一名初学者,我正在努力,非常感谢任何帮助

-- AUDIO 1 --

    local aa = audio.loadStream(sounds/chord1.mp3)
    audio.play(aa)

-- TIMER 1 --

    local timeLimit = 1

    local function timerDown()
        timeLimit = timeLimit-1
        if(timeLimit==0)then

        end
    end

    timer.performWithDelay( 60000/72, timerDown, timeLimit )

-- TIMER 2 --

    local timeLimit = 1
    local function timerDown()
        timeLimit = timeLimit-1
        if(timeLimit==0)then

-- AUDIO 2 --

            local aa = audio.loadStream(sounds/chord2.mp3])
            audio.play(aa)
        end
    end

    timer.performWithDelay( 60000/72, timerDown, timeLimit )

这里有几件事需要注意。对不起,这是文字墙

字符串(文本) 必须用引号括起来

local aa = audio.loadStream(sounds/chord1.mp3)
变成:

local aa = audio.loadStream('sounds/chord1.mp3')
-- Might be slight overkill but hopefully you get the idea!
local beatsToPlay = 10
local beatsPerMinute = 72
local millisPerMinute = 60 * 1000
local playTimeMinutes = beatsToPlay / beatsPerMinute
local playTimeMillis = playTimeMinutes * millisPerMinute
timer.performWithDelay(playTimeMillis, timerDown, timeLimit)
幻数 应该避免在任何地方都没有解释的值。它们使代码更难理解,也更难维护或修改

timer.performWithDelay(60000/72, timerDown, timeLimit)  
变成:

local aa = audio.loadStream('sounds/chord1.mp3')
-- Might be slight overkill but hopefully you get the idea!
local beatsToPlay = 10
local beatsPerMinute = 72
local millisPerMinute = 60 * 1000
local playTimeMinutes = beatsToPlay / beatsPerMinute
local playTimeMillis = playTimeMinutes * millisPerMinute
timer.performWithDelay(playTimeMillis, timerDown, timeLimit)
科罗纳API 在编程时,能够阅读和理解文档是一项非常宝贵的技能。科罗纳的API已记录在案

audio.loadStream()
的文档告诉您,它返回一个音频句柄,您可以使用该句柄播放您已经拥有的声音。它还提醒您,完成后应该处理句柄,因此需要将其添加到中

timer.performWithDelay()
的文档告诉您它需要以毫秒为单位的延迟时间和一个监听器,该监听器将在该时间被激活,因此您需要编写一个具有某种描述的监听器。如果您遵循到listener的链接,或者查看页面后面的示例,那么您将看到一个简单的函数就足够了

audio.play()
现在就可以了,但是如果你阅读了文档,它会告诉你更多的功能,你可以利用这些功能。即
选项
参数,包括
持续时间
完成时间
<代码>持续时间是播放声音的时间(以毫秒为单位)
onComplete
是一个监听器,当声音播放完毕时将触发该监听器

结果 仅使用计时器: 使用
onComplete

您可能会发现,使用
onComplete
比使用纯计时器效果更好,因为您可能会在播放之前处理音频句柄(并导致错误)。我对Corona没有任何经验,因此我不确定它的计时器或音频库有多强大。

问题是…?您应该清理示例代码。使用适当的注释和缩进。然后更简洁地描述出哪里出了问题,以及您的期望。还可以添加任何用作标记的库。(
corona
?)您需要在文件路径周围加上引号:例如
“sounds/chord1.mp3”
谢谢您的时间。我会努力的。非常感谢你的回答——非常全面。@julianLE3如果你对答案感到满意,请你把它标记为?谢谢