AS3 - 错误1119:通过具有静态类型Class的引用访问可能未定义的属性enemyList。

时间:2012-01-02 01:17:02

标签: actionscript-3

我需要从另一个类访问一个变量并且我不断收到错误'1119:通过带有静态类型Class的引用访问可能未定义的属性enemyList。我无法看到我做错了什么,因为我的变量是'公共'和'静态'。

变量的类。

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

在出现问题的行后面放置'**'以及变量出现的位置,只是为了清楚说明。

课程位于不同的文件夹中(类>敌人&类>发货),不知道是否与它有任何关系。

提前致谢。

4 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,解决方案是:

你的班级名称是“敌人”,当你访问它时,它仍然是类而不是对象

尝试制作班级的对象

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

或者如果bullet是一个动画片段,其中敌人作为其子动画片段,则将其实例名称更改为enemy1,以便您可以将其作为其自己的类别定义“敌人”的对象进行访问

答案 1 :(得分:1)

如果要访问静态属性,则需要使用其定义的类:Enemy.enemyList

同时确保在您班级的班级中正确导入班级:import classes.enemy.Enemy;

答案 2 :(得分:1)

我在as3上遇到了与错误1119相同的问题。

我脱掉了头发,然后我注意到有一条与TLF文本有关的输出信息。

所以我去了FLA文件的动作脚本设置,并将其合并到textlayout库的代码中。

希望这有帮助。

答案 3 :(得分:0)

更新1:

不要忘记导入课程Enemy

我认为enemy中的Bullet是一个类实例,所以你不能从实例中调用静态属性你需要用类名调用它声明的地方:

因此,子弹enemy应为Enemy

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

    function enterFrame(e:Event):void
    {
     this.x += speed;
     trace(Enemy.enemyList); **
    }