0

さて、私は多くの異なるタイプの弾丸が多くの異なるタイプのオブジェクトと相互作用できるようにする関数を書いています:

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()

個々のクラスの変数にアクセスしようとしていることは間違いなくわかっているようですが、なぜ変数を読み取らないのですか?

4

1 に答える 1

1

クラスインスタンスを介して静的変数にアクセスしたいことがわかりました。静的変数はクラス変数です。例: クラスに静的プロパティがある場合power、この方法でアクセスできますSomeButtonClass.power

静的変数は子クラスに継承されません。非 static およびプロパティのみpublicが継承さprotectedれます。internal

于 2012-08-23T10:10:26.827 に答える