2015-11-06 6 views
0

Я в основном хочу добавить SKSpriteNode на экран, и я понятия не имею, где его ошибка. Поэтому я включаю в себя фотографии моих трех классов, участвующих в этой проблеме. Я создал класс для всего фона. Там я использую функцию addChild(), чтобы добавить 56 узлов в представление, но они не отображаются на экране. Теоретически (для меня) все должно работать.SpriteKit: Добавить SKSpriteNodes To The View

GameViewController

GameScene

Background

Надеется, что вы можете помочь мне добавления узлов к экрану!

Редактировать: Обновлены фотографии.

ответ

1

При вызове этого:

GameScene().addChild(image) 

вы каждый раз, когда внутри for создать локальный GameScene объект, добавить image к этому объекту и при переходе к следующей итерации цикла, этот объект будет уничтожен. На самом деле, после вашей петли тире никто не GameScene объект.

Во-вторых, вам не нужно использовать var image = SKSpriteNode() в вашем hintergrund объекте. Вы каждый раз устанавливаете эту ссылку на новый объект.

У вас есть перекрестные ссылки в коде, попробуйте сделать Somthing так:

class GameScene: SKScene { 
    ... 
    override func didMoveToView(view: UIView) { 
     hintergrund.setBackgroundForScene(self, width: screenWidht) 
    } 
} 

class hintergrund { 
    ... 
    class func setBackgroundForScene(gameScene: GameScene, width: CGFloat) { 
     ... 
     for (...) { 
      ... 
      gameScene.addChild(image) 
     } 
    } 
} 
+0

Ваше объяснение имеет смысл, и я применил изменения в моем коде. К сожалению, это все еще не работает. –

+0

@ LukasKöhl вы делаете подобную ошибку и создаете объект 'hintergrund' в этой строке' hintergrund.setupBackground (screenWidth) '. Объект, созданный в этой строке кода, будет удален после завершения метода 'didMoveToView' –

+0

Когда я делаю то же самое с' let background = hintergrund() 'и' background.setupBackground (screenWidth) ', не работает для меня. Я получаю ошибку EXC_BAD_ACCESS. В первой части кода я написал. –

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