2014-12-02 102 views
0

我正在开发一款小游戏,并取得了一些成功。 我遇到了一些问题,并设法解决它们(我认为),但这一个困扰着我。 游戏正在工作,但它引发了上面的错误,我想解决。 任何人都可以提供任何建议如何解决这个问题? 我相信这是这条线(因为当我发表评论时,错误不会发生),但花了最近两个小时试图用各种方式解决它,没有喜乐。如何解决“类型错误#2007参数子必须非空”?

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

如果有人能指出方式会有很大帮助。 我尝试了谷歌搜索,但我的脑海里试图这样做。 我错过了什么?

难道问题是我在时间轴上有两层包含动画? (我只是这样做,因为我不知道如何通过动作单独添加它们)。

我附上了下面的完整代码。请记住,我仍在学习,所以请温柔。 :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 
       } 


      } 
     } 

    } 
} 

}

任何帮助将不胜感激。

+0

你尝试改变“为”从“我<= 20”到“I <20条件“? – Crabar 2014-12-02 15:24:38

+0

我也尝试过,它也可以。谢谢。我一直忘记,一切从零开始,不是1! – ZombieDude 2014-12-08 11:37:47

回答

-1

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

... 

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

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

} 

... 
+0

啊,我明白了。好的,使用toyArray.length命令更加准确。 现在错误消失了。 谢谢你。 我是否理解它试图添加另一个孩子,但找不到要添加的孩子? 试图了解它为什么发生,所以我希望能够从中学习。 – ZombieDude 2014-12-02 15:59:13

+0

@ ZombieDude就是这样,第21个孩子不存在,这就是为什么你有错误。 – akmozo 2014-12-02 16:07:41

+0

太棒了,谢谢。 我会在将来留意这类错误。 我会upvote你,但我不够高的水平。一旦我到了,我会回来,并提出你的答案。 谢谢。 :) – ZombieDude 2014-12-02 16:13:28

相关问题