【问题标题】:how does one do Inter-Object communications (e.g. triggering events) in Corona SDK Lua?如何在 Corona SDK Lua 中进行对象间通信(例如触发事件)?
【发布时间】:2012-05-07 16:32:13
【问题描述】:

如何在 Corona 中进行对象间通信(例如触发事件)?一些示例代码会很棒。

注意事项:

  • 我知道有一种方法可以在对象上创建自定义事件,但是您似乎确实需要该对象的句柄才能触发(调度)它。

  • 我在这里感兴趣的是两个完全独立的对象。例如,假设您单击屏幕上的显示对象,可以在全局事件类型意义上说出“MyInventoryHasIncreased”,然后让任何其他需要订阅它的显示对象将其拾取并相应地调整其显示。 订阅

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    如果您需要全局事件,请考虑使用 Runtime:addEventListener()

    local function invIncreased(event)
        print("handle inventory increase from" .. event.target)
    end
    
    local image = display.newImage("image.png") 
    Runtime:addEventListener("MyInventoryHasIncreased", invIncreased)
    
    local event = {name="MyInventoryHasIncreased", target=image} 
    Runtime:dispatchEvent(event)
    

    您可以将 Runtime:addEventListener 从 Runtime:dispatchEvent 中拆分出来,以获得所需的对象到对象的通信。

    【讨论】:

    • Tks - 从资源使用的角度来看,运行时选项是否考虑过重?
    • 不,我不这么认为,即使在 Corona 之外,这种事件调度程序模式也能很好地使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2012-02-26
    • 2015-10-11
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多