嘿,我尝试将精灵层次结构设置为父根,以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);
答案 0 :(得分:2)
您需要创建另一个Sprite_all_side_connector
实例并将其添加到场景中。精灵只能添加一次。将您的代码更改为:
parent->addChild(Sprite::createWithSpriteFrameName("all_side_connector.png"));
那应该清理断言。