2016-04-06 4 views
1

Я получаю эти ошибки, и я не знаю, как их исправить. Я хочу создать SKScene с фиксированным размером, как это:Как подкласс SKScene

width: screenWidth 
height: screenHeight/10 

Я не знаю, как подкласс SKScene в правильном пути.

enter image description here

ответ

2

Это происходит, как вы пытаетесь получить доступ к свойствам, прежде чем класс инициализируется.

Если вы перемещаете, что после super.init линии, она будет работать например .:

... 
super.init(size: fixedSize) 
self.name = name 
self.buttons = buttons 

редактировать Просто подумал, есть исключение для этого, хотя и я только подтвердил это. Детская площадка не нравится, но фактическое приложение делает:

класса SomeClass: NSObject {

let a = 2 
    var b = 3 

    override init(){ 
     let c = self.a 
     let d = self.b 
     super.init() 
     print("c: \(c), d:\(d)") 
    } 

    func foo(){ 
     print("bar \(a)") 
    } 

} 
+0

Да, глупый вопрос. Я решил преобразовать операторы –

+1

Если у вас есть значения, которые вы хотите применить до начала, тогда лучше назначить как 'static let myVar = 123' –

+0

Я только что добавил исключение из этого случая в своем первоначальном ответе. Что касается того, почему детская площадка падает, но приложение работает, я понятия не имею, но я предполагаю, что это потому, что значения имеют значения по умолчанию. –

0

Я решил таким образом:

init(buttons: Button) { 
     self.buttons = buttons 
     super.init() 
     let fixedSize = CGSize.init(width: screenWidth, height: screenHeight/10) 
     super.size = fixedSize 
    } 

я удалил "имя", потому что я не Больше это нужно. Я переехал self.buttons = buttons, потому что он должен быть установлен до super.init()

+1

Что касается использования размеров экрана и т. Д. Не забудьте использовать масштабирование, чтобы обеспечить защиту сетчатки и т. Д. 'UIscreen.mainscreen(). Scale', например. эта ручка возвращает @ 2x @ 3x и т. д. размеры. –

+0

Так что я могу использовать напрямую: вернуть UIScreen.mainScreen(). Bounds.size.height * UIScreen.mainScreen(). Scale? Или это избыточно? –

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