Да, Apple должна сделать это проще для всех нас, но на данный момент вот наиболее подходящее решение для моих нужд:
Избегайте создания подклассов
Конечно, это может быть вообще невозможно, но в моем случае подкласс, который я имел в виду, содержит логику для управления графикой, которую я разместил в файле SKS... Звучит ужасно близко к ViewController, не так ли?
Я создал класс OverlayController
и инициализировал его с помощью:
self.childNodeWithName(Outlet.OverlayNode)!
Так что теперь оверлейный узел — это просто тупой узел, а контроллер — полноценный подкласс со всеми преимуществами.
Но это еще не все
Просто добавлю это, чтобы подсластить сделку:
private extension SKNode {
var progressBar: SKNode {
return self.childNodeWithName("ProgressBar")!
}
}
Это приватное расширение внутри нового файла класса контроллера, так что мы можем безболезненно получить доступ к дочерним элементам тупого SKNode
.
Болевая точка
По общему признанию болезненным моментом является сенсорная обработка. Естественно создавать подклассы SKNode для выполнения пользовательской обработки касаний, и подход к композиции почти ничего не делает в этом отношении. На данный момент я пересылаю штрихи со сцены, но буду публиковать обновления, если есть лучший способ.
person
Mazyod
schedule
21.03.2015