在我的敌人身上使用健康点

时间:2015-11-17 20:31:59

标签: actionscript-3 oop

目前正在为一个学校项目构建一个SHMUP,我对OOP相当新,而且as3并且使用类继承时遇到了麻烦。

我正在使用这些课程:

<ul>
    <li>ShootPlayer</li>
    <li>Enemies</li>
    <ul>
        <li>Enemy0</li>
        <li>Enemy1</li>
        <li>Enemy2</li>
    </ul>
</ul>

我的目标是为我的敌人增加健康点数。这个想法基本上是创建一个名为enemyHealth:int的属性,每次玩家击中敌人时,enemyHealth - = 1 ;,当enemyHealth = 0时,removeChild这个敌人,拼接数组等......

我现在还不确定如何解决这个问题。以下是我在Enemies课上所做的事情.`

public function enemiesHealth(pHealth:int):void {
    var enemyHealth:int = pHealth;
    enemyHealth -= 1;
}

我想在每个敌人身上覆盖这个功能。例如Enemy0

override public function enemiesHealth():void {
     super.enemiesHealth(3);
}

在我的ShootPlayer doAction上运行该功能

for (var i:int = Enemies.enemies.length - 1 ; i >= 0 ; i-- ) {

    if (CollisionManager.hasCollision(box, Enemies.enemies[i]  )) {
        Enemies.enemiesHealth();
        trace(Enemies.enemyHealth);
        parent.removeChild(Enemies.enemies[i]);
        destroy();
        shootsPlayer.splice(shootsPlayer.indexOf(this), 1);
    }
}

但是,好吧,既然我没有在括号中写任何内容,那基本上没有任何意义。

获取错误类型1061:通过静态类型的引用调用可能未定义的方法enemiesHealth

有关如何解决此问题的任何帮助?

非常感谢

1 个答案:

答案 0 :(得分:0)

enemiesHealth是一个成员函数,它应该在实例变量上调用。您正在调用该方法,就像它是静态方法一样。

虽然我无法清楚地理解您的代码(由于命名混淆),但您可以尝试

Enemies.enemies[i].enemiesHealth();