audio.play 无法工作

在我的应用程序中播放音频时,我收到一个“upvalue错误”。 我有两个文件:

sound_board.lua

local enemy_damaged = audio.loadSound( "assets/audio/enemy_damaged.wav" )
local ouch = audio.loadSound( "assets/audio/ouch.wav" )
local pew = audio.loadSound( "assets/audio/pew.wav" )

local function playSound(to_play)
    audio.play( to_play )
end

level1.lua

local sound_board = require("sound_board")

-- 一些代码
function fireSinglebullet()
    sound_board:playSound(pew) -- 第295行

    -- 其他一些代码
end

启动时我收到这个错误:

level1.lua:295: attempt to index upvalue 'sound_board' (a boolean value)

发生了什么?

点赞
用户7026995
用户7026995

仔细查看 sound_board.lua 文件中你返回了什么。错误信息表明 level.lua 文件中的局部变量 sound_board 是一个布尔值。

要访问另一个文件中的变量,可以使用以下模块:

-- sound_board.lua

local M = {}

M.sounds = {
  "enemy_damaged" = audio.loadSound( "assets/audio/enemy_damaged.wav" )
  "ouch" = audio.loadSound( "assets/audio/ouch.wav" )
  "pew" = audio.loadSound( "assets/audio/pew.wav" )
}

function M:playSound( to_play )

    audio.play( self.sounds[to_play] )

end

return M

以及

-- level1.lua

local sound_board = require( "sound_board" )

-- some code
function fireSinglebullet()

    sound_board:playSound( "pew" ) -- line 295

    -- some other code
end

阅读更多:在 Corona 中使用外部模块

2018-05-27 18:52:42