Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何从实例化的子类将外部swf加载到主阶段?_Actionscript 3_Reference_Flash_Load_Loader - Fatal编程技术网

Actionscript 3 如何从实例化的子类将外部swf加载到主阶段?

Actionscript 3 如何从实例化的子类将外部swf加载到主阶段?,actionscript-3,reference,flash,load,loader,Actionscript 3,Reference,Flash,Load,Loader,我试图获得一个类的实例来加载一个外部swf并显示它。 到目前为止,我有以下几点: 1) 我编写了一个类,它使用Loader类来加载外部swf“loadExtSWF”。 2) 我有一个名为“MainSWF.fla”的fla,它使用一个文档类“MainSWF.as”。 3) 我有MainSWF.as文件,它引用“loadExtSWF”并调用loadExtSWF.startoad来加载swf 这几乎奏效了。loadExtSWF实例加载外部swf,但不显示swf 如果我将fla的document类替换为

我试图获得一个类的实例来加载一个外部swf并显示它。 到目前为止,我有以下几点: 1) 我编写了一个类,它使用Loader类来加载外部swf“loadExtSWF”。 2) 我有一个名为“MainSWF.fla”的fla,它使用一个文档类“MainSWF.as”。 3) 我有MainSWF.as文件,它引用“loadExtSWF”并调用loadExtSWF.startoad来加载swf

这几乎奏效了。loadExtSWF实例加载外部swf,但不显示swf

如果我将fla的document类替换为loadExtSWF(这有一个空的构造函数)而不是MainSWF,并运行loadExtSWF.startLoad,则会加载并显示外部swf

我最初的做法似乎将swf加载到了错误的阶段(?)

有什么想法吗?谢谢你的帮助

再见, 拉米

附言

如果将test_tscreen的文档类从test_tscreen.as替换为tsscreen.as,并删除test_tscreen的构造函数中的注释,则将加载swf

我的代码是:

文件test_as3.swf 外部as3 swf文件

文件test_tscreen.fla fla为空,引用test_tscreen.as作为其文档类

文件test_tscreen.as 文件TSScreen.as
正如有时发生的那样,问这个问题可以找到你的答案。在阅读了手册之后,我再次看到,一旦在AS3中添加了新的swf,就需要将新的DisplayObject作为子对象添加到现有DisplayObjectContainer中的现有DisplayObject中

所以,我遇到的问题是,我正确加载了外部swf,但没有将其添加到显示列表中,因此它没有显示

下面是我前面引用的代码块的固定版本

test_tscreen.as 包装{

import flash.display.MovieClip;
import TSScreen;

public class test_tsscreen extends MovieClip{
    var tsScreen1:TSScreen;

    public function test_tsscreen(){
        tsScreen1 = new TSScreen(10,10,100,100,0.5,0);
        //tsScreen1 = new TSScreen();
        this.addChildAt(tsScreen1,1);
    }
}
}

TSScreen.as 包装{ 导入flash.display.MovieClip

import flash.display.*;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;

import flash.display.Loader;
import flash.events.Event;
import flash.events.ProgressEvent;  

public class TSScreen extends MovieClip {
    private var _xPos:int;
    private var _yPos:int;
    private var _width:int;
    private var _height:int;
    private var _xScale:int;
    private var _yScale:int;

    private var _visible:Boolean;
    private var _alpha:Boolean;
    private var _shadow:Boolean;
    private var _backgroundColor:uint;
    private var _rotation:Boolean;

    private var _displayTime:int;


    public function TSScreen():void{
        startLoad();
    }


    function startLoad() {
        var mLoader:Loader = new Loader();
        var mRequest:URLRequest = new URLRequest("C:/FlashProjects/test_as3.swf");

        mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
        mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
        addChild(mLoader);
        mLoader.load(mRequest);
    }

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

    function onProgressHandler(mProgress:ProgressEvent) {
        var percent:Number = mProgress.bytesLoaded/mProgress.bytesTotal;
        trace(percent);
    }


}
}

如果您想了解更多的信息,请参阅《FrasFaseFraseActionScript 3与Flash CS3》的第04章,该书包含了对本课题的有益介绍。


希望这能帮助其他人解决同样的问题。

与本书相关的有用资源是Ed之友的下载页面请查看zip文件中的资源文件,以了解第04章
import flash.display.MovieClip;
import TSScreen;

public class test_tsscreen extends MovieClip{
    var tsScreen1:TSScreen;

    public function test_tsscreen(){
        tsScreen1 = new TSScreen(10,10,100,100,0.5,0);
        //tsScreen1 = new TSScreen();
        this.addChildAt(tsScreen1,1);
    }
}
import flash.display.*;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;

import flash.display.Loader;
import flash.events.Event;
import flash.events.ProgressEvent;  

public class TSScreen extends MovieClip {
    private var _xPos:int;
    private var _yPos:int;
    private var _width:int;
    private var _height:int;
    private var _xScale:int;
    private var _yScale:int;

    private var _visible:Boolean;
    private var _alpha:Boolean;
    private var _shadow:Boolean;
    private var _backgroundColor:uint;
    private var _rotation:Boolean;

    private var _displayTime:int;


    public function TSScreen():void{
        startLoad();
    }


    function startLoad() {
        var mLoader:Loader = new Loader();
        var mRequest:URLRequest = new URLRequest("C:/FlashProjects/test_as3.swf");

        mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
        mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
        addChild(mLoader);
        mLoader.load(mRequest);
    }

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

    function onProgressHandler(mProgress:ProgressEvent) {
        var percent:Number = mProgress.bytesLoaded/mProgress.bytesTotal;
        trace(percent);
    }


}