2016-01-25 2 views
0

Я пытаюсь создать класс в SpriteKit, но я не знаю, возможно ли это.Создайте класс, который наследуется от массива SKSpriteNode в Swift

Я знаю, что:

class myClass: SKSpriteNode 
{ 
    var myVar: Int = 0 
    var mySecondVar: Int = 0 
} 

будет создать класс, который наследует от класса SKSpriteNode.

Затем, для того, чтобы создать 2 dimensionnal массив из этого класса, я использую это:

var array = [[myClass]]() 

Так что я могу добавить элементы с

var elements = [myClass]() 

elements.append(myClass(imageNamed: "image")) 
elements.append(myClass(imageNamed: "image")) 

array.append(elements) 

Так вот, я могу получить доступ к MYVAR и mySecondVar использованием

array[x][y].myVar 
array[x][y].mySecondVar 

Но что я хочу сделать то, что mySecondVar будет варьироваться в пределах от MyClass, с О здесь это нормально, но я хочу, чтобы получить доступ к MYVAR использовании такого синтаксиса:

array[x].myVar 
array[x][y].mySecondVar 

И я не знаю, как я мог это сделать, я попытался это:

class myClass: [SKSpriteNode] 

но это Безразлично Не работай. Не могли бы вы мне помочь? Спасибо.

+0

Зачем вам это нужно? Предполагаемый прецедент использования подразумевает, что 'myVar' должен быть' static', но также и в этом случае я не вижу, почему нужно получить массив. Можете ли вы описать, что «myVar» представляет немного лучше? – DeFrenZ

+0

Извините, я просто понял, что ошибся в своем посте, я положил myClass [x] .myVar вместо массива [x] .myVar, вы можете проверить новый код ниже, понимаете ли вы его лучше? – Drakalex

+0

О, я этого даже не заметил! Но нет, не очень помогает. Если вы можете описать _why_ 'myVar' должно быть свойство массива вместо экземпляра, это поможет. В противном случае, возможно, вам нужно просто создать класс-оболочку для '[SKSpriteNode]' – DeFrenZ

ответ

1

В этом случае я предлагаю вам сделать это по-другому. Таким образом, мы представляем проблему более конкретным и простым способом:

class LaserBeam { 
    var emitter: SKSpriteNode 
    var receiver: SKSpriteNode 
    var isActive: Bool 
} 
class LaserNode: SKSpriteNode { 
    var temperature: CGFloat 
} 

var array: [LaserBeam] = ... 
+0

Ну, я действительно не думал об этом варианте, я попробую, но это кажется проще, спасибо. Edit: Вы имели в виду 'var emitter: LaserNode', вместо' var emitter: SKSpriteNode'? – Drakalex

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