2016-09-17 2 views
0

В моем GameScene.sks У меня есть SKSpriteNode, который представляет собой «мяч».Инициативный подкласс SKSpriteNode с использованием .sks файла Xcode 8

мне нужно подкласс SKSpriteNode, как шар:

class Ball:SKSpriteNode { 
    //custom init 
} 

В моей сцене, я хотел бы INIT мой мяч, используя SKSpriteNode в .sks.

Как я использую Xcode 8, я попытался использовать пользовательский класс в моем SKSpriteNode:

enter image description here

self.ball = self.childNode(withName: "ball") as! Ball 

Но мое приложение падает на этой линии ... Кроме того, я не знаете, как создать пользовательский инициализатор для моего подкласса.

FYI Я бы предпочел, чтобы избежать что-то вроде:

class Ball:SKNode { 
    var sprite:SKSpriteNode! 
} 

let ball = Ball() 
ball.sprite = self.childNode(withName: "ball") as? SKSpriteNode 
+0

Почему вы литья 'Ball' к' Puck'? –

+0

@appzYourLife просто ошибка :) – cmii

+0

Это прекрасный пример того, как Apple не объясняет, как получить что-то из редактора сцены SpriteKit в код и играть с ним оттуда. Редактор сцены и код живут в двух разных мирах, а мост между ними сделан из шпагата, что те, кто понял, не смогли объяснить. – Confused

ответ

0

Я думаю, что проблема здесь в том, что вы не назначаем имя для спрайта, добавляемого в редакторе сцены.

Вы можете получить свой спрайт в поисках типа вместо этого ищет имя

Попробуйте

self.ball = self.children.flatMap { $0 as? Ball }.first! 
+0

My Ball назван «мяч» в свойствах моего SKSpriteNode в редакторе сцены. – cmii

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