0

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

笔记:

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

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

4

1 回答 1

2

如果您需要全局事件,请考虑使用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 中拆分出来,以获取所需的对象到对象的通信。

于 2012-05-07T08:32:13.043 回答