如何解决“类型错误#2007参数child必须为非null”?

时间:2014-12-02 15:19:47

标签: actionscript-3 actionscript

我正在进行一场小型比赛并且取得了一些成功。 我遇到了一些问题,并设法解决了这些问题(我想),但这个问题让我很难过。 游戏正在运行,但它会引发上述错误,我想解决。 有人可以就如何解决这个问题提供任何建议吗? 我确信这就是这一行(因为当我评论它时错误没有发生)但是花了最后两个小时尝试了各种方法来解决它而没有任何快乐。

for (var i:int = 0;i <=20;i++)
        {
            addToys(1200 * Math.random(), 200 * Math.random() * 2);                 
        }

如果有人能指出它会帮助很多的方式。 我尝试使用谷歌搜索,但我的想法是尝试这样做。 我错过了什么?

问题是我在时间轴上有两个包含动画的图层吗? (我只是这样做,因为我无法想象如何通过actionscript单独添加它们。)

我已附上以下完整代码。 请记住我还在学习,所以请保持温柔。 :d

package  {

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;


public class MyGame extends MovieClip {


    public function MyGame() {


        const BG_SPEED:int = 5;
        const BG_MIN:int =  -550;
        const BG_MAX:int = 0;

        var bg:BackGround = new BackGround; 

        var toy1:Toy1 = new Toy1;
        var toy2:Toy2 = new Toy2;
        var toy3:Toy3 = new Toy3;
        var toy4:Toy4 = new Toy4;
        var toy5:Toy5 = new Toy5;
        var toy6:Toy6 = new Toy6;
        var toy7:Toy7 = new Toy7;
        var toy8:Toy8 = new Toy8;
        var toy9:Toy9 = new Toy9;
        var toy10:Toy10 = new Toy10;
        var toy11:Toy11 = new Toy11;
        var toy12:Toy12 = new Toy12;
        var toy13:Toy13 = new Toy13;
        var toy14:Toy14 = new Toy14;
        var toy15:Toy15 = new Toy15;
        var toy16:Toy16 = new Toy16;
        var toy17:Toy17 = new Toy17;
        var toy18:Toy18 = new Toy18;
        var toy19:Toy19 = new Toy19;
        var toy20:Toy20 = new Toy20;

        var toyArray:Array = new Array();
        toyArray.push(toy1);
        toyArray.push(toy2);
        toyArray.push(toy3);
        toyArray.push(toy4);
        toyArray.push(toy5);
        toyArray.push(toy6);
        toyArray.push(toy7);
        toyArray.push(toy8);
        toyArray.push(toy9);
        toyArray.push(toy10);
        toyArray.push(toy11);
        toyArray.push(toy12);
        toyArray.push(toy13);
        toyArray.push(toy14);
        toyArray.push(toy15);
        toyArray.push(toy16);
        toyArray.push(toy17);
        toyArray.push(toy18);
        toyArray.push(toy19);
        toyArray.push(toy20);

        addChildAt(bg, 0);          




        stage.addEventListener(Event.ENTER_FRAME, bgScroll);

        function addToys(xpos, ypos)
        {               
            addChild(toyArray[i]);
            toyArray[i].x = xpos;
            toyArray[i].y = ypos;                               
        }

    for (var i:int = 0;i <=20;i++)
        {
            addToys(1200 * Math.random(), 200 * Math.random() * 2);                 
        }

    function bgScroll (e:Event)
        {
            if (stage.mouseX > 600 && bg.x > BG_MIN)
            {
                bg.x -= BG_SPEED;       

                for (var i:int=0; i< toyArray.length; i++)
                {
                (toyArray[i] as MovieClip).x -=BG_SPEED
                }

            }
            else if (stage.mouseX < 50 && bg.x < BG_MAX)
            {
                bg.x += BG_SPEED;
                for (var j:int=0; j< toyArray.length; j++)
                {
                (toyArray[j] as MovieClip).x +=BG_SPEED
                }


            }
        }

    }
}

}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:-1)

你的for循环做21次迭代,但你的数组只有20个元素,所以你应该这样做:

...

for (var i:int = 0; i < toyArray.length; i++){

    addToys(1200 * Math.random(), 200 * Math.random() * 2)

}

...