在AS3中的舞台属性上使用空引用时出现问题

时间:2011-09-07 02:52:34

标签: actionscript-3 flash-builder flash-cs5

我正在Flash中创建一个网站,用flashbuilder编码。每当我尝试导出我的代码时,我会一次又一次地得到相同的错误(TypeError =见下文)。

我认为这个问题与我的项目阶段有关。每当我将var stageMiddenX = (stage.stageWidth / 2);更改为var stageMiddenX = 512;时,代码都会正常运行。但我不认为var是动态的。

  

类型错误   错误#1009:无法访问main()

中的空对象引用的属性或方法
package {
import flash.display.MovieClip;

  public class main extends MovieClip{
    var stageMiddenX = (stage.stageWidth / 2);
    var stageMiddenY = (stage.stageHeight / 2);
    private var object1:Object1 = new Object1();
    private var object2:Object2 = new Object2();
    private var object3:Object3 = new Object3();
  }
}

2 个答案:

答案 0 :(得分:6)

此处的问题是,stage在您请求时尚未提供。

在尝试访问Event.ADDED_TO_STAGE之前,您需要等到stage事件被触发。

package {
    import flash.display.MovieClip;

    public class main extends MovieClip{
        private var object1:Object1 = new Object1();
        private var object2:Object2 = new Object2();
        private var object3:Object3 = new Object3();
        private var stageMiddenX:Number;
        private var stageMiddenY:Number;

        public function main(){
            if(stage) init(null);
            else addEventListener(Event.ADDED_TO_STAGE, init)
        }

        private function init(e:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            stageMiddenX = (stage.stageWidth / 2);
            stageMiddenY = (stage.stageHeight / 2);
        }
    }
}

答案 1 :(得分:1)

将访问阶段的东西放入构造函数中(假设这是您的文档类)..

package
{
    import flash.display.MovieClip;

    public class main extends MovieClip
    {
        public var stageMiddenX:int;
        public var stageMiddenY:int;

        private var object1:Object1 = new Object1();
        private var object2:Object2 = new Object2();
        private var object3:Object3 = new Object3();

        public function main()
        {
            stageMiddenX = stage.stageWidth / 2;
            stageMiddenY = stage.stageHeight / 2;
        }
    }
}