CCSprite не отображается, когда размещен на CCNode или позиция неверна - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть этот код в моем init:

-(id)init {
    if ((self = [super init])) {
        CGSize screenSize = [CCDirector sharedDirector].winSize;
        mapSize = CGSizeMake(4000, 4000);

        rotateWorld = [CCNode node];
        [rotateWorld setContentSize:mapSize];
        rotateWorld.position = CGPointMake(screenSize.width / 2, screenSize.height / 2);

        positionWorld = [CCNode node];
        [positionWorld setContentSize:mapSize];
        positionWorld.position = CGPointMake(mapSize.width / 2, mapSize.height / 2);
        [rotateWorld addChild:positionWorld z:0];
        [self addChild:rotateWorld z:0];

        // Test enemy
        [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"EnemiesSpritesheet.plist"];
        spriteSheetNonPlayer = [[CCSpriteBatchNode  alloc] initWithFile:@"EnemiesSpritesheet.png"capacity:10];
        [positionWorld addChild:spriteSheetNonPlayer z:0];
        enemy = [[Enemy_01 alloc] initWithSpriteFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"enemy_01_01.png"]];
        enemy.position = CGPointMake(mapSize.width / 2, mapSize.height / 2);
        [spriteSheetNonPlayer addChild:enemy];
    }

    return self;
}

Теперь я ожидаю, что мой вражеский спрайт появится в середине экрана, но это не так, и я не знаю, показывается ли он вообще. Самое смешное, что если я изменю positionWorld с CCNode на CCSprite, содержащий фоновое изображение 4000x4000, он будет работать отлично, но почему бы не использовать CCNode с установленным contetSize? Как мне заставить это работать с CCNode?

Спасибо Сорен

1 Ответ

0 голосов
/ 08 ноября 2011

Вам необходимо установить anchorPoint для ccp(0.5,0.5) для CCNode.

rotateWorld.anchorPoint = ccp(0.5f,0.5f);
positionWorld.anchorPoint = ccp(0.5f,0.5f);

CCSprite делает то же самое внутри своего метода init (строка 149 из CCSprite.m).

...