我需要从另一个类访问一个变量并且我不断收到错误'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); **
}
}
}
在出现问题的行后面放置'**'以及变量出现的位置,只是为了清楚说明。
课程位于不同的文件夹中(类>敌人&类>发货),不知道是否与它有任何关系。
提前致谢。
答案 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); **
}