2015-09-07 46 views
1

中將一些精靈放入Valuemap中我發現Valuemap是方法。該值不支持指針。 但我寫的那些代碼沒有錯誤:如何在cocos2dx v3.7

Sprite* spriteBg = .....; 
Valuemap dic; 
dic["abc"] = spriteBg; 

錯誤,當我得到它:

for (auto unit:dic){ 
    Sprite* spritebg = dynamic_cast<Sprite*>(unit.second); 
} 

它給我的錯誤「的cocos2d ::值不是指針」

或這個問題的另一面: 我可以將Ref對象設置爲cocos2dx值嗎?

回答

1

cocos2d :: Value類型和擴展名Valuemap類型旨在保存從JSON反序列化的值。因此他們不能包含引用類型。

我只知道建立在cocos類型中的存儲cocos2d :: Ref派生對象是cocos2d :: Vector - 它將正確保留/釋放成員,並支持迭代。


啊。 @zszen指出我錯過了cocos2d :: Map(從cocos/base/CCMap.h),它將保留/釋放Value類型。

cocos2d::Map<std::string,Node*> nodeMap; 
+0

的cocos2d ::向量和Cocos2d ::地圖具有自動釋放操作 – zszen

+0

我認爲 「的cocos2d ::地圖<的std :: string,參考*>」 可以做任何事情cocos2dx引擎。然後爲商店價值數據創建一個RefPlus。我們可以放一個補貼參數。 – zszen