2015-02-04 3 views
0

Я не могу понять, почему initWithSize и didMoveToView отображают разные результаты.initWithSize по сравнению с didMoveToView

-(id) initWithSize:(CGSize)size { 

if (self = [super initWithSize:size]) { 
    /* Setup your scene here */ 

    self.backgroundColor = [SKColor colorWithRed:94.0/255.0 green:63.0/255.0 blue:107.0/255.0 alpha:1.0]; 

    CGSize _winSize = CGSizeMake(size.width, size.height); 

    SKSpriteNode *_playerSprite = [SKSpriteNode spriteNodeWithImageNamed:@"Player"]; 
    _playerSprite.position = CGPointMake(_winSize.width - 50.0f, 60.0f); 

    [self addChild:_playerSprite]; 


} 
return self; 
} 

Это показывает мой спрайт в нижнем левом углу, когда ориентация пейзаж

-(void)didMoveToView:(SKView *)view { 
self.backgroundColor = [SKColor colorWithRed:94.0/255.0 green:63.0/255.0 blue:107.0/255.0 alpha:1.0]; 

    CGSize _winSize = CGSizeMake(view.frame.size.width, view.frame.size.height); 

    SKSpriteNode *_playerSprite = [SKSpriteNode spriteNodeWithImageNamed:@"Player"]; 
    _playerSprite.position = CGPointMake(_winSize.width - 50.0f, 60.0f); 

    [self addChild:_playerSprite]; 

Это показывает мой спрайт в нижней середине сцены с ориентацией на ландшафт. Я не понимаю, почему у меня две разные позиции.

ответ

0

SpriteKit не проверяет ориентацию в методе init. Это происходит только в последующих методах.

Этот article из блога YMC посвящен «Настройка правильных размеров сцены» и может добавить дополнительную ясность в этом вопросе.

+0

В статье не было исправлено проблемы, я думаю, что проблема связана с методом unarchiveFromFile – Xsv23

+0

@ Xsv23 - ваш код не упоминает об этом. – sangony

Смежные вопросы