我创建了一个Vector容器,在里面装了三个元素:
//在.h 文件中定义路障容器
cocos2d::Vectorcocos2d::Node* obstruct_Vector;
//在cpp文件中装入元素
//创建路障
void GameScene::createobstruct() {
//在屏幕中同时只出现3个路障的情况
for (int i = 1; i <= 3; i++) {
auto winSize = Director::getInstance()->getVisibleSize();
auto obstruct = Sprite::create("manhole_cover.png");
//按照精灵的大小创建刚体,并将精灵与刚体绑定
auto holdMertialBody = PhysicsBody::createBox(obstruct->getContentSize());
holdMertialBody->setDynamic(false); //这是设置是否受重力影响,false表示不受重力影响
holdMertialBody->setContactTestBitmask(1); //碰撞检测
//obstruct->setAnchorPoint(Point::ANCHOR_MIDDLE);
obstruct->setAnchorPoint(Point::ZERO);
obstruct->setPhysicsBody(holdMertialBody);
//创建节点,并将绑定了刚体的精灵装进节点去
auto singleobstruct = Node::create();
singleobstruct->addChild(obstruct);
singleobstruct->setName("obstruct"); //起个名,以后好找
singleobstruct->setPosition(winSize.width / 2, i*METERIAL_INTERVAL + INIT_DISTANCE);
this->addChild(singleobstruct,20);
obstruct_Vector.pushBack(obstruct); //将节点装进容器(根据for 的循环次数,会有三个障碍)
}
};
但是我现在发现一个问题,就是在我循环取出容器中的元素的时候,想依次给它们设置位置属性,发现它们的属性居然是一样的:
代码是这样的:
for (auto hm1 : holdMaterial_Vector) {
cnt = cnt + 1;
hm1->setPositionY(hm1->getPositionY() - 2);
if (hm1->getPositionX() > winSize.width) {
hm1->setPositionX(hm1->getPositionX()-10);
}
else {
hm1->setPositionX(hm1->getPositionX()+10);
}
CCLOG("cnt is : %d, X is : %f, Y is : %f", cnt, hm1->getPositionX(),hm1->getPositionY());
}
最后输出的时候是这样的:
cnt is : 1, X is : 10.000000, Y is : -2.000000
cnt is : 2, X is : 10.000000, Y is : -2.000000
cnt is : 3, X is : 10.000000, Y is : -2.000000
cnt is : 1, X is : 20.000000, Y is : -4.000000
cnt is : 2, X is : 20.000000, Y is : -4.000000
cnt is : 3, X is : 20.000000, Y is : -4.000000
cnt is : 1, X is : 30.000000, Y is : -6.000000
cnt is : 2, X is : 30.000000, Y is : -6.000000
cnt is : 3, X is : 30.000000, Y is : -6.000000
cnt is : 1, X is : 40.000000, Y is : -8.000000
cnt is : 2, X is : 40.000000, Y is : -8.000000
cnt is : 3, X is : 40.000000, Y is : -8.000000
cnt is : 1, X is : 50.000000, Y is : -10.000000
cnt is : 2, X is : 50.000000, Y is : -10.000000
cnt is : 3, X is : 50.000000, Y is : -10.000000
cnt is : 1, X is : 60.000000, Y is : -12.000000
cnt is : 2, X is : 60.000000, Y is : -12.000000
cnt is : 3, X is : 60.000000, Y is : -12.000000
感觉每次循环,里面各个元素的位置参数都是一样的,这是怎么回事呢?