Flex 4.6需要知道如何在actionscript中为.swf设置动画

时间:2013-08-24 19:05:55

标签: flex animation flash

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

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

的document.getElementById( '为myMovie')播放();

每次执行该代码时,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()"/>

我也尝试加载作为图像组件并使用模拟的点击...没有好处。谁能告诉我怎么做到这一点?

1 个答案:

答案 0 :(得分:0)

问题是.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"/>