【发布时间】:2011-02-24 22:30:46
【问题描述】:
我正在用 as3 构建一个游戏,让球在墙上移动和弹跳。当用户单击时,会出现爆炸,并且任何击中该爆炸的球也会爆炸。任何击中爆炸的球都会爆炸等等。
我的问题是什么是球的最佳班级结构。我有一个水平系统来控制水平等,我已经想出了编码球的工作方法。这就是我所做的。
我的第一次尝试是为运动、弹跳、爆炸和最后的球创建一个类。这些都按照我刚刚命名的顺序相互扩展。我让它工作了,但是让 Bounce 扩展了 Movement 和 Explosion 扩展了 Bounce,它看起来不是很面向对象,因为如果我想添加一个不移动但爆炸的盒子类怎么办?我需要一个单独的课程来应对这种爆炸。
我的第二次尝试是在不扩展任何东西的情况下创建运动、反弹和爆炸。相反,我将对 Orb 类的引用传递给每个。然后该类存储该引用并根据 Orb 调度的事件(例如更新)执行所需的操作,该事件在每个进入帧时从 Orb 广播。这将推动运动和反弹,以及时机成熟时的爆炸。这种尝试也很有效,但它似乎并不正确。
我也考虑过使用接口,但因为它们更像是类的大纲,所以我觉得代码重用已经过时了,因为每个类都需要自己的代码来完成特定任务,即使该任务正是一样。
我感觉好像我正在为 as3 不支持的类寻找某种形式的多重继承。
有人可以向我解释一种更好的方法来做我正在尝试做的事情吗?我是否通过对运动、弹跳、爆炸和球体进行分类来实现“面向对象”?接口是要走的路吗?任何反馈表示赞赏!
【问题讨论】:
标签: flash oop class actionscript-3