2013-06-05 112 views
1

我有我想打電話給另一個函數在touch_input.lua電暈Lua中調用外部函數

block_basic.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 

從我所看到的事件似乎是正確的(一張桌子),screen_touch也是正確的。但功能(screen_touch.onScreenTouch)始終是零,我不知道爲什麼

在touch_input.lua我只是有:

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

等等,等等

爲什麼是零?我爲什麼不能稱之爲?

回答

1

你不告訴你在touch_input.lua返回什麼,但如果你希望你的腳本的前兩行的工作,它需要是這樣的:

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

由於你沒有得到第2行的運行時錯誤,您可能已經返回了一個表,但您需要確保該表的onScreenTouch字段指向onScreenTouch函數。

+0

也許OP具有相似的代碼到你但在最後一個錯字,比如'onScreenTouch = OnScreenTouch'。 – lhf

+0

我目前只是想'調用'遠程函數(onScreenTouch) - 但它似乎是'零',即使scree_touch(從require)看起來不錯 –

+0

當前函數只返回TRUE。我無法調用函數,因爲它被列爲nil。 –

1

這裏是你的文件應該是這樣:

touch_input.lua:

local M = {} 

M.onScreenTouch = function(event) 
    --some code here 
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/

+0

試過了;似乎沒有區別 –

+0

查看這些鏈接: 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/ – vovahost

+0

嗨,是的,我看着那些。甚至創建了一個新的功能。需要在另一個lua文件中;仍然無法調用它(只是得到零) –