2

大量のswfs*をロードするページがあります。私はそれらすべてを同時にロードしています。シーケンシャルにイントロアニメーションの速度が低下しています。swfsを順番にロードする方法はありますか?または、タイマーにそれらをロードしない場合(0.5秒でうまくいくと思います)

*動的に生成されたさまざまなFlexグラフが多数あるため、それらをすべて1つにまとめることはできません。

var swfs = [
                    { url: '/swf/AllBookings.swf', id: "all_bookings", width: 620, height: 365, flashvars: {}, params: {}, attributes: {} },
                    { url: '/swf/AllBookingsByHospital.swf', id: "all_bookings_by_hospital", width: 380, height: 240, flashvars: {}, params: {}, attributes: {} },
                    { url: '/swf/AllBookingsByLanguage.swf', id: "all_bookings_by_language", width: 540, height: 240, flashvars: {}, params: {}, attributes: {} },
                    { url: '/swf/DNAReason.swf', id: "dna_reason", width: 300, height: 240, flashvars: {}, params: {}, attributes: {} },
                    { url: '/swf/DNAInterpreterLanguage.swf', id: "dna_interpreter_language", width: 300, height: 240, flashvars: {}, params: {}, attributes: {} },
                    { url: '/swf/DNAPatientLanguage.swf', id: "dna_patient_language", width: 300, height: 240, flashvars: {}, params: {}, attributes: {} }

                ];

                for (var i = 0; i < swfs.length; i++) {
                    swfobject.embedSWF( swfs[i].url, swfs[i].id, swfs[i].width, swfs[i].height, "9.0.0", false,  swfs[i].flashvars, swfs[i].params, swfs[i].attributes );
                };
4

2 に答える 2

2

.flasにアクセスできない場合は、次のことを試してみてください。

swfobject.embedSWF最後のパラメータとして、成功または失敗のドキュメントで呼び出されるコールバック関数を取ります。これがswfが完全にロードされたときにのみ呼び出されるかどうかはわかりませんが、その場合は次のように使用できます。

var swfs = [
    { url: '/swf/AllBookings.swf', id: "all_bookings", width: 620, height: 365, flashvars: {}, params: {}, attributes: {} },
    { url: '/swf/AllBookingsByHospital.swf', id: "all_bookings_by_hospital", width: 380, height: 240, flashvars: {}, params: {}, attributes: {} },
    { url: '/swf/AllBookingsByLanguage.swf', id: "all_bookings_by_language", width: 540, height: 240, flashvars: {}, params: {}, attributes: {} },
    { url: '/swf/DNAReason.swf', id: "dna_reason", width: 300, height: 240, flashvars: {}, params: {}, attributes: {} },
    { url: '/swf/DNAInterpreterLanguage.swf', id: "dna_interpreter_language", width: 300, height: 240, flashvars: {}, params: {}, attributes: {} },
    { url: '/swf/DNAPatientLanguage.swf', id: "dna_patient_language", width: 300, height: 240, flashvars: {}, params: {}, attributes: {} }
];

(function() {
    var swf = swfs.shift();
    if( !swf ) return;
    swfobject.embedSWF(
        swf.url,
        swf.id,
        swf.width,
        swf.height,
        "9.0.0",
        false,
        swf.flashvars,
        swf.params,
        swf.attributes,
        arguments.callee //this function will be called again as a callback
   );
})(); //calls itself automatically

それが機能せず、各swfの埋め込みを遅らせたい場合は、非常によく似た処理を実行できます。

var swfs = [
    { url: '/swf/AllBookings.swf', id: "all_bookings", width: 620, height: 365, flashvars: {}, params: {}, attributes: {} },
    { url: '/swf/AllBookingsByHospital.swf', id: "all_bookings_by_hospital", width: 380, height: 240, flashvars: {}, params: {}, attributes: {} },
    { url: '/swf/AllBookingsByLanguage.swf', id: "all_bookings_by_language", width: 540, height: 240, flashvars: {}, params: {}, attributes: {} },
    { url: '/swf/DNAReason.swf', id: "dna_reason", width: 300, height: 240, flashvars: {}, params: {}, attributes: {} },
    { url: '/swf/DNAInterpreterLanguage.swf', id: "dna_interpreter_language", width: 300, height: 240, flashvars: {}, params: {}, attributes: {} },
    { url: '/swf/DNAPatientLanguage.swf', id: "dna_patient_language", width: 300, height: 240, flashvars: {}, params: {}, attributes: {} }
];

(function() {
    var swf = swfs.shift();
    if( !swf ) return;
    swfobject.embedSWF( swf.url, swf.id, swf.width, swf.height, "9.0.0", false,  swf.flashvars, swf.params, swf.attributes );
    setTimeout( arguments.callee, 2000 ); //calls this function again after 2 seconds
})();
于 2010-02-19T13:58:17.937 に答える
0

はい、可能です。

最も簡単な方法は、最後のswfの最後のフレームに次のswfのloadコマンドを含めることです(以下を参照)。

SWF 1 <------------------ |>SWF2をロードします

SWF 2 <------------------ |>SWF3をロードします

SWF3..。

次のようなものを使用します:

_root.YourPlaceholderMC.loadMovie("YourSecondMovie .swf");
于 2010-02-19T13:34:10.130 に答える