问个cocos2dx 3.x Map和Vector的问题

时间:2021-04-11 23:31:13
我建了个精灵数组 cocos2d::Vector< cocos2d::Sprite* > spArr;
然后用一个cocos2d::Map< int, cocos2d::Vector< cocos2d::Sprite* > > areaArr建了一个区域用来存放精灵数组(每个区域都有区域号和对应的精灵数组)。

for ( int tempY = 0; tempY <= 2; tempY++ )
{
    for ( int tempX = 0; tempX <= 2; tempX++ )
    {
        ...........
        ............
        spArr.pushBack( sp );
    }
    areaArr.insert( tempY * 3 + tempX, spArr );
}


但是编译的时候发现报错了   error C2338: Invalid Type for cocos2d::Map<K, V>! 

请问这个应该怎么改呢?

3 个解决方案

#1


cocos2d::Map< int, cocos2d::Vector< cocos2d::Sprite* > > 这种语法不支持(我也觉得这里是个坑)。

Map和Vector里只能放【继承了Ref】的对象,而Map和Vector本身是没有继承Ref的,所以Map不能放Vector。

如果要实现这种数据结构,要是有ValueVector代替Vector。

更多的,官网应该有几篇教程,你可以搜索看看.
或者看官方文档,那里也有。

#2


暂时用 std::map< int, Vector< Sprite* > > 代替 cocos2d::Map< int, cocos2d::Vector< cocos2d::Sprite* > > 了。
但是不知道这个std::map会不会触发引擎自带的内存释放机制。

ValueVector 我也有想过,但是这个貌似不能放精灵吧。 不是只能放一些常量之类的吗?

#3


有点晕了,之前用2.2那套完全没问题- -

ValueMap 和 ValueVevtor貌似都是只能放 Value()包装的常量吧

问题是 ValueMap 里得放进一个数组- -

#1


cocos2d::Map< int, cocos2d::Vector< cocos2d::Sprite* > > 这种语法不支持(我也觉得这里是个坑)。

Map和Vector里只能放【继承了Ref】的对象,而Map和Vector本身是没有继承Ref的,所以Map不能放Vector。

如果要实现这种数据结构,要是有ValueVector代替Vector。

更多的,官网应该有几篇教程,你可以搜索看看.
或者看官方文档,那里也有。

#2


暂时用 std::map< int, Vector< Sprite* > > 代替 cocos2d::Map< int, cocos2d::Vector< cocos2d::Sprite* > > 了。
但是不知道这个std::map会不会触发引擎自带的内存释放机制。

ValueVector 我也有想过,但是这个貌似不能放精灵吧。 不是只能放一些常量之类的吗?

#3


有点晕了,之前用2.2那套完全没问题- -

ValueMap 和 ValueVevtor貌似都是只能放 Value()包装的常量吧

问题是 ValueMap 里得放进一个数组- -