вопрос загрузчика flash as3 - PullRequest
1 голос
/ 18 июля 2010

Я пытаюсь загрузить 2 разных SWF с помощью 2 разных кнопок.

Я хочу, чтобы, когда вы нажимаете кнопку 1, она загружает первый SWF, а кнопка 2 загружает второй SWF, удаляя любой другой SWF со сцены первым.

Проблема, с которой я, похоже, сталкиваюсь, связана с загрузчиком. Я не могу загрузить изображения в загрузчик, не ставя их на сцену. И когда я пытаюсь загрузить изображения динамически, он продолжает воссоздавать SWF, помещая еще один в загрузчик, хотя я использую:

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

Любая помощь или учебники по этой информации были бы великолепны.

1 Ответ

1 голос
/ 28 января 2011

Я бы использовал отдельные загрузчики для каждого изображения, которое вы хотите загрузить. Вот краткий пример того, как вы могли бы это реализовать:

* edit: Это отрезает часть пакета, пожалуйста, прости меня за непонимание парсера кода stackoverflow. *

`пакет
{ импорт flash.display.Loader; импорт flash.display.Sprite; импорт flash.events.Event; импорт 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;              
        }
    }


}

} `

...