actionscript 3 -类组织:内部或外部功能



我正在Flash (as3)中创建一个侧滚动游戏,并试图保持事物的组织和清洁。

我创建了一个"Level"类,它获取所有关卡数据、玩家数据,并创建所有地形对象和玩家对象。因为我要处理玩家碰撞检查和玩家移动、地形移动、声音启动和停止、敌人等所有功能,所以我开始变得混乱起来。这正常吗?或者有没有更好的方法来组织事物,使它们分开,但仍然允许它们彼此交互。

我有一个玩家类,地形类,敌人类等等,但里面没有太多东西。

由于/

听起来是时候看看如何分解关卡类并将某些功能移动到其他类中。你所描述的情况经常发生,所以别担心——这只是意味着是时候重新组织一下了。

你可以考虑以玩家碰撞为例,将其移到物理类中。您可以设置一个静态函数,允许传入两个displayobject,然后测试两者之间的冲突。

对于声音,你可以考虑像SoundManager这样的单例类,它将所有的声音保存在数组或字典中,然后让你的其他类通过SoundManager上的playSound(soundName:String):void函数播放声音。

希望这能给你一个开始。如果你需要更多的细节,请随时询问。如果您发布一些代码,它也可能会有所帮助。祝你好运!

在这里不涉及太多面向对象的设计原则,我的建议是问自己"什么属于一个名为X的类"。

例如,听起来Level职业应该跟踪玩家,敌人和地形……好吧,关卡(也许地图或阶段更合适?)但它不需要为这些对象做所有的工作;许多为运动、碰撞、声音等工作的函数可以转移到其他类中。然后,Level成为一个指挥家;有点像指挥指挥(但不是真正演奏小提琴、圆号等)。

而且,听起来玩家、地形和敌人有很多共同点。例如,它们都需要移动和碰撞处理。您可以创建一个父类(例如GameObject),并从它扩展PlayerTerrainEnemy类。这种多态性对于处理公共功能非常有帮助。

最新更新