0

XML を読み込み、各スライドに画像や SWF などの複数のアセットを含めることができる一種のスライドショーをセットアップするアプリがあります。すべてを (Apache 経由で) 直接ロードするlocalhostと、SWF は自動再生されませんが、Charles を使用してローカルホストへの速度を調整すると、SWF のロードが完了する前、および SWF を含むスライドが表示される前に再生が開始されます。

でローダーを作成しています

var loader:MovieClipSWFLoader = new MovieClipSWFLoader();

loader.smoothBitmapContent = true;
loader.autoLoad     = true;
loader.scaleContent = false;
loader.trustContent = true;
loader.autoStop     = true;
loader.maintainAspectRatio = true;
loader.showBusyCursor = false;
loader.x            = data.@posX;
loader.y            = data.@posY;
loader.width        = data.@width;
loader.height       = data.@height;
loader.source       = (new URLRequest(data.@url)).url; // Using URLRequest because data contains relative URLs, and the loader doesn't like that (thinks it's a path maybe?)

wheredataは、アプリケーションが知る必要がある内容を含む短い XML フラグメントです。例は<swf posX="10" posY="50" width="100" height="100" url="swfs/1.swf"/>

この特定の SWF には、フレーム 9 で再生されるサウンドがあり、SWF がステージ上で表示される前にバックグラウンドで再生されます。SWF の読み込み速度に関係なく、アプリが SWF を表示するようになると、想定どおりに機能します。

autoLoadfalse に設定して手動で呼び出すことも試みましload()たが、それでも発生します。呼び出しだけでなく、効果gotoAndStop(1)gotoFirstFrameAndStop()ありません。

trace発生するイベントにいくつかの -call を追加すると、 ,が得られEvent.OPEN、その後、残りのイベントの間に再生され、 で終了します。ProgressEvent.PROGRESSEvent.INITProgressEvent.PROGRESSHTTPStatusEvent.HTTP_STATUSEvent.COMPLETE

アプリは Flex 4.6 でコンパイルされ、Flash Player 11.7.700.169 でテストされています

4

2 に答える 2

0

私は常に SWF を制御しているわけではないため、Ribs の回答が常に機能するとは限りませんが、自分で作成したものについては、細心の注意を払うために同様のコードを追加する予定です。

すべてのイベントリスナーに追加することでなんとか機能させ、それが機能したらgotoFirstFrameAndStop()、本当に必要なものだけになるまで1つずつ削除しました.

同じことに遭遇した他の人のために、私は追加しました

loader.addEventListener(Event.INIT, stopAutoplayingSWF);
loader.addEventListener(Event.COMPLETE, stopAutoplayingSWF);

private function stopAutoplayingSWF(e:Event):void
{
  (e.currentTarget as MovieClipSWFLoader).gotoFirstFrameAndStop();
}

SWF は起動する前に再生を開始したため、最後の onEvent.COMPLETEは必要ないかもしれませんが、問題はないようです。

于 2013-09-05T06:52:53.563 に答える