2014-02-12 70 views
0

嘿,我嘗試設置sprite層次結構爲父根,以SpriteSkewNegativeScaleChildren示例中的SpriteTest.cpp 爲例。
但在我的代碼中,我也將精靈添加到SpriteBatchNode。
這樣的:cocos2d-x爲什麼我在使用SpriteBatchNode時無法設置精靈層級?

auto cache = SpriteFrameCache::getInstance(); 
    cache->addSpriteFramesWithFile("leds/sprites.plist", "leds/sprites.png"); 
    auto batch = SpriteBatchNode::create("leds/sprites.png"); 
    Sprite* Sprite_all_side_connector = Sprite::createWithSpriteFrameName("all_side_connector.png"); 
    batch->addChild(Sprite_all_side_connector); 
    Sprite* Sprite_one_side_connector = Sprite::createWithSpriteFrameName("one_side_connector.png"); 
    batch->addChild(Sprite_one_side_connector); 
    Sprite* Sprite_purple_stick = Sprite::createWithSpriteFrameName("purple_stick.png"); 
    batch->addChild(Sprite_purple_stick); 
    Sprite* Sprite_red_stick = Sprite::createWithSpriteFrameName("red_stick.png"); 
    batch->addChild(Sprite_red_stick); 
    Sprite* Sprite_yellow_ball = Sprite::createWithSpriteFrameName("yellow_ball.png"); 
    batch->addChild(Sprite_yellow_ball); 

    addChild(batch, 0, TAGS::SPRITEBATCHNODE);   
    Sprite_all_side_connector->setPosition(ccp(winSize.width/2,winSize.height/2)); 
    auto parent = Node::create(); 
    addChild(parent); 
    parent->addChild(Sprite_all_side_connector); 

但即時得到例外,當我刪除SpriteBatchNode每一件事工作正常。
我想使用SpriteBatchNode功能進行OpenGL一次繪製調用。

的例外是:

parent->addChild(Sprite_all_side_connector); 

The compiler error

+0

批處理節點的所有精靈都必須使用相同的紋理 – LearnCocos2D

+0

他們使用的是相同的png圖片,如果這是你的意思 ,但我喜歡用不同的精靈,像往常一樣做,但在層次 什麼我在這裏缺少什麼? – user63898

+0

發生異常並在日誌/控制檯中是否有任何錯誤消息? – LearnCocos2D

回答

2

您將需要創建的Sprite_all_side_connector另一個實例,並添加到現場。精靈只能添加一次。你的代碼更改爲:

parent->addChild(Sprite::createWithSpriteFrameName("all_side_connector.png"));

這應該清理斷言。

+0

所以我需要重複每個精靈,我添加到BatchNode? – user63898

+0

是的,如果它被添加到場景中一次,即使它在另一個節點中,也不能再添加到場景中。 – microslop

+0

我仍然從batchnode獲得效果嗎? (一個openGL調用) 它有什麼錯誤複製精神? – user63898

相關問題