2010-02-19 3 views
2

У меня есть страница, которая загружает грузы swfs *. Я загружаю их в одно и то же время, последовательно, что замедляет интро-анимацию. Есть ли способ загрузить SWF последовательно? Или, если вы не загрузите их по таймеру (половина секунд будет делать трюк, который, как мне кажется)Последовательно загружайте SWF, по таймеру или нагрузке после завершения. Возможное?

* Там много разных динамически генерируемых графиков Flex, поэтому их невозможно разместить в одном.

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); 
       }; 

ответ

2

Если у вас нет доступа к .flas вот acouple вещей попробуйте

swfobject.embedSWF принимает в качестве последнего параметра функцию обратного вызова, которая вызвана либо успехом, либо неудачей docs. Я не знаю, если это только называется, когда 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 

Если это не работает, и вы хотите отложить вложение каждый швейцарских франков вы можете сделать что-то очень похожее

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 
})(); 
0

Да, это возможно.

Самый простой способ - включить команду загрузки для следующего swf в последнем кадре последнего swf - ниже.

SWF 1 < ------------------ |> Загрузка SWF 2

SWF 2 < ------------- ----- |> Загрузка SWF 3

SWF 3 ...

использовать что-то вроде:

_root.YourPlaceholderMC.loadMovie("YourSecondMovie .swf");