2011-09-02 72 views
0

我有一个名为Main的主类,在Main类中有一个名为State的变量,它的类型为int。状态变量包含一个状态ID,它让程序知道它在哪个状态(菜单,指令屏幕......)在Main类中,我有一个从Sprite类发起的对象。现在我的问题是如何告诉对象状态已经切换(这个很容易,我可以很容易地做出这个状态,但下一个部分给我提出了问题),以及对象如何告诉Main类他想要切换状态?在类之间交换数据

+0

您可能希望包含代码示例以使您的解释更易于遵循。在它的表面上,你可以有'someObject.StateChanged(int newState)'和'Main.ChangeState(int newState)',但这取决于你的其他交互。例如,你可能想要采取一种事件方法...通常,我不希望'Main'类会做很多事情,所以听起来你可能会错过一些类... – forsvarir

回答

2

这是我从你的问题理解,

  • Main是控制器类调用Sprite实例方法
  • State确定是呼吁Sprite实例的方法

在这种情况下,Sprite类应该包含一个名为State的静态属性(最好这应该是enum而不是int)。

更新状态变量是实例方法的责任。在完成实例方法的执行后,调用者可以检查实例所处的状态,然后适当地确定下一个操作过程。

更好的方法是根本不公开状态(除非需要被外部对象使用)。在你的情况下,它似乎只是用来确定执行的方法(我猜你有一个switch语句来做到这一点)。

如果您想要实例根据自己的状态执行特定方法,那么您可以将此决定留给实例本身,而不是由控制器决定。实例可以有一个方法(例如Update()Execute()),它们根据操作的上下文执行操作(如菜单选项等)。该方法可以根据静态成员state决定执行哪种内部方法。

+1

是的,你是完全正确,我是OOP的新手,我的想法是主类应该控制信息,它是应该这样做的对象,主类应该只在需要时才检查。 – LordShigi