2015-03-13 59 views
5

我正在做一些類和超類的測試。其中大部分都是有道理的,但有一件事(目前!),我不確定。我在我的超類中使用了一個枚舉,並且想在我的類中擴展它。我非常肯定我不能這麼做,但我不知道該怎麼做 - 建議將不勝感激,正如任何指向類的非常好的詳細鏈接的指針一樣。不能擴展枚舉;我應該用什麼來代替?

這裏的大概就是我想要做的事:

class basicSprite: SKSpriteNode { 
// This is the super-class 
    enum state: Int { 
    Paused, Idle, Damaged, Dead 
    } 
    var currentState = state.Paused 
    .... 
} 

class playerSprite: basicSprite { 
    extend enum state: Int { 
    // This should take the enum state from the super-class and 
    // add these 4 states, giving 8 in total 
    case MovingLeft, MovingRight, MovingUp, MovingDown 
    } 
    .... 
} 

var newPlayer: playerSprite 
newPlayer.state = MovingLeft 
.... 
switch newPlayer.state { 
    case playerSprite.state.Idle: break 
    case playerSprite.state.MovingLeft: break 
    default: break 
} 

現在,據我所知道的,我不能做到這一點與枚舉 - 我應該怎麼用呢?或者如果我可以用enum做到這一點,怎麼樣?

感謝:-)

+0

我會使用字符串值來表示狀態,例如case「Idle」: – Andy 2015-03-13 13:14:19

+0

爲什麼不添加一個帶有隻讀實例和受保護構造函數的新類? – 2015-03-13 13:17:51

+0

@ DanielA.White - 我沒有關注。如果你能向我展示一個例子,它會是一個很大的幫助! – Garry 2015-03-13 16:58:47

回答

0

當您公開繼承時,您將變量獲取到基類中。

因此,直接將其他值添加到您以前的枚舉中

+1

我曾考慮過這個問題,但我打算創建另一個基於basicSprite的類,它只能繼承原始的4個狀態,而不是繼承自playerSprite的4個狀態。我可以找到其他方法,只是認爲這是一個優雅的解決方案,並想知道我該怎麼做! – Garry 2015-03-13 13:20:32