Управление Flex-приложением из встроенного Flash-управления - PullRequest
1 голос
/ 21 марта 2010

У меня есть приложение flex, и я встроил в него флэш-файл (SWF), используя <mx:SWFLoader>.В файле Flash есть кнопка «Выход».Я хочу иметь возможность обрабатывать событие нажатия кнопки в приложении Flex.

Поэтому, когда нажимается эта кнопка во флэш-файле, я хочу выполнить действие в родительском приложении Flex.Как я могу это сделать?Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Вы можете сделать это, используя Loader Class в AS3 (в скрипте flex). Даже ты можешь делать это динамически. в MXML

<mx:SWFLoader id="myLoader" width="500" source="swf/kabin42.swf"
                          complete="initSwf();"/>


private function initNestedAppProps2():void {
    var loadedMc:MovieClip = MovieClip(myLoader.content);
    loadedMc= MovieClip(myLoader2.content);
    //access the button with instance name myButton:
    loadedMc.myButton.addEventListener(MouseEvent.CLICK, onBtnClick);   
}

private function onBtnClick(event:MouseEvent):void{
    Alert.show("button clicked 2");
}

При нажатии на myButton вызывается метод обработчика события onBtnClick. я надеюсь, это решит вашу проблему ..

0 голосов
/ 21 марта 2010

Вы можете сделать это, если событие от вспышки «пузырьков». Когда вы отправляете событие из Flash, сделайте следующее:

dispatchEvent(new Event("myEventName", true)); // that 'true' for bubbles, in the constructor

Тогда вы сможете без проблем захватить его во Flex:

addEventListener("myEventName", handler);

... до тех пор, пока addEventListener вызывается для компонента на или выше SWFLoader.

Если вы не можете изменить Flash SWF или это полный черный ящик, тогда вы можете просто зарегистрировать обработчик MouseEvent.CLICK с помощью useCapture = true и проверить, является ли это правой кнопкой:

swfLoader.addEventListener(MouseEvent.CLICK, swfLoader_clickHandler, true, 0, true);

protected function swfLoader_clickHandler(event:MouseEvent):void
{
    if (event.target.name == "some_way_to_identify_the_button")
        // do X
}

Надеюсь, это поможет, Lance

...