我正在构建一个项目(小游戏),我试图为我的问题找到解决方案。
我有代码,我使用基类Entity,它具有子类(对象)的必要方法,如移动,模型渲染等...在所有其他子类 F.e 中使用的函数
实体 -> 基类,
拼写对象 -> 子类/扩展实体
玩家对象 -> 子类 /扩展实体
单元对象 -> 子类/扩展实体
在实体中,我有默认的移动方法,其中我检查碰撞,但是当碰撞被击中时,我想调用在XXXObject中定义的CollisionHit上的子类方法(对于每个对象,我需要单独的代码)
我的代码
实体:
class Entity
{
constructor(obj: EntityInterface)
{
///
}
public doMove(...):void
{
// SpeedX SpeedY...
// ...
if (collisionHit)
// getSubclass f.e PlayerObject.onCollisionHit()
this.addPosition(speedX, speedY)
//...
}
// ....
SpellObject/PlayerObject/...
export class xxxObject extends Entity
{
constructor(obj:XXXInterface)
{
// ...
}
public onCollisionHit(...):void
{
// Do something (for SpellObject ->Call spell Disapear, for Player set MovementX/Y to 0..
}
在此示例中,如何从基类调用 onCollisionHit?我发现的一个可能的解决方案是将子类实例链接到基类的变量
在实体 -> 受保护的子类中;
在 xxxObject -> this.subclass = this;-> in doMove() -> 当碰撞命中调用 -> if (this.subclass) this.subclass.onCollisionHit()
我不确定这是否只是浪费内存的解决方案。谢谢大家的回应。
白衣染霜花
相关分类