【发布时间】:2012-05-07 16:32:13
【问题描述】:
如何在 Corona 中进行对象间通信(例如触发事件)?一些示例代码会很棒。
注意事项:
我知道有一种方法可以在对象上创建自定义事件,但是您似乎确实需要该对象的句柄才能触发(调度)它。
我在这里感兴趣的是两个完全独立的对象。例如,假设您单击屏幕上的显示对象,可以在全局事件类型意义上说出“MyInventoryHasIncreased”,然后让任何其他需要订阅它的显示对象将其拾取并相应地调整其显示。 订阅
【问题讨论】:
如何在 Corona 中进行对象间通信(例如触发事件)?一些示例代码会很棒。
注意事项:
我知道有一种方法可以在对象上创建自定义事件,但是您似乎确实需要该对象的句柄才能触发(调度)它。
我在这里感兴趣的是两个完全独立的对象。例如,假设您单击屏幕上的显示对象,可以在全局事件类型意义上说出“MyInventoryHasIncreased”,然后让任何其他需要订阅它的显示对象将其拾取并相应地调整其显示。 订阅
【问题讨论】:
如果您需要全局事件,请考虑使用 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 中拆分出来,以获得所需的对象到对象的通信。
【讨论】: