AS3 - доступ к переменной подкласса с использованием параметров

Хорошо, я пишу функцию, которая позволит многим различным типам пуль взаимодействовать со многими различными типами объектов:

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);
                    }
                }
            }
        }
    }

Прямо сейчас у меня есть два типа пуль (zArrow и Dice), которые расширяют класс Bullet. Вот класс zArrow:

package
{
   import Bullet;
   public class zArrow extends Bullet
   {
      public static var power = -1


      public function zArrow(anything:*):void
      {
         super(anything);
      }
   }
}

Я пытаюсь уменьшить здоровье вражеского объекта на основе переменной «мощность» в любом из двух классов пуль (в зависимости от того, какой из них попадает), но я не могу понять, почему он продолжает выдавать мне следующую ошибку, когда я используйте код проблемы, упомянутый выше:

ReferenceError: Error #1069: Property power not found on zArrow and there is no default value.
    at GameDocumentClass2/checkBulletCollisions()
    at GameDocumentClass2/enterFrameHandler()

Кажется, он определенно знает, что я пытаюсь получить доступ к переменной отдельного класса, так почему же он не читает переменную?


person Joseph Wagner    schedule 03.08.2012    source источник


Ответы (1)


Я вижу, что вы хотите получить доступ к статической переменной через экземпляр класса. Статическая переменная - это переменные класса. Например: если ваш класс имеет статическое свойство power, вы можете получить к нему доступ таким образом SomeButtonClass.power.

Статические переменные не наследуются дочерними классами. Наследуются только нестатические свойства public, protected и internal.

person Rytis Alekna    schedule 23.08.2012
comment
Я отказался от использования Static, и что тогда? :( Моя переменная теперь общедоступна. Могу ли я получить к ней доступ из другого класса? - person Joseph Wagner; 23.08.2012