Добавление спрайтов в Cocos2d CCSpriteBatchNode, похоже, игнорирует позицию
В качестве теста я добавил несколько спрайтов в пакетный узел. Все они рисуются в 0,0, кажется, игнорирует позицию спрайта, которая, как я думал, теперь будет относиться к пакетному узлу. Что мне не хватает?
CCLayer* splash = [[CCLayerColor alloc]initWithColor:ccc4(255,255,255,255)];
[self addChild:splash];
CCSpriteFrame* cf = [[CCSpriteFrameCache sharedSpriteFrameCache]spriteFrameByName:@"circle.png"];
CCSpriteBatchNode* batch = [CCSpriteBatchNode batchNodeWithTexture:cf.texture];
CCSprite* test = [CCSprite spriteWithSpriteFrameName:@"circle.png"];
test.position = CGPointMake(20,20);
test.color = ccc3(255,255,0);
[batch appendChild:test];
test = [CCSprite spriteWithSpriteFrameName:@"square.png"];
test.position = CGPointMake(60,60);
test.color = ccc3(255,0,0);
[batch appendChild:test];
test = [CCSprite spriteWithSpriteFrameName:@"square.png"];
test.position = CGPointMake(100,60);
test.color = ccc3(255,125,125);
[batch appendChild:test];
test = [CCSprite spriteWithSpriteFrameName:@"bomb.png"];
test.position = CGPointMake(100,100);
test.color = ccc3(255,0,255);
[batch appendChild:test];
[splash addChild:batch];
1 ответ
Решение
Я никогда не видел, чтобы [batch appendChild: ] использовался раньше. на ссылку класса cocos2d я не мог найти его. Вы пробовали [batch addChild: child];? Также может быть проблема с добавлением одного и того же CCSprite несколько раз, попробуйте создать новый спрайт для каждого изображения и добавить его.
Например:
CCSprite* test = [CCSprite spriteWithSpriteFrameName:@"circle.png"];
test.position = CGPointMake(20,20);
test.color = ccc3(255,255,0);
[batch addChild:test];
CCSprite* second = [CCSprite spriteWithSpriteFrameName:@"square.png"];
second.position = CGPointMake(60,60);
second.color = ccc3(255,0,0);
[batch addChild:second];