AS3 - Ошибка 1119: доступ к возможно неопределенному свойству врага через список со статическим типом Class. - PullRequest
4 голосов
/ 02 января 2012

Мне нужно получить доступ к переменной из другого класса, и я продолжаю получать сообщение об ошибке «1119: Доступ к возможно неопределенному свойству врагуЛисту через ссылку со статическим типом Класс».Я не вижу, что я делаю неправильно, так как моя переменная сделана 'public' и 'static'.

класс, где переменная сделана.

package classes.enemy
{   
imports ...

public class Enemy extends MovieClip
{
    public static var enemyList:Array = new Array(); **
    var speed:Number;

    public function initialize()
    {
        var stageReff:Stage = this.stage as Stage;
        addEventListener("enterFrame", enterFrame);
    }

    public function Enemy() 
    {
        enemyList.push(this); **
        this.x = 700;
        this.y = Math.random()*200 + 50;
        speed = Math.random()*5 + 5;
    }

    //code
}
}

класс, которому нужен доступ кпеременная

package classes.ship 
{
imports ...

public class Bullet extends MovieClip
{
    var speed:Number;

    public function initialize()
    {
        var stageReff:Stage = this.stage as Stage;
        stage.addEventListener("enterFrame", enterFrame);
    }

    //code

    function enterFrame(e:Event):void
    {
        this.x += speed;

        trace(enemy.enemyList); **
    }
}   
}

Поместить '**' за строкой, где возникает проблема и где создается переменная, просто чтобы прояснить ситуацию.

Классы находятся в разных папках (классы> враг& classes> ship), не знаю, имеет ли это какое-либо отношение к этому.

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 29 июня 2012

Я столкнулся с той же проблемой, и решение:

имя вашего класса "враг", и когда вы обращаетесь к нему, оно остается как класс, а не объект

попытайтесь создать объектвашего класса

enemy1 = new enemy(); // in your bullet class

или, если bullet является мувиклипом, в котором враг является его дочерним мувиклипом, то измените его имя экземпляра на врага1, чтобы вы могли получить к нему доступ как к объекту своего определения класса "враг"

1 голос
/ 18 октября 2012

У меня была такая же проблема с ошибкой 1119 на as3.

Я снял волосы, а затем заметил, что появилось выходное сообщение, связанное с текстом TLF.

Итак, я пошелк действию настроек скрипта в FLA-файле и объединении в код библиотеки textlayout.

Надеюсь, это поможет.

1 голос
/ 02 января 2012

Если вы хотите получить доступ к статическому свойству, вам нужно использовать класс, в котором оно определено: Enemy.enemyList

Также убедитесь, что класс правильно импортирован в класс вашего корабля: import classes.enemy.Enemy;

0 голосов
/ 02 января 2012

Обновление 1:

Не забудьте также импортировать свой класс Enemy

Я предполагаю, что enemy в Bullet является экземпляром класса, поэтому вы не можете вызывать статическое свойство из экземпляра , вам нужно вызывать его с именем класса, где оно объявлено:

поэтому в Bullet enemy должно быть Enemy

package classes.ship {
    //...
    import enemy.Enemy;
    //...

    function enterFrame(e:Event):void
    {
     this.x += speed;
     trace(Enemy.enemyList); **
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...