Flash AS3 Loadmovie错误#1009 - 外部AS文件

时间:2014-05-01 13:33:17

标签: actionscript-3 flash

我们在Flash中创建了一个使用外部actionscript文件的程序。

我正在尝试在另一个Flash文件中加载/导入此swf但是我收到了'错误#1009:无法访问空对象引用的属性或方法'

我知道这是我的外部.as文件中的引用,但我不知道如何解决这个问题

这是我加载(和缩放)swf的代码

var ld:Loader = new Loader();
addChild(ld);
ld.load(new URLRequest("tatton.swf"));
ld.contentLoaderInfo.addEventListener(Event.COMPLETE,function(evt) {
     var mc = evt.target.content;
     mc.scaleX=0.7031;
     mc.scaleY=0.7031;
});

有人有什么想法吗?

由于

编辑:这是完整的错误代码:TypeError:错误#1009:无法访问空对象引用的属性或方法。在Tatton()

以下是我的.as文件代码:

package
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.utils.setTimeout;
    import flash.utils.clearTimeout;
    import flash.utils.getDefinitionByName;

    public class Tatton extends MovieClip
    {
        public var active_clip:MovieClip;
        public var to:Number;

        public function Tatton()
        {
            // Create empty vector of movieclips;
            stage.addEventListener(MouseEvent.CLICK, reset_timeout);
            init();
        }

        public function reset_timeout(e:Event = null)
        {
            clearTimeout(to);
            // 3 mins
            to = setTimeout(fire_timeout, 150 * 1000);
        }

        public function fire_timeout():void
        {   
            // Reset the system (and run attractor) if we're not on the attractor already.
            if ( !(active_clip is Attractor))
            {
                init();
            }
        }

        public function init()
        {
            // Reset globals
            Globals.skip_menu_anim = false;
            Globals.skip_staff_menu = false;

            load_movie("Attractor");
            reset_timeout();
        }

        public function load_movie(name:String):void
        {
            if (active_clip is MovieClip)
            {
                kill_active_movie();
            }

            active_clip = createInstance(name);
            addChild(active_clip);
            active_clip.startup();
        }

        public function kill_active_movie():void
        {
            active_clip.shutdown();
            removeChild(active_clip);
            active_clip = null;

        }
        public function createInstance(className:String):Object
        {
            var myClass:Class = getDefinitionByName(className) as Class;
            var instance:Object = new myClass();
            return instance;
        }
    }

}

2 个答案:

答案 0 :(得分:1)

试试这个

public function Tatton() {

    addEventListener(Event.ADDED_TO_STAGE, stageAvailable);
}

private function stageAvailable(e:Event = null) {

    removeEventListener(Event.ADDED_TO_STAGE, stageAvailable);

    // Create empty vector of movieclips;
    stage.addEventListener(MouseEvent.CLICK, reset_timeout);
    init();
}

参考this文章了解原因

答案 1 :(得分:0)

在调用Loader.load之后需要添加事件侦听器,因为在调用load之前,contentLoaderInfo为null。