2011-12-28 4 views
1

Это может быть простой вопрос, но я пытаюсь получить доступ к кнопке внутри внешнего swf-файла, который я загрузил. Проблема в том, что каждый раз, когда я пытаюсь получить доступ к этой кнопке, я получаю сообщение об ошибке, указывающее на то, что оно равно нулю!Доступ к кнопке внутри загруженного 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

EDIT: здесь отредактированный код

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); 


    } 

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

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

ответ

3

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

  1. Вы не дожидаясь швейцарских франков для загрузки, прежде чем пытаться получить доступ к кнопке.
  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); 
} 

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

+0

Не работает. Но я думаю, что проблема связана с моим загруженным SWF, а не с самим кодом. Не знаю, почему, но «кнопка» не найдена в содержимом загрузчика. Я убедился, что имя экземпляра действительно «кнопка», но оно все еще не может его найти. Любые идеи, почему? Возможно, я экспортирую swf-файл неправильно, использую flash pro для экспорта movieClip, который содержит экземпляр кнопки с именем «кнопка». Я что-то упустил? – r3x

Смежные вопросы