如何正确使用store。*与storyboard一起使用

时间:2014-05-18 01:46:52

标签: corona corona-storyboard

我正在使用Corona的“商店”库为我的基于故事板的游戏添加应用内付款。由于我有多个场景可以进行不同的购买,我想了解一下调用store.init()的位置以及放置回调的位置。

例如,如果用户从“城镇”场景购买游戏中的货币,我将需要更新视图以反映新的货币金额。如果他们从“战斗”场景中购买一把剑,我将需要用新剑更新战斗视图。将场景特定逻辑引入主事务回调的最佳方法是什么?

我能想到的一种方法是在全局显示对象(例如故事板场景)上注册自定义事件侦听器,该对象侦听购买事件,并从主回​​调调度事件。但是使场景对象全局变得危险。另一种方法是每次购买时调用store.init()并为每种购买类型(或至少针对每个场景)传递不同的回调。但是我不确定那是否是犹太人。

对我来说,这些似乎都不是一个很好的设计。有更好的想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

基本上我所做的是围绕corona商店的包装类。 我使用这个包装器来存储产品,购买它们等(并且还处理特定于平台的差异)。

我的包装类在游戏开始时初始化一次,在main.lua的顶部,然后我只需要调用myStore:buy(id,callback)来购买特定页面上的产品。

对于视图/活动页面,您可以在商店中使用:

Runtime:dispatchEvent({name='productBought', id=productId})

所有视图对象都可以:

Runtime:addEventListener( 'productBought', callback)

然后你必须检查你的回调它是正确的产品ID等。 如果您想使事件不那么通用,只需使用类似:

在商店方面:

Runtime:dispatchEvent({name='productBought'..productId})

在观点方面:

Runtime:addEventListener( 'productBought'..productId, callback)

这样只有这个特定的对象才能收到:)