handler 將 Lua 對象及其方法包裝爲一個匿名函數。 格式: 函數 = handler(對象, 對象.方法) 在 quick-cocos2d-x 中,許多功能須要傳入一個 Lua 函數作參數,而後在特定事件發生時就會調用傳入的函數。例如觸摸事件、幀事件等等。 local MyScene = class("MyScene", function() return display.newScene("MyScene") end) function MyScene:ctor() self.frameTimeCount = 0 -- 註冊幀事件 self:scheduleUpdate(self.onEnterFrame) end function MyScene:onEnterFrame(dt) self.frameTimeCount = self.frameTimeCount + dt end 上述代碼執行時將出錯,報告「Invalid self」,這就是由於 C++ 沒法識別 Lua 對象方法。所以在調用咱們傳入的 self.onEnterFrame 方法時沒有提供正確的參數。 要讓上述的代碼正常工做,就須要使用 handler() 進行一下包裝: function MyScene:ctor() self.frameTimeCount = 0 -- 註冊幀事件 self:scheduleUpdate(handler(self, self.onEnterFrame)) end 實際上,除了 C++ 回調 Lua 函數以外,在其餘全部須要回調的地方均可以使用 handler()。