在Livecode中播放多个声音文件

时间:2015-01-23 14:59:38

标签: audio livecode

我想制作一款带有音效的游戏。当我开始游戏时,应该播放背景音乐直到游戏结束。当我点击游戏中的某些内容(例如按钮)时,应该播放声音效果,但背景音乐会停止。

当对象的声音效果正在播放时,如何让背景音乐连续播放?

我已经有了这些脚本......

卡片脚本......

on openCard
   play "backgroundmusic.wav" looping
end openCard

按钮(或任何对象)......

on mouseup
   play "sound.wav"
end mouseup

如何一起播放这些声音?


更新:我发现游戏已上传到Game Jam。这场比赛排名第一。当我玩游戏时,声音很棒,它有背景音乐和声音效果。但是这个游戏的拥有者并没有上传实时代码堆栈文件来研究它。该游戏名为Space Shooter Game。这场比赛的声音是我所期待的。


注意: 正如我从答案中看到的那样,使用player对象可以起作用。但这需要QuickTime,我没有安装在我的电脑上。我也希望声音能够在移动设备中播放。

3 个答案:

答案 0 :(得分:1)

就目前而言,soundChannel属性在LiveCode中没有任何效果,仅提供Hypercard兼容性。

目前在桌面上有两种方式可以进行多声道声音:1)将导入的声音作为一个声道播放,使用播放器对象作为第二个声道,或2)使用两个播放器对象。

通常,一个好的选择是将短音作为声音效果导入到只播放一次的堆栈中,并保留播放器对象以用于背景音乐。导入的声音通常以最小的延迟播放,但是,您无法同时播放多个导入 - 尝试在第一个播放时播放第二个声音将停止第一个播放第二个声音。如果您需要播放异步音效,此选项将不起作用;您必须使用播放选项的组合。

可以使用多个播放器,但请注意,在加载声音(将声音的文件路径分配给播放器)和播放过程中可能会有一些延迟。

另请注意,即使不是不可能,也很难真正无缝播放曲目 - LiveCode在某些时候会变得容易受到某些系统事件的影响,这些事件会导致循环之间的轻微停顿。不久之后,Trevor Devore在他的Enhanced QuickTime外置设备上做了一个补充,实现了音频的真正无缝循环。然而,随着Apple摆脱QuickTime,不知道这个选项有多长时间。

随着RunRev人员对引擎的改进,我们可能会看到媒体播放和管理方面的改进,希望能够提前而不是更晚。

答案 1 :(得分:0)

LiveCode forums中,他们建议使用卡片上的播放器对象并告诉他们玩。


在HyperCard中,您可以为此设置soundChannel属性。您是否检查过LiveCode文档是否支持该文档? play命令和the sound属性的文档也可能有所帮助。也许那些包含提示。 HC中的FWIW

set the soundChannel to 1
play "BackgroundMusic"
set the soundChannel to 2
play "SoundEffect"

会同时播放音效和背景音乐。也许这就是它在LiveCode中的工作方式?

答案 2 :(得分:0)

多媒体功能正在经历转型。以前所有东西都是围绕QuickTime(几乎所有东西)构建的,你需要为每个并发声音添加一个播放器控件。目前整个基础已经改变,因为Apple放弃了QuickTime,但假设您为桌面开发,您应该(再次)能够添加播放器对象然后使用:

start player "name of player"

您还可以通过

动态创建播放器对象
create player "my player""

然后使用

set the filename of player "my player to "/path/to/your/audio/file"
在盯着你的声音之前。只要你有不同的播放器来播放不同的声音,它们就应该同时播放。