flash as3 loader问题

时间:2010-07-18 17:39:17

标签: flash actionscript-3 loader

我要做的是使用2个不同的按钮加载2个不同的swf。

我想要发生的是当你点击按钮1它加载第一个swf并且按钮2加载第二个swf从舞台上移除任何其他swf。

我似乎遇到的问题是加载器。我似乎无法将图像加载到装载器而不将它们放在舞台上。当我尝试动态加载图像时,即使我正在使用它,也会通过在加载器中放置另一个来继续重新创建swf:

stage.removeChild(loader);
loader = new Loader();. 

有关此信息的任何帮助或教程都会很棒。

1 个答案:

答案 0 :(得分:1)

我会为您要加载的每个图像使用单独的Loader。这是一个如何实现它的快速示例:

*编辑:它正在切断软件包部分,请原谅我不了解stackoverflow的代码解析器。 *

`包
{     import flash.display.Loader;     import flash.display.Sprite;     import flash.events.Event;     import flash.events.MouseEvent;     import flash.net.URLRequest;

public class LoaderTest extends Sprite
{
    //two loaders
    private var _firstLoader:Loader = new  Loader();
    private var _secondLoader:Loader = new  Loader();

    //just assuming you already have the buttons you want setup, use these as theoretical buttons
    private var _buttonOne:Sprite;
    private var _buttonTwo:Sprite;

    public function LoaderTest() 
    {
        _firstLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
        _secondLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);  
        _firstLoader.load(new URLRequest("path/to/image.jpg"));
        _secondLoader.load(new URLRequest("path/to/image.jpg"));

        _buttonOne.addEventListener(MouseEvent.CLICK, showImage);
        _buttonTwo.addEventListener(MouseEvent.CLICK, showImage);
    }

    private function imageLoaded(e:Event):void
    {
        //do something if you want
    }

    private function showImage(e:MouseEvent):void
    {
        switch(e.target)
        {
            case _buttonOne :
                if (!contains(_firstLoader))
                {
                    if (contains(_secondLoader))
                        removeChild(_secondLoader);

                        addChild(_firstLoader);
                }
            break;
            case _buttonTwo :
                if (!contains(_secondLoader))
                {
                    if (contains(_firstLoader))
                        removeChild(_firstLoader);

                        addChild(_secondLoader);
                }
            break;              
        }
    }


}

} `