由于文本为空,程序崩溃。 [AS3]

时间:2014-05-20 05:12:08

标签: arrays actionscript-3

[Fault] exception, information=TypeError: Error #2007: Parameter text must be non-null.

大家好,我在重启程序时遇到此错误。

在主课程中我有这些变量

    //random
    private var colourArray:Array = new Array("Red","Yellow","Green");
    private var len:int = colourArray.length - 1;
    private var rand:int;
    private var randomItem:String;      
    private var myText:TextField;

然后我有一个只有胸部碰撞功能的循环

    private function Collision():void 
    {
        if (randomItem == ("Red"))
        {
            if (player.hitTestObject(red))
            {
                changeColor();
                red.removeMe();
            }
        }
        else
        if (randomItem == ("Yellow"))
        {
            if (player.hitTestObject(yellow))
            {
                changeColor();
                yellow.removeMe();
            }               

        }
        else
        if (randomItem == ("Green"))
        {
            if (player.hitTestObject(green))
            {
                changeColor();
                green.removeMe();
            }               
        }
    }

    private function changeColor():void 
    {
        var item:String = colourArray[rand];
        colourArray[rand] = colourArray[len];
        colourArray[len] = item;
        len--;
        randomItem = colourArray[rand];
        myText.text = randomItem;

        if (len < 0) 
        { 
            removeChild(player);
            removeChild(myText);

            colourArray.push("Red");
            removeEventListener(Event.ENTER_FRAME, gameLoop)
            addEventListener(Event.ENTER_FRAME, checkClicks)
            gotoAndStop(1);
        }

    }

当我尝试重新启动程序时,它不喜欢;

            randomItem = colourArray[rand];

出于某种原因。

我已经重新填充了数组,但我不明白。

谢谢。

如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:1)

在更改阵列之前,您必须将colourArray[rand]存储在其他位置。你正在降低它的长度,然后你从数组中查询元素,所以如果你的rand指向最后一个元素,它会被踢出数组并被NULL替换,然后你再次查询数组 - 程序说你好NULL,我恐慌。您已将该值存储在item变量中,但不要将其用于某些奇怪的原因。修复方法是将randomItem = colourArray[rand];替换为randomItem = item;