2016-01-25 44 views
0

我試圖在SpriteKit中創建一個類,但我不知道它是否可能。創建一個繼承自Swift中的SKSpriteNode數組的類

我知道:

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,s Ø這是確定的,但我想用這種語法訪問myVar的:

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

我不知道我怎麼能做到這一點,我想這一點:

class myClass: [SKSpriteNode] 

,但它不沒有工作。你可以試着幫我嗎? 謝謝。

+0

你爲什麼要這麼做?你所希望的用例似乎暗示'myVar'應該是'static',但在這種情況下,我不明白爲什麼要獲取數組。你能描述一下'myVar'代表了什麼更好? – DeFrenZ

+0

對不起,我只是意識到我在我的文章中犯了一個錯誤,我把myClass [x] .myVar而不是array [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

嗯,我真的沒有想過這個選項,我會試試看,但它似乎更容易,謝謝。編輯:你的意思是'var發射器:LaserNode',而不是'var emitter:SKSpriteNode'? – Drakalex