2013-10-07 33 views
1

事件參數的全局函數假設我有以下功能:如何定義在LUA

function onTilt(event) 
    physics.setGravity((-9.8*event.yGravity), (-9.8*event.xGravity)) --Το σωστό 
end 

將在許多不同的LUA文件中使用。我想在外部文件中定義它,然後對這個文件使用require,這樣我就不會在每個lua文件中重複它。

的問題是,這個函數被調用一樣,當它與以下相同的文件(不傳遞參數)

Runtime:addEventListener("accelerometer", onTilt) 

有人能解釋我如何在一個外部文件來定義它,如何打電話呢?

+0

這幫助我堆http://www.youtube.com/watch?v=b12YEOIry60,但現在我已經轉移到精靈套件 – DogCoffee

回答

3

你可以試試這個最小的外部模塊佈局:

-- external module - file named "mymodule.lua" 
local M = {} 

function M.onTilt(event) 
    physics.setGravity((-9.8*event.yGravity), (-9.8*event.xGravity)) 
end 

return M 

如果你需要使用該功能你可以寫(假設mymodule.lua放在一個目錄中的Lua搜索路徑):

local mymodule = require 'mymodule'  

-- ... other code ... 

Runtime:addEventListener("accelerometer", mymodule.onTilt) 
+0

你可以給一個例子,其中的函數也有另一個參數,讓我們說'M.onTilt (event,level)',我想把它叫做'Runtime:addEventListe ner(「accelerometer」,mymodule.onTilt(level))'不傳遞事件參數,只有級別?謝謝 –

+2

@AvraamMavridis,使用閉包。 – lhf

+0

@AvraamMavridis你不清楚你想達到什麼目的。正如現在所定義的那樣,「onTilt」唯一的參數是「event」,那麼應該如何使用'level'參數?當你的監聽器被觸發時,你真的想要執行什麼? –