Доступ к кнопке внутри загруженного SWF-файла? - PullRequest
1 голос
/ 28 декабря 2011

Это может быть простой вопрос, но я пытаюсь получить доступ к кнопке во внешнем SWF-файле, который я загрузил. Проблема в том, что каждый раз, когда я пытаюсь получить доступ к этой кнопке, я получаю сообщение о том, что она пуста!

Есть идеи, почему это происходит? Я попытался найти похожие посты и нашел некоторые, но эта проблема все еще сохраняется

Вот мой код:

public class DocumentClass extends Sprite
{
    public var loader:Loader;
    public var swfFile:URLRequest;
    public var container:MovieClip;

    public function DocumentClass() 
    {
        super();

        // support autoOrients
        stage.align = StageAlign.TOP_LEFT;
        stage.scaleMode = StageScaleMode.NO_SCALE;

        loader = new Loader();
        swfFile = new URLRequest("swfs/TestScreen.swf");

        loader.load(swfFile);
        addChild(loader);

        button.addEventListener( MouseEvent.CLICK, onClickReturnMainMenu ); // PROBLEM HERE




    }

    private function onClickReturnMainMenu( event:MouseEvent ):void
    {
        trace("TEST-TEST");
    }

Спасибо = D

РЕДАКТИРОВАТЬ: вот отредактированный код

public class DocumentClass extends Sprite
{
    public var loader:Loader;
    public var swfFile:URLRequest;
    public var container:MovieClip;

    public function DocumentClass() 
    {
        super();

        // support autoOrients
        stage.align = StageAlign.TOP_LEFT;
        stage.scaleMode = StageScaleMode.NO_SCALE;

        loader = new Loader();
        swfFile = new URLRequest("swfs/TestScreen.swf");

        loader.load(swfFile);

        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);




    }

    private function onClickReturnMainMenu( event:MouseEvent ):void
    {
        trace("ASDSADSADSAD");
        //dispatchEvent( new ButtonEvent( ButtonEvent.MAINMENU ) );
    }


    private function onLoadComplete(evt:Event):void
    {
        addChild(loader);

        var button:SimpleButton = loader.content.button
        button.addEventListener(MouseEvent.CLICK, onClickReturnMainMenu);   


    }

Теперь это должно работать, с точки зрения кода, я думаю, это правильно. Проблема в том, что загрузчик не может найти нужную кнопку. В загруженном мувиклипе действительно есть кнопка с именем экземпляра «кнопка», я дважды проверил это ... Есть предложения, ребята?

РЕДАКТИРОВАТЬ2 наконец-то все заработало благодаря этому http://www.kirupa.com/forum/showthread.php?301313-Accessing-MC-instances-inside-loaded-SWF по сути, я был просто слишком большим слоем, и именно поэтому я не мог получить доступ к чему-либо ... ТАК ГЛУПОЙ МЕНЯ ... . по крайней мере, теперь все кончено. Спасибо за помощь, ребята = D

1 Ответ

3 голосов
/ 28 декабря 2011

У вас есть 2 проблемы здесь ...

  1. Вы не ждете загрузки SWF, прежде чем пытаетесь получить доступ к кнопке.
  2. Ваш метод доступакнопка неверна.

Сначала вам нужно добавить Event.COMPLETE слушатель к loader.contentLoaderInfo:

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);

Затем вам нужно создать обработчик события:

protected function onLoadComplete(evt:Event):void
{
    var button:SimpleButton = loader.content.button;
    button.addEventListener(MouseEvent.CLICK, onClickReturnMainMenu);
}

Это должно сделать это для вас, при условии, что ваша кнопка находится в корне загруженного фильма с именем экземпляра «button».

...