さて、私は多くの異なるタイプの弾丸が多くの異なるタイプのオブジェクトと相互作用できるようにする関数を書いています:
private function checkBulletCollisions() :void{
var bullet:MovieClip;
for (var j:int = 0; j < shootableArray.length; j++){
shootableObject = shootableArray[j];
for(var i:int = 0; i < bulletArray.length; i++){
bullet = bulletArray[i];
if (shootableObject.hitTestPoint(bullet.x, bullet.y, true)) {
container.removeChild(bullet);
bulletArray.splice(i,1);
if (shootableArray[j] is Enemy){
shootableObject.enemyHealth += zArrow.power; //Working code for zArrow only
shootableObject.enemyHealth += bullet.power; //Error throwing code
//(I'm not using both lines at the same time, in case you were wondering)
if(shootableObject.enemyHealth <= 0){
container.removeChild(shootableArray[j]);
shootableArray.splice(j,1);
}
}
}
}
}
現在、Bullet クラスを拡張する 2 種類の弾丸 (zArrow と Dice) があります。zArrow クラスは次のとおりです。
package
{
import Bullet;
public class zArrow extends Bullet
{
public static var power = -1
public function zArrow(anything:*):void
{
super(anything);
}
}
}
2 つの弾丸クラスのいずれか (どちらかが当たっている方) の「パワー」変数に基づいて敵オブジェクトのヘルスを減らそうとしていますが、次のエラーが発生し続ける理由がわかりません。上記の問題コードを使用します。
ReferenceError: Error #1069: Property power not found on zArrow and there is no default value.
at GameDocumentClass2/checkBulletCollisions()
at GameDocumentClass2/enterFrameHandler()
個々のクラスの変数にアクセスしようとしていることは間違いなくわかっているようですが、なぜ変数を読み取らないのですか?