Flash访问未定义的属性

时间:2014-05-30 17:40:51

标签: arrays actionscript-3 flash

所以我在flash中制作我的第一个游戏(更像是转换为flash,已经在JS中使用它)。我收到了这个错误:

"access of undefined property item"

我不明白为什么。

addEventListener(Event.ENTER_FRAME, onEnterFrame);

var Entities:Array = new Array();

//Create player
var Player = new Character();
Player.x = stage.stageWidth / 2 - Player.radius;
Player.y = stage.stageHeight / 2 - Player.radius;

Entities.push(Player);
stage.addChild(Player);

function onEnterFrame(event:Event):void
{   
    for each (item in Entities)
    {
        item.update();
    }
}

我也会将很多怪物添加到实体中,这就是为什么它是一个阵列。

1 个答案:

答案 0 :(得分:1)

错误是因为您正在引用名为item的变量,但您尚未将其定义到编译器。

for each (item in Entities)

定义(var)item,您将不再收到错误:

for each (var item:Character in Entities)

我建议使用Vector而不是Array(它们基本相同,除了在Vector中每个对象都必须是定义的类型。然后你不会必须为编译器强制转换,以了解数组中的对象类型。

var Entities:Vector.<Character> = new Vector.<Character>();

如果继续使用Array - 您需要转换项目以便在没有编译器错误的情况下访问其属性/方法。

Character(item).update(); //since items in arrays are just stored as objects, you need to tell AS3 that this item is a Player class