2013-11-26 4 views
1

В основном моя проблема в том, что я получил свой основной класс, у которого есть переменная, которая является объектом, содержащим мои уровни. но когда я пытаюсь добавить ребенка на сцену, я получаю сообщение об ошибке ... У меня никогда не было этой ошибки раньше, и я очень смущен. Ошибка, которую я получаю, этоActionScript 3.0 addChild throwing error

ArgumentError: Ошибка # 1063: Несоответствие счетчика аргументов на Уровнях/Икру(). Ожидаемый 0, получил 1. в flash.display :: DisplayObjectContainer/AddChild() в Main()

вот мой основной класс:

package { 

    import flash.display.MovieClip; 


    public class Main extends MovieClip { 
     public static var game:Levels = new Levels(); 

     public function Main() { 
      game = new Levels(); 
      addChild(game); //this triggers my error 
      game.y = 352; 
     } 

    } 

    } 

здесь мой мои уровни класс

package { 

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


    public class Levels extends MovieClip 
    { 

     var platforms:Array = new Array(); 

     var gravity:Number = 0; 
     var rPress:Boolean = false; 
     var lPress:Boolean = false; 

     var falling:Boolean = false; 
     var jumping:Boolean = false; 

     var velX:Number = 0; 
     var velY:Number = 0; 

     var a:int = 0; 

     public function Levels() 
     { 
      addEventListener(Event.ADDED_TO_STAGE, spawn); 
     } 
     function spawn() 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, spawn); 
      getMap(); 
      this.stage.addEventListener(KeyboardEvent.KEY_DOWN, kPress); 
      this.stage.addEventListener(KeyboardEvent.KEY_UP, kReleased); 
      this.addEventListener(Event.ENTER_FRAME, loop); 
     } 
     function getMap() 
     { 
      platforms.pop(); 
      for (var a:int = 0; a < numChildren; a ++) 
      { 
       if (getChildAt(a) is Terrain) 
       { 
        platforms.push(getChildAt(a).getRect(this)); 
       } 
      } 
     } 
     function kPress(event:KeyboardEvent) 
     { 
      if (event.keyCode == 65) 
      { 
       lPress = true; 
      } 
      if (event.keyCode == 68) 
      { 
       rPress = true; 
      } 
      if (event.keyCode == 32) 
      { 
       if (jumping == false) 
       { 
        gravity = -25; 
        jumping = true; 
       } 

      } 
     } 
     function kReleased(event:KeyboardEvent) 
     { 
      if (event.keyCode == 65) 
      { 
       lPress = false; 
      } 
      if (event.keyCode == 68) 
      { 
       rPress = false; 
      } 
     } 
     function loop(event:Event) 
     { 
      velX = 0; 

      if (rPress == true) 
      { 
       velX = 7; 
      } 
      if (lPress == true) 
      { 
       velX = -7; 
      } 
      velY = gravity; 
      _player.y += velY; 
      gravity += 2; 

      for (a = 0; a < platforms.length; a ++) 
      { 
       if (_player.getRect(this).intersects(platforms[a])) 
       { 
        if (velY > 0) 
        { 
         jumping = false; 
         _player.y = platforms[a].top - _player.height; 
         gravity = 0; 
        } 
        else if (velY < 0) 
        { 

         _player.y = platforms[a].bottom; 
         gravity = 0; 

        } 
       } 
      } 
      _player.x += velX; 
      if (rPress == true) 
      { 

       if (_player.x + _player.width/2 > 336 + x * -1 && x + width > 640) 
       { 

        x -= velX; 
       } 
      } 
      else 
      { 
       if (_player.x + _player.width/2 > 304 + x * -1 && x < 0) 
       { 

        x -= velX; 
       } 
      } 
      for (a = 0; a < platforms.length; a ++) 
      { 
       if (_player.getRect(this).intersects(platforms[a])) 
       { 
        if (velX == 7) 
        { 
         _player.x = platforms[a].x - _player.width; 
         x += velX; 
        } 
        if (velX == -7) 
        { 
          _player.x=platforms[a].x+platforms[a].width; 
         x += velX; 
        } 
       } 

      } 
     } 
    } 
     } 

ответ

1

Ваш метод spawn является обработчиком для addedToStage события так, что ожидает объект события в качестве параметра:

function spawn(event:Event) 
{ 
    removeEventListener(Event.ADDED_TO_STAGE, spawn); 
    getMap(); 
    this.stage.addEventListener(KeyboardEvent.KEY_DOWN, kPress); 
    this.stage.addEventListener(KeyboardEvent.KEY_UP, kReleased); 
    this.addEventListener(Event.ENTER_FRAME, loop); 
} 
+0

Я до сумасшедшего ........ спасибо хотя: P – Mark9135

+1

Легкая ошибка! Не забудьте принять ответ, если он поможет вам. –