Flash和Flex

时间:2009-07-09 07:29:09

标签: flex flash

我想将Flash电影嵌入Flex(Flex Builder 3),两者都使用Action Script 3,并在Flex中使用我的flash电影调用函数,反之亦然。

这可能吗?

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。如果您想将另一个swf嵌入到Flex应用程序中,您可以选择一些选项。

选项1 - 将swf(内联)嵌入SWFLoader组件中。此选项有一些安全缺陷,因为swf被加载到另一个应用程序域,因此您的Flex应用程序和嵌入内容之间的通信有时会很困难。你可以给这个组件一个id,听取完整的事件,然后与SWFLoader的content属性交谈,以获得对加载的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。你想把任何你想要嵌入到fla中的UIMovieClip。然后,只要发布该fla,就可以创建.swc文件。然后,您可以在flex builder中链接到该swc文件。然后,这将自动将该MovieClip添加为您的项目中的可参考(这可能需要您进行更多调查)。基本上你可以做类似的事情:

<local:MyMovieClipInSwc id="myMovieClip" />

通过这种方式,您可以获得两个世界的好处,声明性标记以及同一应用程序域中的所有内容。关于这种方法,我要说的一件事就是Adobe在UIMovieClip类中表现出色,并且它的性能很糟糕。请注意,如果您开始在任何地方使用此应用程序可能会变得极其缓慢。