Flash и Flex - PullRequest
       2

Flash и Flex

2 голосов
/ 09 июля 2009

Я хочу встроить Flash-фильм в Flex (Flex Builder 3), используя Action Script 3, и иметь функции вызова Flash-фильма в Flex и наоборот.

Возможно ли это?

1 Ответ

2 голосов
/ 09 июля 2009

Да, это возможно. Если вы хотите встроить другой SWF-файл в ваше Flex-приложение, у вас есть несколько вариантов.

Опция 1 - встроить swf, встроенный, в компонент SWFLoader. Эта опция имеет некоторые недостатки безопасности, так как SWF-файл загружается в другой домен приложения, поэтому связь между вашим Flex-приложением и встроенным контентом иногда может быть затруднена. Вы можете присвоить этому компоненту идентификатор, прослушать событие complete, а затем обратиться к свойству содержимого SWFLoader, чтобы получить доступ к загруженному SWF. Что-то вроде:

<mx:Script>
   <![CDATA[
        private function completeHandler(event : FlexEvent) : void
        {
            trace(mySwfLoader.content);
        }
   ]]>
</mx:Script>


<mx:SWFLoader id="mySwfLoader" source="@Embed(source='YourSwf.swf') complete='completeHandler(event)" />

Вариант 2 - Вы можете использовать метатег, чтобы встроить SWF как класс, а затем создать экземпляр этого класса в коде. Это дает большую гибкость, но вы теряете преимущества возможности декларативного добавления объекта. Что-то вроде:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="creationCompleteHandler(event)">
    <mx:Script>
       <![CDATA[

            [Embed(source="mySourceSwf.swf")]
            private var mySourceSwfClass : Class

            private function creationCompleteHandler(event : FlexEvent) : void
            {
                var mySourceSwf  = new mySourceSwfClass();

                myCanvas.addChild(mySourceSwf);

               trace(mySourceSwf);
            }
       ]]>
    </mx:Script>
    <mx:Canvas id="myCanvas" />
</mx:Application>

Вариант 3 - У меня нет swf вообще. Имейте все, что вы хотите встроить в UIMovieClip в FLA. Затем вы можете создать файл .swc всякий раз, когда публикуете этот фла. Затем вы можете ссылаться на этот файл SWC в Flex Builder. Затем он автоматически добавит этот MovieClip в качестве ссылочного в вашем проекте (это может потребовать дополнительного изучения с вашей стороны). По сути, вы можете сделать что-то вроде:

<local:MyMovieClipInSwc id="myMovieClip" />

Таким образом, вы получаете преимущества обоих миров, декларативной разметки и всего в одном домене приложения. Одна вещь, которую я хотел бы сказать об этом методе, заключается в том, что Adobe по-королевски объединилась с классом UIMovieClip, и его производительность - отстой. Просто знайте, что если вы начнете использовать это везде, приложение может стать очень вялым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...