使用 Corona Lua 调用外部函数。

我有一个名为block_basic.lua的文件,我想在touch_input.lua中调用另一个函数。

block_basic.lua执行下列操作:

local screen_touch = require( "touch_input")
local onScreenTouch = screen_touch.onScreenTouch

local function touched( event )
-- 'self' parameter exists via the ':' in function definition

print(onScreenTouch, screen_touch, event)

end

从我的观察中,event似乎正确(一个表),screen_touch也正确。但是函数(screen_touch.onScreenTouch)始终为nil,我不知道为什么。

touch_input.lua中,我只是有:

local function onScreenTouch( event )
-- no 'self' parameter

等等。

它为什么为nil?我为什么不能调用它?

点赞
用户1442917
用户1442917

你没有展示在 touch_input.lua 中返回什么,但是如果你期望你的脚本的前两行能够正常工作,需要像这样:

local function onScreenTouch( event )
...
return {
  onScreenTouch = onScreenTouch
}

既然你在第二行没有获得运行时错误,可能你已经在返回一个表,但是你需要确保那个表中的 onScreenTouch 字段指向 onScreenTouch 函数。

2013-06-05 16:31:53
用户1502079
用户1502079

以下是您的文件应该如何:

touch_input.lua:

local M = {}

M.onScreenTouch = function( event )
    --一些代码在这里
end

return M

block_basic.lua:

local screen_touch = require( "touch_input")

local onScreenTouch = screen_touch.onScreenTouch

print(onScreenTouch, screen_touch, event)

我进行了测试。它100%有效。

更多信息:

http://www.coronalabs.com/blog/2012/08/28/how-external-modules-work-in-corona/

http://www.coronalabs.com/blog/2011/09/05/a-better-approach-to-external-modules/

http://developer.coronalabs.com/content/modules

http://www.coronalabs.com/blog/2011/07/06/using-external-modules-in-corona/

2013-06-05 21:03:50