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");
        }

    }




posted @ 2017-01-09 11:24  feizuzu  阅读(291)  评论(0编辑  收藏  举报