AS3错误#1009无法访问... null对象引用

时间:2011-04-02 22:34:12

标签: flash actionscript-3 classloader

您好我在某个窗口上将外部.swf放入我的.fla但是我遇到以下错误:

TypeError:错误#1009:无法访问空对象引用的属性或方法。     在TestingOne / createPlayer()     在TestingOne()

我尝试将其放入外部.swf但没有成功 -

       {
        stage.addEventListener(Event.ADDED_TO_STAGE, init);
        }

我在动作图层框架中添加了以下内容:

stop();

function RoachWarsGame2(){
     loadPlayer()
   }

function loadPlayer(){
    var my_loader:Loader = new Loader();
    my_loader.load(new URLRequest("TestingOne.swf"));
    addChild(my_loader);
    my_loader.x = -320.95;
    my_loader.y = -485.95;
}

但我没看到比赛。什么都没有显示出来。有人可以给我一个解决方案吗?谢谢....

londonbird

1 个答案:

答案 0 :(得分:1)

取下听众的舞台部分,它应该有效。

你做的是要求flash告诉你该对象何时完成创建并已添加到显示列表中。因此,现在可以安全地操纵你的内心。

说stage.add~打败了目的。

编辑:你真的需要在swf中加载ADDED_TO_STAGE。这是您尝试使用它之前100%确定它已加载的唯一方法。

基本上它应该如何运作......

首先我们制作的外部swf,我们将加载进行测试。

package src 
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class ExternalSWFDocumentClass extends Sprite
    {
        public function ExternalSWFDocumentClass() 
        {
            addEventListener(Event.ADDED_TO_STAGE, initializeThisClass);
        }

        private function initializeThisClass(e:Event):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, initializeThisClass);

            // I am now added to the display list. Have fun.
            // Now when Some other swf loads me up I will know
            // for sure I have access to the stage etc.

            // Below this is for testing
            var sp:Sprite = new Sprite();
            sp.graphics.clear();
            sp.graphics.lineStyle(1, 0);
            sp.graphics.beginFill(0xccccff);
            sp.graphics.drawCircle(0, 0, 20);
            sp.graphics.endFill();

            sp.x = stage.stageWidth * 0.5;
            sp.y = stage.stageHeight * 0.5;
            addChild(sp);
        }
    }
}

既然你说你想要从FLA文件中加载它,你可以这样做。

import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;

var loader:Loader = new Loader();
var file:URLRequest = new URLRequest("externalSWFTest.swf");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteLoad);

loader.load(file);

function onCompleteLoad (loadEvent:Event):void
{
    addChild(loadEvent.currentTarget.content);
}

编辑:再次阅读你的帖子让我觉得这可能不是问题。考虑到你得到的错误,它可能是其他东西。没有理由addChild加载器或设置它的x和y属性。