2015-04-07 3 views
0

Я работаю над клоном Flappy Bird. Я сталкиваюсь с ошибкой, когда мои наземные узлы исчезают, когда я переключаюсь из режима портрета в альбомный.Узлы исчезают из портрета в альбомный режим (Sprite Kit | Swift | Flappy Bird)

EDIT: Я основывая свой код от этого: https://github.com/fullstackio/FlappySwift

Portrait mode

Landscape mode

Как вы можете видеть, Кирби действует как дно земля, так что ясно, что узел там его просто не видно. Вот соответствующий код:

override func didMoveToView(view: SKView) { 
    ... 
    backgroundScrollUpdate() 
    ... 
} 

func backgroundScrollUpdate() { 
    ... 
    let groundTexture = SKTexture(imageNamed: "Ground") 
    groundTexture.filteringMode = SKTextureFilteringMode.Nearest 
    let moveGroundDur = 0.02 * groundTexture.size().width*2 
    let moveGroundSprite = SKAction.moveByX(-groundTexture.size().width*2, y:0, duration:NSTimeInterval(moveGroundDur)) 
    let resetGroundSprite = SKAction.moveByX(groundTexture.size().width*2, y:0, duration:0) 
    let moveGroundSpriteForever = SKAction.repeatActionForever(SKAction.sequence([moveGroundSprite, resetGroundSprite])) 
    // ground 
    for var i:CGFloat = 0; i < 2 + self.frame.size.width/(groundTexture.size().width*2); ++i { 
     let groundSprite = SKSpriteNode(texture: groundTexture) 
     groundSprite.setScale(2.0) 
     groundSprite.position = CGPointMake(i * groundSprite.size.width, groundSprite.size.height/2) 
     groundSprite.runAction(moveGroundSpriteForever) 
     moving!.addChild(groundSprite) 
    } 
    // ground physics 
    let dummyGround = SKNode() 
    dummyGround.position = CGPointMake(0, groundTexture.size().height) 
    dummyGround.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.frame.size.width, groundTexture.size().height*2)) 
    dummyGround.physicsBody?.dynamic = false 
    dummyGround.physicsBody?.categoryBitMask = worldCategory 
    self.addChild(dummyGround) 
    ... 
} 

Заранее спасибо.

ответ

3

При повороте в сторону пейзажа размер рамки не изменяется. (например, он по-прежнему составляет 768x1024 вместо 1024x768 после перехода к пейзажу).

Вы хотите использовать «рамки» вместо «рамки» для размещения своего места. Как и вы, вы разместили его снизу. Почва там, вы просто не можете увидеть его;)

self.view.bounds 

например: iOS UIView get frame after rotation

например: "Incorrect" frame/window size after re-orientation in iPhone

ЛУЧШИЙ Ссылка: How to get orientation-dependent height and width of the screen?

+0

Спасибо за ваш ответ, я переключился все мои self.frame.size. * to self.view! .bounds. * и он загружает текстуры намного медленнее, и Кирби провалится сквозь землю. b/c это не загружено. Также в пейзаже это пока не отображается. Я что-то упускаю? – Mike

+0

Исправлена ​​ошибка с Kirby, проваливаясь с помощью self.view! .bounds.height вместо .width. Они переключаются на view.bounds. Однако в ландшафтном режиме земля еще не видна. – Mike

+0

Вы не разместили код, который имеет отношение к вращению, и перемещает все компоненты в нужное место. Я бы посмотрел на код, устанавливающий положение кирби (средний слева на правый и нижний край) и сравнивая с кодом, который рисует землю. Это может быть связано и с неправильным взглядом. – LawfulEvil

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

  • Нет связанных вопросов^_^