2011-08-12 14 views
1

サイトにサードパーティのFlash SWFがあり、最大サイズは100KBです。例えばFlashビデオプレーヤー "JWPlayer" SWFは98KBです。Flash SWFの読み込み中にプレビューイメージを表示する方法は?

ブロードバンドを使用するユーザーには適していますが、低速ダイヤルアップには適していません。例えば40kbits/sで、ダウンロードするのに20秒間話している。

遅い接続では、すべての訪問者が静的な白い画面で表示されるため、ページが閉じてしまって死んでいると思われる可能性があります。 SWFを書き込む領域を右クリックすると、Adobe Flash Playerオブジェクトがその領域を占有していますが、サードパーティのSWFはまだロードされていません。

ウェブサイトの訪問者にローディングスピナーGIFなどが表示されます。

残念ながら、第三者SWFには「プリローダー」要素はありません。そして、彼らはオープンソースではないので、プリローダーを追加することはできません。

だから、私の質問は...

は、SWFのロード中に、ロード画像、prefereably GIFアニメーションを表示する方法はありますか?

たとえば、Adobe Flash PlayerでSWFに読み込み中に画像が表示されるようにする方法はありますか?

私はFlashコーディングスキルを持っていないので、SWF内に余分なSWFやSWFを作成することを含まないソリューションは、おそらく私には最適ではありませんが、投稿に追加する価値があります他の人が同様の問題を抱えている場合に備えて。

私はSWFを埋め込むためにswfobject 2.2を使用しています。そのため、それを考慮に入れるか、少なくともそれが壊れない解決策が役立ちます。

あなたのお手伝いができなくても、私の投稿を読む時間を取ってくれてありがとう。

あなたはそれは厳しいかもしれない使用していたサードパーティのSWFは知らずデイブ

+0

は、私はその後、Flashオブジェクトの前にCSSのZインデックスを使用して画像を追加するSWFがロードされたら、それを削除するにはswfobjectのcallbackFunctionを使用するためにjqueryのを使用して考えました。私はSWFの前にロゴを置くためにこれを過去に行ってきました。しかし、これには、フラッシュオブジェクトの "wmode"パラメータを使って遊んでいたことがありました。Flashとwmodeパラメータで解決されるかもしれない問題がありました。私は問題がFlashのバージョンやブラウザに関係していたのかどうかは思い出せませんが、この方法で私を止めるには十分でした。 – David

答えて

0

を低帯域幅を持つユーザーのために、我々は(「透明」にフラッシュパラメータのwmodeを設定して、背景画像とGIFを設定しますローディングスピナーなしでは、これらの低帯域幅のユーザーはページが何もしていないと思う)。

ただし、wmode = transparentを使用すると、Flashがハードウェアアクセラレーションを使用しないという負の副作用があります。しかし、低帯域幅のユーザにとっては、例えば、私たちのビデオは、ほとんどの場合ハードウェアアクセラレーションが本当に必要ないほど十分に低いです。

高帯域幅のユーザー向けに、より高いビットレートのビデオ、そしてハードウェアアクセラレーションがますます重要になります。これらのユーザーのためには、wmode = directを使用し、ローディングスピナーGIFを使用せずに、SWFの読み込み速度が十分速くなるようにします。

SWFファイルのサイズとそのXMLファイルもロードする必要がありますが、1メガビットの帯域幅に制限されています。ユーザーがより高い帯域幅を使用する場合は、ローディンググラフィックを使用せず、ビザその逆。他の人が他のレベルに適しているかもしれません。

可能な限り帯域幅の制限をもっと小さくすることができます。ビデオのHarware Acceleration(384 kbit/s)を使用する古いPCの場合と同じように、ユーザーの読み込みスピナーを削除することができますそのような低い帯域幅では、スクリーン上で何も起こらずに彼らがあまりにも長く待つことを意味し、これはビデオ再生中に数フレームを失うことよりも悪いと思われる。

ここには、さまざまなwmodeについてのAdobeの説明へのリンクと、さまざまなブラウザがそれらをどのように扱うかが記載されています。

http://kb2.adobe.com/cps/127/tn_12701.html#main_BrowserSupportForWmodes

これは他の誰かいつかに役立ちます願っています。

デイブ

0

が、ここで考えるべきいくつかの事柄があります:

一つのアプローチは、swfファイル(またはdivの非表示にするだろうswfがロードされるまでswfが内側にあります)、終了したら表示されます。あなたはスピナー/ローディングイメージをその場所に置くことができます。つまり、本当に必要なのは、ロードが完了したら呼び出されるjavascript関数です。これが起こると、jQueryを.show()または.hide()のスピナーとswfにそれぞれ使用できます。

JWPlayerには、events that you can make use ofがあります。 onReadyのように見えます。

他のサードパーティのswfsに関しては、私は同様のjavascriptコールバックのドキュメントを見ていきたいと思います。 Swiffのようないくつかの埋め込みソリューションがそうであるように、私はswfobject has an onLoad callbackを知っています。

幸運を祈る!

はEDIT:swfobjectのコールバックはswfファイルが正常にを埋め込まれたときに呼ばれるかもしれないが、必ずしもをロードされていません。あなたの最善の策は、これと一緒に遊んで、それが動作するかどうかを見る - または可能な限り、サードパーティのswfのコールバック関数を使用することです。

EDIT 2:これはフラッシュローダーの例です。我々が混在セットアップのために行くことにしました最後に

import flash.net.URLRequest; 
import flash.display.Loader; 
import flash.events.Event; 

function startLoad() { 
    var mLoader:Loader = new Loader(); 
    var mRequest:URLRequest = new URLRequest("url-to-your-swf.swf"); 
    mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); 
    mLoader.load(mRequest); 
} 

function onCompleteHandler(loadEvent:Event){ 
    addChild(loadEvent.currentTarget.content); 
    //Here's where you specify your js function 
    ExternalInterface.call("flashLoaded"); // <-- where 'flashloaded' is a js function 

} 

startLoad(); 
+0

こんにちはチャズボット。私はあなたの提案をしてきました。まず、EDITが正しいと思われます。 swfobjectは、Adobe Flash Playerを保持しているページでOBJECTが作成されるとすぐに、そのcallbackFunctionを起動します。 swfがロードされる前に起動されるため、このcallbackFunctionは使用できません。だから、私はそれぞれのサードパーティのswfのonReadyイベントを見つけることができたし、これらのイベントを行った。 – David

+0

残念ながら、jqueryのhide()関数を使用すると、基本的にCSSの表示:なしが行われ、Flashオブジェクトを停止またはブロックすることが判明しているようです。 onReadyイベントは決して発生しません。ネット上を読んでみると、これは設計によってさえあるかもしれません。次の投稿では、displayを使用する代わりに、noneを指定すると、flashオブジェクトを含むdivをCSS width:1pxに設定できます。高さ1px; overflow:hidden .... http://www.stoimen.com/blog/2009/04/14/load-flash-swf-in-hidden-div/ ....そしてonReadyイベントが発生すると、サイズはフルサイズまでバックアップされます。 – David

+0

swfがロードされている間にこの方法でロードイメージを表示することはできましたが、Firefox Flashblockプラグイン(Flashblock再生ボタンを押すまでFlashの再生を停止します)を使用しているユーザーにとっては、 1px 1pxのdiv内にあるので、Flashblockの再生ボタンは表示されません。これは、これらのユーザーにとって、ページが壊れているように見えることを意味します。 – David

関連する問題