【问题标题】:Flex 4.6 Need to know how to animate a .swf in actionscriptFlex 4.6 需要知道如何在 actionscript 中为 .swf 设置动画
【发布时间】:2013-08-24 19:05:55
【问题描述】:

我已将 PowerPoint 转换为 Flash,因此每张幻灯片都是 .swf。我使用了许多不同的转换器,这里的问题是一样的。

我想做的是以编程方式触发 .swf 的动画(幻灯片的内容出现)。我可以用鼠标单击 .swf,动画就会前进。当 .swf 嵌入网页时,我可以自动执行此操作,只需执行以下操作:

document.getElementById('myMovie').play();

每次我执行该代码时,swf 都会前进到下一个动画。但是,我找不到在 flex 中执行此操作的方法。我用过 MovieClipSWFLoader 并尝试过:

private function animate():void {
var simulatedClick1:MouseEvent = new MouseEvent(MouseEvent.CLICK);
var simulatedClick2:MouseEvent = new MouseEvent(MouseEvent.MOUSE_DOWN);
var simulatedClick3:MouseEvent = new MouseEvent(MouseEvent.MOUSE_UP);
frameNo++;
myMovie.gotoAndStop(frameNo);
myMovie.nextFrame();
myMovie.nextScene();
myMovie.play();
myMovie.dispatchEvent(simulatedClick1); // with clicks 1, 2, and 3
}

<s:MovieClipSWFLoader id="myMovie" source=""/>
<s:Button id="btnAnimate" click="animate()"/>

我也尝试过加载为图像组件并使用模拟点击...不好。谁能告诉我该怎么做?

【问题讨论】:

    标签: apache-flex animation flash


    【解决方案1】:

    问题在于 .swf 是使用 Flash 8 创建的,与我的 Flex 版本不兼容。我在 https://gist.github.com/nsdevaraj/409902 的 ForcibleLoader 中找到了一个很好的解决方案。它将旧的 .swf 转换为新的,然后代码可以正常工作。

    private var libMC:MovieClip = new MovieClip();
    
    ur = new URLRequest(guide_url);
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfComplete);
    var fLoader:ForcibleLoader = new ForcibleLoader(loader);
    fLoader.load(ur);
    swfMovie.addChild(loader);
    
    private function swfComplete(event:Event):void{
    libMC = event.currentTarget.content as MovieClip;
    }           
    
    private function animate():void {
    libMC.nextFrame();
    
    <mx:UIComponent id="swfMovie"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多