zoukankan      html  css  js  c++  java
  • lua -- handler

    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()。
  • 相关阅读:
    Sky中国War3的旗帜
    2008流行趋势发布暨07届学生毕业秀(上海大学主办)
    随便写一下
    六一节——小朋友们快乐
    HEI
    Update my blog to improve my idea.
    由ipod引起的奇遇记
    加勒比海盗
    “老板娘”请客吃饭
    蚂蚁工坊
  • 原文地址:https://www.cnblogs.com/newlist/p/3649348.html
Copyright © 2011-2022 走看看