2015-03-13 88 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