所以我在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();
}
}
我也会将很多怪物添加到实体中,这就是为什么它是一个阵列。
答案 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