0

PowerPoint を Flash に変換したので、各スライドは .swf です。私は多くの異なるコンバーターを使用しましたが、ここでの問題は同じです。

私がやりたいことは、.swf のアニメーション (スライドの内容が表示される) をプログラムでトリガーすることです。.swf をマウスでクリックすると、アニメーションが進みます。.swf が Web ページに埋め込まれている場合、次のようにするだけでこれを自動化できます。

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

そのコードを実行するたびに、swf は次のアニメーションに進みます。ただし、フレックスでこれを行う方法が見つかりません。私は 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()"/>

また、画像コンポーネントとしてロードして、シミュレートされたクリックも使用しようとしました...ダメです。どうすればこれを行うことができるか教えてもらえますか?

4

1 に答える 1

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"/>
于 2013-08-27T14:30:30.417 に答える