Actionscript 3 类型错误1009 AS3

Actionscript 3 类型错误1009 AS3,actionscript-3,Actionscript 3,我已经一遍又一遍地查看了这段代码,但似乎找不到问题的根源。以下是错误消息: "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\s

我已经一遍又一遍地查看了这段代码,但似乎找不到问题的根源。以下是错误消息:

"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类中,因为它是下载的,在任何情况下都没有更改(并且以前已经工作过),但下面是这段代码(请注意行所在的标记):

动态公共类KeyObject扩展代理{
私有静态var阶段:阶段;
私有静态var-keysDown:对象;
公共函数键对象(阶段:阶段){

构造(stage);引擎类实例正在构造中,此时stage属性仍然为null。这意味着引擎类实例尚未添加到显示列表中


请参阅:

您的代码在事件之前执行。已添加的\u到\u阶段事件被激发,这就是阶段为空的原因。首先将addeventListener添加到此事件,然后在此事件的事件处理程序中编写当前位于Engine类构造函数中的代码。
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);