1. 程式人生 > >Cocos Creator開發之旅

Cocos Creator開發之旅

寫在前面

最近使用Cocos Creator做遊戲前端開發,因而開個欄目記錄自己在開發過程中遇到的問題以及自己“垂死掙扎”想到的解決方案。博主初涉這個領域,遇到的問題可能是自己缺乏經驗挖的坑,也可能是自己思路不清犯的錯,這裡記錄一二。如果自己“絞盡腦汁”想出的方案存在不足,希望諸君批評指正。後序的文章不再贅述。

PageView

做過前端開發的人對這個控制元件應該不陌生,可以顯示多個類似佈局的頁面。這裡就不介紹PageView了(其實是自己發現自己只是“用過”,雙手放在鍵盤上,發現自己腦袋裡一片空白,介紹部分後序補上)。下面介紹自己在開發中遇到的問題。

需求描述

比如遊戲新近推出幾個角色,我們希望用PageView展示這幾個角色,每一個Page中有購買按鈕。點選購買按鈕後,使用者就購買了該角色,該頁面的購買按鈕置為灰色(失活)。我們希望通過主頁面的一個圖示控制該PageView的顯示,點選該圖示,顯示角色展示的PageView。此外如果使用者購買了全部的新角色,這個圖示應該不顯示。

實現方案

首先大體流程是判斷使用者是否購買完新角色,如果還有可以購買的新角色,顯示圖示,否則不顯示。點選圖示顯示pageview,點選page中的購買按鈕購買角色,隨後將該按鈕置灰。 我們將會遇到兩個問題,第一:資料請求以及快取;第二:點選事件應該放在哪個部分處理,page的程式碼還是pageview的程式碼。

自己遇到的坑

首先,自己沒有意識到資料應該快取在本地,一開始在主介面顯示的地方請求了一次資料,判斷是否應該顯示該圖示。隨後在點選圖示的時候,自己又一次請求了資料以初始化PageView。這造成了不必要的資料請求,增加了不必要的程式碼內容。 其次,自己將點選事件、購買返回監聽以及快取資料更新程式碼寫在了page程式碼中。購買會向伺服器請求資料,在伺服器返回資料的捕獲程式碼中更新了本地快取的資料。由於每個頁面都會捕獲該“購買成功”的訊息,每一個page都對本地快取資料處理了一次,導致快取資料和伺服器資料的不一致。

正確的解決方案

資料上應該用一個類來儲存本地快取的資料。在初始化主頁面的時候,請求資料並快取,根據快取資料判斷是否顯示該圖示,以及後續的PageView初始化。 另外page中的按鈕點選事件的處理可以放在page中,但具體的購買資料請求、購買成功的本地快取更新則應該放在PageView中的程式碼。可以給PageView傳遞給page,在page的按鈕點選處理程式碼中呼叫PageView的購買處理程式碼。

寫在後面

文章語焉不詳,後面再修改。2018年11月11日。