【问题标题】:Embedding swf with frame labels and controlling it in Flex使用框架标签嵌入 swf 并在 Flex 中控制它
【发布时间】:2012-05-29 05:02:16
【问题描述】:

我正在尝试将带有在时间轴中定义的一些帧标签的 swf 文件嵌入到我的 Flex 应用程序中:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="1000" height="563" creationComplete="doSomething()">

    <mx:Script>
        <![CDATA[

            private var movieClip:MovieClip;

            private function doSomething():void {
                movieClip = swfFile.content as MovieClip;
                movieClip.gotoAndPlay('playIntro');
                movieClip.addEventListener("swfFinished", doSomethingElse);
            }

            private function doSomethingElse():void {
                //
            }

        ]]>
    </mx:Script>

    <mx:SWFLoader id="swfFile" width="1000" height="563" source="@Embed(source='test.swf')" /> 

</mx:Application>

但是,我无法以这种方式控制 swf 时间线...是否可以嵌入 swf 文件并以我想要的方式控制它?

谢谢!

【问题讨论】:

  • 当你这样做时会发生什么?完整的事件会触发吗?如果是的话,movieclip 是否为空?
  • 嗯,是的,似乎完整的事件根本不会触发:-/ 我试图将 creationComplete 放在 Application 类中,然后 movieClip 不为空。但是,它仍然不会从标记的帧播放电影。

标签: apache-flex flash embed


【解决方案1】:

对此的一些搜索似乎表明这是在嵌入 swf 时发生的。如果您可以避免不嵌入 swf,那就这样做吧。

这是我发现的一个允许嵌入工作的解决方案: http://iamjosh.wordpress.com/2008/04/09/embedding-flash-in-flex/

认为问题可能在于 Flash Player 的安全模型,只是一种预感。它可能不允许与嵌入式 swf 进行这种类型的通信……但您可能可以执行 Security.allowDomain("*") 之类的操作(一个危险的快捷方式)。

但首先,请查看 allowDomain 的文档,因为文档建议您可以这样做:

Security.allowDomain(loader.contentLoaderInfo.url); // 'loader' is a SwfLoader

但我猜url 在嵌入情况下可能为空:)

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    相关资源
    最近更新 更多