首页 > 其他 > 详细

lua -- handler

时间:2014-04-06 23:54:53      阅读:899      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
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()。
bubuko.com,布布扣

 

lua -- handler,布布扣,bubuko.com

lua -- handler

原文:http://www.cnblogs.com/newlist/p/3649348.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!