2014-05-18 27 views
0

我使用Corona的「商店」庫將應用內付款添加到基於故事板的遊戲中。由於我有多個可以進行不同購買的場景,因此我想了解如何調用store.init()以及在何處放置其回調。如何正確使用商店*與故事板配合使用

例如,如果用戶從「城鎮」場景購買遊戲幣種,我需要更新視圖以反映新的貨幣量。如果他們從「戰鬥」場景中買了一把劍,我需要用新的劍來更新戰鬥視圖。將特定於場景的邏輯引入主事務回調的最佳方法是什麼?

我能想到的一種方法是在全局顯示對象(例如故事板場景)上註冊自定義事件偵聽器,以偵聽購買事件並從主回調派發事件。但是讓場景對象成爲全局感覺很危險。另一種方法是在每次購物時調用store.init(),並針對每種購買類型(或至少針對每個場景)傳遞不同的回叫。但我不確定這是甚至猶太教。

這些對我來說都不是很好的設計。任何更好的想法?謝謝!

回答

1

基本上我所做的是圍繞電暈商店的包裝類。 我使用這個包裝來存儲產品,購買它們等(並處理平臺特定的差異)。

我的包裝類在遊戲開始時初始化一次,main.lua的頂部,然後我只需調用myStore:purchase(id,callback)在特定頁面上購買產品。

對於視圖/事件,頁面,你可以在商店使用:

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

和所有的視圖對象可以有:

Runtime:addEventListener('productBought', callback) 

然後,你將在你的回調檢查這是正確的產品編號等。 如果您想讓事件不那麼普遍,只需使用類似的東西:

在商店方面:

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

在觀察側:

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

這樣,僅此特定對象將收到此:)