2014-09-22 2 views
0

Я использую Xcode 6, и я начал проект с шаблоном SpriteKit. Для начала все, что я хотел сделать, это добавить узел в нижнюю левую часть предоставленного представления. Я попытался сделать так вот так:Почему мои узлы не отображаются в шаблоне SpriteKit?

@implementation GameScene 

-(void)didMoveToView:(SKView *)view { 
/* Setup your scene here */ 
SKLabelNode *myLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; 


SKSpriteNode *greenNode = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(100, 100)]; 

greenNode.anchorPoint = CGPointMake(0,0); 

greenNode.position = CGPointMake(10,10); 
[self addChild:greenNode]; 

Его нигде не существует. Но если я установил его положение следующим образом:

greenNode.position = CGPointMake(CGRectGetMidX(self.frame), 
           CGRectGetMidY(self.frame)); 

Он сидит красиво посреди моего вида. Почему я не вижу этого, когда использую (10,10) или (0,0). Я действительно вижу его внизу слева, если я установил CGPoint (350,0). Итак, мой вопрос: почему в этом шаблоне по умолчанию мой узел размещен 350 влево? Я ничего не изменил в этом шаблоне. Я чувствую, что что-то делать с этой строки кода, представленной в viewdidload контроллера представления:

scene.scaleMode = SKSceneScaleModeAspectFill; 

Но какова цель этого? Любая помощь для новичка? Благодаря!

ответ

0

AspectFill заставит некоторые сцены иметь невидимый контент. Например, скажем, что ваша сцена 1000 * 800, но она перемещается в вид 400 * 400. Это приведет к уменьшению масштаба вашей сцены до 500 * 400. Это означает, что 50 точек слева от вашей сцены и 50 очков справа от вашей сцены невидимы. Чтобы этого избежать, вы можете настроить режим масштабирования на AspectFit.

+0

Это сработало. И я вижу, что мой контроллер просмотра был установлен на 600x600 по умолчанию. Я думаю, что по умолчанию будут установлены размеры телефона? –

+0

Вы используете XCode 6. Экран вашего телефона не 600 * 600, но по умолчанию «Any x Any» установлен на 600 x 600. Итак, скажем, ваш экран телефона составляет 320 * 480, это означает, что ваш контроллер просмотра будет 320 * 480, но в вашей сцене нет ограничений макета, поэтому он будет настроен на любое значение, которое у вас есть для него в раскадровке (что я предположим, что вы используете). Вы должны добавить ограничения автоматической компоновки. Для получения дополнительной информации просмотрите «классы размера XCode 6», поскольку они являются новой функцией. Кроме того, этот пост в блоге может быть полезным: http://www.learnswift.io/blog/2014/6/12/size-classes-with-xcode-6-and-swift – michaelsnowden

+0

Спасибо за это! –

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