cocos2d-x 3.0 cocos2d::Vector

cocos2d::Vector<T>模板类型T必须是继承自Ref的类

像Point的数组直接使用std::vector<T>就好。
cocos2d::Vector<T>内部实现使用了std::vector<T>,并增加了内存管理。
使用简例:

cocos2d::Vector<Class1*> objArray;
std::vector<Point> pointArray;

使用前向声明可能出现的问题

在头文件中使用Vector的成员的类型的前向声明,可能会出现在编译时报static_assert(std::is_convertible<T, Ref*>::value, “Invalid Type for cocos2d::Vector<T>!”);等错误。
修改为在头文件中包含其头文件就好了。

若从使用CCArray的代码重构到cocos2d::Vector<T>,还可能出现下列问题

不要使用==或!=做比较

否则编译时会报错 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1/utility:405:49: Invalid operands to binary expression (‘const cocos2d::Value’ and ‘const cocos2d::Value’)

调用back()等函数前要先做尺寸判断

 if(categoryArray_.size()>0)
 {
 Category* category=(Category*)categoryArray_.back();
 ...
 }

http://dev.bunnyhero.org/2014/01/cocos2d-x-30-beta-the-new-vector-class/
https://github.com/cocos2d/cocos2d-x/blob/develop/docs/RELEASE_NOTES.md#new-eventdispatcher

发表评论