【发布时间】:2016-06-17 16:56:46
【问题描述】:
我正在开发一个应用程序,我在一个班级中写了SKScene 的大部分内容。它效果很好,但是当我上个学期学习(java)课程时,似乎公认的行业惯例是将它分成许多类。
更具体地说,我的 (SpriteKit) 应用程序包含一只猫和一只老鼠,在完成上述课程后,我决定不将它们的所有信息包含在 SKScene 中,而是将其中的一些信息分成多个类(a @ 987654323@ 超类和Cat 和Mouse 子类)每个都包含它们的相关信息(例如x 和y 位置)和函数(例如moveCat),在Scene 类中只有与场景相关的函数和信息。
问题在于函数的内容。
特别是其中一个功能,pathBlocked(它检查是否有任何障碍物阻挡了所需的移动路径)使用了很多在 Player 对象中没有意义的信息(例如所有有关板上障碍物的信息,以及收集了多少奶酪)。
我不能只将pathBlocked 保留为Scene 函数,因为有一个函数应该属于猫(catAI),它使用pathBlocked 进行导航。如果是场景的方法,那就不行了。每次我想调用 pathBlocked 时,我都需要实例化一个 Scene 对象。
我应该忘记创建Cat 和Mouse 类,还是应该用不完全属于的信息填充Player 类?
还是有第三种我没有想到的选择?
如果您需要代码的 sn-p,我可以包含其中的一些。
谢谢!
【问题讨论】:
-
pathBlocked在我看来是最合适的场景方法。 -
忘了说,猫有一个
catAI方法,它调用pathBlocked。如果是场景的方法,那就不行了。每次我想调用pathBlocked时,我不必实例化一个场景对象吗? -
你的猫对象可以持有对其父场景的弱引用,并查询它以获取此类信息
标签: swift function class object skscene