如何在二维数组里添加节点对象,求指导

cocos2d::Sprite* arrayBlocks;

//创建精灵

auto blockwhite1 = Sprite::createWithTexture(batBlock->getTexture(), CCRectMake(BLOCK_W , 0, BLOCK_W, BLOCK_H ));
blockwhite1->setPosition(Vec2(i * 34 - 12 + 34, 28 * m + 28 + 28));
batBlock->addChild(blockwhite1);

/////// 如何把这个精灵放到 arrayBlocks 里面啊 ?

arrayBlocks*= blockwhite1

有问题。。。?*

:12:是的,有问题 :10: ,当我取出来的时候,坐标变成了0了:9:

注意生命周期。

或者使用cocos2d::Vector帮你维护引用计数。

谢谢版主的回复,但是,我直接取得点坐标,也是零! :10:

打杠的位置输出的是零,本来想先用数组来实现,然后用vector来改的,stl 不太熟:12: :12: ,看来要搞vector了

void HelloWorld::addBlock(){

    //添加批处理精灵

    auto batBlock = SpriteBatchNode::create("block.png", 81);
    addChild(batBlock);
    
    for (int n = 0; n < 9; n++){        
        bool isdouble = true;

        for (int m = 0; m < 9; m++){
            
            if (isdouble){

                //创建精灵

                auto blockwhite1 = Sprite::createWithTexture(batBlock->getTexture(), CCRectMake(BLOCK_W , 0, BLOCK_W, BLOCK_H ));            
                blockwhite1->setPosition(Vec2(i * 34 - 12 + 34, 28 * m + 28 + 28));
                batBlock->addChild(blockwhite1);
                
                //将方块放入数组中
                HelloWorld::getarrayBlock()->addObject(blockwhite1);
        
                arrayBlocks   = blockwhite1;
                arrayBlocks  ->setPosition(Vec2(i * 34 - 12 + 34, 28 * m + 28 + 28));

    ///////////////            CCLOG("arrayBlocks x is %d", arrayBlocks ->getPositionX());
                isdouble = false;
            }
            else{
                //创建精灵
                auto blockwhite2 = Sprite::createWithTexture(batBlock->getTexture(), CCRectMake(BLOCK_W, 0, BLOCK_W, BLOCK_H ));            
                blockwhite2->setPosition(Vec2(i * 34 - 11 + 16 + 34, 28 * m + 28 + 28));
                batBlock->addChild(blockwhite2);

                //将方块放入数组中
                HelloWorld::getarrayBlock()->addObject(blockwhite2);

                arrayBlocks = blockwhite2;
                arrayBlocks->setPosition(Vec2(i * 34 - 11 + 16 + 34, 28 * m + 28 + 28));

                isdouble = true;
            }
            
        }

    }


}


```

用vector 解决了 ,:7::7::7::7:。追加一个问题:

加杠的地方,输出的值为什么是0 ?:5::5::5::5:

void HelloWorld::addBlock(){

//添加批处理精灵

auto batBlock = SpriteBatchNode::create("block.png", 81);
//batBlock->setPosition(Vec2(0, 0));
addChild(batBlock);

auto & vecBlock = HelloWorld::getvecBlock();

for (int i = 0; i < 9; i++){        
    bool isdouble = true;

    for (int m = 0; m < 9; m++){
        
        if (isdouble){

            //创建精灵

            auto blockwhite1 = Sprite::createWithTexture(batBlock->getTexture(), CCRectMake(BLOCK_W , 0, BLOCK_W, BLOCK_H ));        
            blockwhite1->setPosition(Vec2(i * 34 - 12 + 34, 28 * m + 28 + 28));
            batBlock->addChild(blockwhite1);
            
            //将方块放入数组中
            //HelloWorld::getarrayBlock()->addObject(blockwhite1); 和下面的方法一样
            
            vecBlock.pushBack(blockwhite1);

//////////////// CCLOG(“blockwhite1 x is %d”, blockwhite1->getPositionX());
isdouble = false;
}
else{
//创建精灵
auto blockwhite2 = Sprite::createWithTexture(batBlock->getTexture(), CCRectMake(BLOCK_W, 0, BLOCK_W, BLOCK_H));
blockwhite2->setPosition(Vec2(i * 34 - 11 + 16 + 34, 28 * m + 28 + 28));
batBlock->addChild(blockwhite2);

            //将方块放入数组中
            HelloWorld::getarrayBlock()->addObject(blockwhite2);

            vecBlock.pushBack(blockwhite2);

            isdouble = true;
        }
        
    }

}

}