现在该是时候给我们的项目加点响声了。任何游戏都需要声音,这一讲我们就来学学如何在Luaplayer中发声。开始上课!
luaplayer 可以播放如下音乐格式*:UNI, IT, XM, S3M, MOD, MTM, STM, DSM, MED, FAR, ULT 或 669,WAV 文件可用作声音。MIDI可以先转换为上述格式再使用,比如 Modplug Tracker 就可以转。请记住 luaplayer 不支持 mp3 文件*。在学习了一些音频命令之后我们将结合之前的成果创建一个小程序。
*译者注:此说法已过时,目前luaplayer已支持mp3,ogg,aa3,oma,omg,详见HM版相关函数。但是由于luaplayer目的在于编游戏,所以对mp3播放的支持程度不高。
先来看第一个命令,此命令将播放一个音乐文件。
代码:
Music.playFile( string file, bool loop )
此处的“string file”是指你的音乐文件名,例如“song.xm”。“bool loop”处放置“true”或者“false”。设“true”则一直循环播放该音乐,“false”则只播一遍。下面是个放歌的示例:
代码:
Music.playFile("mysong.mod", true)
接下来看看这个命令。它们是在开始播放音乐之后使用的:
代码:
Music.pause()
Music.stop()
Music.resume()
这些命令不用解释你也能看懂。
Music.pause() 将暂停歌曲播放。
Music.stop() 将停止歌曲播放。
Music.resume() 将恢复播放被暂停的歌曲。
还有一个命令是用来侦测一首歌是否正在播放。这将返回 true 或 false。看一下:
代码:
Music.playing()
假如说我们想侦测我们的歌曲是否在播放,如果是则打印一条消息到屏幕。我们可以这样做:
代码:
if Music.playing() == true then
screen:print(10,10,"Music is playing",white)
end
还有一个命令是用来设置音乐文件的音量的。只要在括号中填入一个数值,范围在 0 至 128 之间。下面是命令格式:
代码:
Music.volume(Number)
现在让我们学学用于音效的声音文件,尤其是 wav 文件。这和播放音乐文件有些区别。下面是如何载入一个声音:
代码:
bonkSound = Sound.load("bonk.wav",false)
wav 文件作为一个变量被载入,稍后我们就可以用这个变量来指称该声音。此处我们设“false”是以防循环播放。记住设为“true”将循环播放,如果你的确是这么想的话。
关于 WAV 文件的一个要点是,在 luaplayer 中只能使用单声道的,立体声的不行。你可以通过右键点击文件查看其属性的摘要页来确认这一点。
现在让我们来再学一些命令。下个命令是播放该文件。使用你载入声音时设的变量名。如下:
代码:
bonkSound:play()
但是我不建议你这样播放声音文件。这会导致一个常见错误,类似“loop ingettable(无法取得循环)”之类消息。下面是我播放声音文件的方法。不同之处就是用另一个变量取代 bonkSound。
代码:
local sound = bonkSound
voice = sound:play()
--要停止声音使用: