cocos2d-x为什么我在使用SpriteBatchNode时无法设置精灵层次结构?

时间:2014-02-12 11:36:57

标签: cocos2d-x

嘿,我尝试将精灵层次结构设置为父根,以SpriteTest.cpp为例 来自SpriteSkewNegativeScaleChildren示例。
但在我的代码中,我还将sprite添加到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

1 个答案:

答案 0 :(得分:2)

您需要创建另一个Sprite_all_side_connector实例并将其添加到场景中。精灵只能添加一次。将您的代码更改为:

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

那应该清理断言。