3.x vector的用法
#include<vector>
//struct
struct GOLD_STRUCT
{
Sprite * goldspSprite;
int goldValue;
};
//声明一个GOLD_STRUCT的vector
CC_SYNTHESIZE(std::vector<GOLD_STRUCT>, goldVector, GoldVector);
//将对象放入到vector容器中
void HelloWorld::initdaoju()
{
std::vector<GOLD_STRUCT>goldVector;
_spriteBatchNode = SpriteBatchNode::create("close.png");
m_GameMap->addChild(_spriteBatchNode);
TMXObjectGroup *group = m_GameMap->objectGroupNamed("gold");
auto m_Golds = group->getObjects();
for (int i = 0; i < m_Golds.size(); i++)
{
auto& obj = m_Golds.at(i);
ValueMap& dict = obj.asValueMap();
//std::string name = dict["name"].asString();
float x = dict["x"].asFloat();
float y = dict["y"].asFloat();
float width = dict["width"].asFloat();
float height = dict["height"].asFloat();
Rect box = Rect(x, y, width, height);
_sprite = Sprite::create("close.png");
_spriteBatchNode->addChild(_sprite, tag);
_sprite->setPosition(ccp(x, y));
GOLD_STRUCT _gs;
_gs.goldspSprite = _sprite;
//根据配置文件或者plist文件来加载不同的金币数目
_gs.goldValue = 100;
goldVector.push_back(_gs);
}
m_Player->setGoldVector(goldVector);
}
//遍历vector中的元素
for (unsigned int i = 0; i < goldVector.size(); i++)
{
GOLD_STRUCT gs = goldVector[i];
mSprite->boundingBox();
gs.goldspSprite->boundingBox();
if (mSprite->boundingBox().intersectsRect(gs.goldspSprite->boundingBox()))
{
gs.goldspSprite->removeFromParentAndCleanup(true);
goldVector.erase(goldVector.begin());
CCLOG("1111");
}
}