2014-01-09 3 views
0

Я просматривал этот код снова и снова, но просто не мог найти, где проблема коренится. Вот сообщение об ошибке:TypeError 1009 AS3

"TypeError: Error #1009: 
at com.senocular.utils::KeyObject/construct()[C:\Users\nti\Desktop\Ship game\com\senocular\utils\KeyObject.as:29] 
at com.senocular.utils::KeyObject()[C:\Users\nti\Desktop\Ship game\com\senocular\utils\KetyObject.as:23] 
at com.asgamer.basics1::Ship()[C:\Users\nti\Desktop\Ship game\com\asgamer\basics1\Ship.as:24] 
at com.asgamer.basics1::Engine()[C:\Users\nti\Desktop\Ship game\com\asgamer\basics1\Engine.as:17] 
" 

Это, конечно, не в классе KeyObject, так что это скачал и не изменен ни в одном (и работал раньше), но вот что фрагмент кода в любом случае (обратите внимание на маркеры, где линии):

dynamic public class KeyObject extends Proxy { 

    private static var stage:Stage; 
    private static var keysDown:Object; 

    public function KeyObject(stage:Stage) { 
     construct(stage); <---------------------------------------------LINE 23 
    } 

    public function construct(stage:Stage):void { 
     KeyObject.stage = stage; 
     keysDown = new Object(); 
     stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); <--- LINE 29 
     stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased); 
    } 

Вот часть кода, который вызывает ошибку:

package com.asgamer.basics1 
{ 

    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import com.senocular.utils.KeyObject; 
    import flash.ui.Keyboard; 
    import flash.events.Event; 

    public class Ship extends MovieClip 
    { 

     private var stageRef:Stage; 
     private var key:KeyObject; 
     private var speed:Number = 0.5; 
     private var vx:Number = 0; 
     private var vy:Number = 0; 
     private var friction:Number = 0.93; 
     private var maxspeed:Number = 8; 

     public function Ship(stageRef:Stage) 
     { 
      this.stageRef = stageRef; 
      key = new KeyObject(stageRef); <----------------------------- LINE 24 

      addEventListener(Event.ENTER_FRAME, loop, false, 0, true); 
     } 

и вот класс двигателя:

package com.asgamer.basics1 
{ 
    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.events.Event; 

    public class Engine extends MovieClip 
    { 

     private var numStars:int = 80; 
     private var enemyList:Array = new Array(); 
     private var ourShip:Ship; 


     public function Engine() : void 
     { 
      ourShip = new Ship(stage); <------------------------------- LINE 17 
      ourShip.x = stage.stageWidth/2; 
      ourShip.y = stage.stageHeight/2; 

      stage.addChild(ourShip); 



      for (var i:int = 0; i < numStars; i++) 
      { 
       stage.addChildAt(new Star(stage), stage.getChildIndex(ourShip)); 
      } 

      addEventListener(Event.ENTER_FRAME, loop, false, 0, true); 

Я бы очень признателен, если кто-то ответит, поскольку этот проект имеет решающее значение для моих окончательных оценок!

+0

Ваш код выполняется до того события Event.ADDED_TO_STAGE обжигают, поэтому этап проходит нуль. Первый addeventListener для этого события, а затем в обработчике события этого события напишите код, который в настоящее время находится в конструкторе класса Engine. – Sumit

ответ

Смежные вопросы