2011-11-22 10 views
5

Estoy desarrollando un archivo flash que se cargará en docenas de sitios web sobre los que no tengo control. Descubrí que uno de ellos parece estar comprimiendo el swf, lo que está causando que loaderInfo.bytesTotal sea cero. Esto arruina la animación de carga.Qué hacer cuando loaderInfo.bytesTotal es cero

Probé una solución de solo probar si bytesTotal es cero, de ser así, simplemente proceda. Eso no funciona porque, como era de esperar, no todos los datos necesarios se han cargado todavía. Alternativamente, puedo poner un retraso temporizado de lo que sea el tiempo de carga esperado, y espero que cubra todas las bases.

¿Alguien tiene alguna otra sugerencia? Idealmente, hay una forma alternativa de definir bytesTotal, pero no he encontrado uno.

FYI esto es algo relacionado con esta pregunta: Why loaderInfo.bytesTotal is Zero

pero no puedo hacer la sugerencia htaccess porque no tengo control sobre los otros sitios web, algunos de los cuales pueden estar en servidores de las ventanas de todos modos.

Respuesta

0

Si es posible, puede pasar el total de bytes a través de flashvars o almacenarlo en alguna parte del archivo. Si usa algún script para definir archivos para poder usarlo, también puede usar el tamaño y pasarlo a flash para que el evento si el totalbytes es 0 puede contar el progreso según el tamaño dado de alguna otra manera.

Esa es la única solución que conozco para este problema.

+0

Gracias Jakub, que parece haber funcionado perfectamente, estoy pasando el valor de bytesTotal utilizando un flashvar. Inicialmente traté de usar la versión flashvar solo si loaderInfo.bytesTotal era 0, pero resulta que en firefox no era 0 pero tampoco era correcto, era significativamente más pequeño que el valor correcto. Así que ahora lo tengo configurado para usar el valor más alto de los dos (loaderInfo.bytesTotal vs flashvar bytesTotal). –

+0

De nada, si quiere un gran cargador, intente usar el [LoaderMax] (http://www.greensock.com/loadermax/). Una gran biblioteca con la mayoría de las cosas ya implementadas. Ahí es donde encontré esa tehnique. –

0

Es posible que desee considerar cambiar su enfoque para que su película se pueda cargar de forma incremental. Si desmarca la opción "exportar en el fotograma 1" en las definiciones de sus símbolos, todo se cargará donde primero se use/haga referencia. Tenga en cuenta que esto solo funcionará si ha permitido que Flash coloque la mayoría de sus objetos en el escenario para que use el IDE. Para leer más acerca de este enfoque, consulte http://www.developria.com/2010/04/combining-the-timeline-with-oo.html. El código para el artículo está aquí http://flexdiary.blogspot.com/2010/04/sample-code-for-oop-timeline-insideria.html

+0

Gracias Amy que parece una técnica interesante. Pero requerirá algunos cambios más grandes, así que fui con la idea sugerida por @ JakubSłaby –

0

El problema es que Google Chrome está utilizando su propia versión de Flash Player. Si lo deshabilita en la configuración de Chrome, bytesTotal estará bien. Pero no puedes decirle a todos que lo desactiven, por supuesto.

Encontré la solución de cómo se puede detectar cuando se completa la carga en todas las situaciones. Puede verificar esta respuesta: Why loaderInfo.bytesTotal is Zero

Cuestiones relacionadas