在访问我的实例字段AS3时遇到问题

时间:2016-06-05 19:04:01

标签: arrays actionscript-3

我有一个动态文本字段,实例名称为hiscoreFirstPlayer。我的目标是能够通过数组访问我的所有实例。因此,我决定创建一个数组并尝试访问它:

package {
    import flash.display.*;
    import flash.events.*;
    import flash.ui.*;

    private var hiscore:Array = [hiscoreFirstPlayer];

    class Game extends MovieClip {
        //Return null
        trace(hiscore[0]);

        //TypeError: Error #1009: Cannot access a property or method of a null object reference.
        hiscore[0].text = "1000";

        //Return 0
        trace(hiscoreFirstPlayer);

        //Return 1000
        hiscoreFirstPlayer.text = "1000";
        trace(hiscoreFirstPlayer);
    }
}

那么通过数组访问我的实例的正确方法是什么,而不返回空值。似乎当我放入数组时,就像我正在创建一个新对象并分配给变量,从而产生一个空对象。

2 个答案:

答案 0 :(得分:1)

看起来像变量声明放置问题 在类中声明varible。

package {
    import flash.display.*;
    import flash.events.*;
    import flash.ui.*;

    //private var hiscore:Array = [hiscoreFirstPlayer];

    class Game extends MovieClip {

        private var hiscore:Array = [hiscoreFirstPlayer];

        trace(hiscore[0]);

        hiscore[0].text = "1000";
    }
}

我认为,除了import语句,include语句,use指令和元数据之外,基本上几乎应该在类中描述代码。

答案 1 :(得分:0)

首先,我会像这样实例化Array类(个人偏好,我知道它有效):

private var hisscoreFirstPlayer:Array = new Array();

要向数组添加元素,请使用push方法。像这样:

var p1score: uint;
p1score = 1000; 
// push adds to the top of the stack
hiscoreFirstPlayer.push(p1score); 

进一步了解使用数组。查看推,弹出,移位和不移位,拼接只是一个好的开始(看here)。如你所见,这只是一个玩家1分数的数组。然后可以通过调用

来访问播放器1
hiscoreFirstPlayer[0];

但我会将数组名称更改为allHiScores。然后你可以将所有玩家的高分添加到一个阵列,并可能像这样调用玩家的高分:

allHiScores[n-1];