目前正在为一个学校项目构建一个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
有关如何解决此问题的任何帮助?
非常感谢
答案 0 :(得分:0)
enemiesHealth是一个成员函数,它应该在实例变量上调用。您正在调用该方法,就像它是静态方法一样。
虽然我无法清楚地理解您的代码(由于命名混淆),但您可以尝试
Enemies.enemies[i].enemiesHealth();