js はフラッシュがロードされているかどうかをどのように判断しますか?
フラッシュがロードされたときに設定した js 関数をコールバックするにはどうすればよいですか?
この問題は今日まで私を長い間悩ませてきましたが、とても素晴らしい人に相談した後、突然そう感じました。
はは、この問題はあなたにとっては問題ではないかもしれませんが、私にとっては確かに問題です。swf ファイルがロードされているかどうかを判断する方法がまったくわからないからです。
以前は img.onload などしか知りませんでした。
さて、本題に取り掛かりましょう。フラッシュが読み込まれているかどうかはどうやって判断するのでしょうか?
はい、ポーリングで、フラッシュの特定のメソッドが正常に実行できるかどうかを判断します。
例は次のとおりです (擬似コード):
(function () { var flash = 网页上某个flash对象。 var interval = setInterval(function () { try { if(flash.IsPlaying()) { //轮询flash的某个方法即可 callBack && callBack.call(flash, args); //回调函数 clearInterval(interval); } } catch (ex) { } }, 1000); var callBack = function () { alert('loaded'); } })();
//特定の使用法で、フラッシュが setInterval または setTimeout の関数クロージャー内に配置されている場合、JavaScript シングルスレッドの問題が原因で、フラッシュが IsPlaying および他の Flash プレーヤー関数を呼び出せないか、呼び出し結果が等しくないことが考えられます。ここには一時的な状況があり、ポーリング関数でフラッシュの TotalFrames 属性を読み取ることができるので、フラッシュがページに完全にロードされたと考えることができます。 ! !
テストの結果、実際に実行可能ですが、1 ~ 2 秒の遅延が発生する可能性があります。
/////////////何か間違っているところがあれば、修正してください! ! ! ! ! ! ! ! ! //////////////
/*Flash Player を制御できる js メソッドのリストを添付します*/
Play() ------------------------------------- アニメーションを再生
StopPlay()-------------------------------------------------アニメーションを停止
IsPlaying() ---------------------------------- アニメーションが再生中かどうか
GotoFrame(frame_number)---------------- 特定のフレームにジャンプします
TotalFrames()--------------------------------- アニメーション フレームの総数を取得します
CurrentFrame()----------------------------現在のアニメーションのフレーム番号 -1 を返します
Rewind()----------------------------------------アニメーションを最初のフレームに戻します
SetZoomRect(left,top,right,buttom)-----指定範囲を拡大
ズーム(パーセント)---------------------------------アニメーションのサイズを変更
Pan(x_position,y_position,unit)----------アニメーションを x、y 方向に移動させます
PercentLoaded()--------------------------ロードされているアニメーションのパーセンテージを返します
LoadMovie(level_number,path)---------- アニメーションをロード
TGotoFrame(movie_clip,frame_number) - movie_clip は指定されたフレーム番号にジャンプします
TGotoLabel(movie_clip,label_name)------ movie_clip は指定されたラベル
にジャンプします
TCurrentFrame(movie_clip)--------------- movie_clip の現在のフレームを返します -1
TCurrentLabel(movie_clip)-----------------movie_clip の現在のラベルを返します
TPlay(movie_clip)--------------------------movie_clip を再生
TStopPlay(movie_clip)---------------------movie_clip の再生を停止します
GetVariable(variable_name)-----------------変数を取得
SetVariable(変数名,値)----------変数の割り当て
TCallFrame(movie_clip,frame_number)---指定されたフレームでアクションを呼び出します
TCallLabel(movie_clip,label)----------------指定されたラベルのアクションを呼び出します
TGetProperty(movie_clip,property)--------movie_clip の指定されたプロパティを取得します
TSetProperty(movie_clip,property,number) - movie_clip