Hola. Quiero hacer una precarga para un flash llamado PARTICIPA que pesa 240 kb. Ya tengo diseñado el clipmovie de la precarga que consiste en una barra que aumenta progresivamente de 0 a 100 frames y los números de porcentaje que yo mismo he diseñado (no utilizo funciones de texto dinámico). Pongo el clipmovie en el frame 1 del flash PARTICIPA. A partir de aquí es donde me pierdo. No sé que ordenes "actionscript" tengo que escribir para que la película se ejecute una vez cargada totalmente, ni en que sitio deben de estar ubicadas. He visto varios actionscript en internet pero no consigo hacerla funcionar correctamente.
Necesito ayuda urgente! Gracias
En realidad hacer una precarga es mucho más simple de lo que parece. Ya que Flash nos entrega la cantidad de bytes totales de la película y la cantidad de bytes cargados. Basta con hacer una regla de tres para sacar el porcentaje cargado, y como verás crear una animación que avance según el porcentaje es igualmente fácil. Presta atención: Empecemos por la función que nos dice el porcentaje, primero expongo la función y después la explico. --- function cargado() { var total, cargado, porcentaje; total = _root.getBytesTotal(); cargado = _root.getBytesLoaded(); porcentaje = Math.floor((cargados*100)/total); movieClipPrecarga.gotoAndStop(porcentaje); casillaDeTexto.text = "Cargado " + porentaje + "%"; if (cargados == total) { clearInterval(ciclo); play(); } } --- La Primera línea, como sabrás si tienes conocimientos básicos de action script, crea la función "cargado" que cuando sea llamada, calcula la el porcentaje cargado y lo muestra en pantalla. La segunda línea Crea las variables necesarias, una buena costumbre de programación que no debe caer en desuso aunque en ActionScript no es obligatorio. Las Líneas tercera, cuarta obtienen la cantidad de bytes totales y la cantidad de bytes cargados y los guarda en las variables "total" y "cargado". La quinta línea hace la regla de tres sobre "cargados" y "total" para obtener el porcentaje que ha sido cargado. Luego lo redondea hacia abajo con "Math.floor()". Ahora empieza la parte clave: En el código de ejemplo, el MovieClip tiene el nombre de instancia "movieClipPrecarga" que puedes cambiar por el que quieras La Línea séptima cambia el contenido de la casilla de texto que tenga como nombre de instancia "casillaDeTexto" por un mensaje mostrando el porcentaje cargado. También puedes cambiar el nombre de instancia por el que quieras. La línea octava comprueba si ya se han cargado todos los bytes (si los bytes cargados son la misma cantidad que los bytes totales), y si es así, finaliza la precarga y avanza de fotograma. Por Último creamos un intervalo que se encargará de ejecutar la función cada por milisegundos. Cuanto menor sea por más fluida será la precarga pero también consumirá más recursos en el ordenador cliente. En mi opinión, con poner 50 milisegundos es bastante. --- var ciclo = setInterval(cargado, 50); --- Y creamos una función que detenga la película hasta que la precarga termine. --- stop(); --- Con Esto tienes la parte de la programación de la precarga, el diseño consiste en el MocieClip con la barra de carga y la casilla de texto. En Resumen, el primer fotograma de la película (o en una escena insertada antes que las demás si mover todos los fotogramas es mucho problema) Inserta el MovieClip, la casilla de texto y el siguiente código: --- function cargado() { var total, cargado, porcentaje; total = _root.getBytesTotal(); cargado = _root.getBytesLoaded(); porcentaje = Math.floor((cargados*100)/total); movieClipPrecarga.gotoAndStop(porcentaje); casillaDeTexto.text = "Cargado " + porentaje + "%"; if (cargados == total) { clearInterval(ciclo); play(); } } var ciclo = setInterval(cargado, 50); stop(); --- Con esto la precarga ya está hecha. Perdón Si se hizo demasiado largo, es una costumbre que tengo de intentar no dejar ningún posible error o variante sin tener en cuenta. Intentando no alargarlo más lo termino aquí. Espero haberlo dejado claro, sino no dudes pedir una aclaración. Saludos --- Sel
Te sugeriría me envíes tu archivo, te hago funcionar la precarga con el código comentado para que sepas lo que esta pasando y si no entiendes algo nomas me preguntas. Puedes enviar el archivo a [email protected] Lo hago así por que no quiero perder tiempo haciéndote las preguntas necesarias para poder contestar tu pregunta ya que no me das los datos que realmente necesito como la forma en que has ordenado tu película y en donde se encuentras tus movie clips o los nombres de instancia de los mismos... Por cierto si usas flash cs3 guardala de modo que se pueda abrir en flash 8.
a) Ante todo mis disculpas pues hace más de una semana que no entraba a contestar y ahora veo que precisabas de respuesta urgente. No se si aún te seré de ayuda, pero allá voy: Si colocas en el primer fotgrama la animación de lo que llamas precarga con la animación de la barra de progreso e inmediatamente después colocas lo demás que deseas cargar no estás haciendo precarga alguna, lo que estás haciendo es una simulación de precarga. En la película principal SOLO PUEDE ESTAR EL FICHERO DE LA BARRA DE PROGRESO, que como es muy pero que muy pequeño pues cargará muy rápido. El resto de la película debe ser un swf externo que se cargaría dentro de esta película principal. La animación de la barra esperará hasta que cargue el swf externo. Supongamos que este swf externo se llama "cuerpo.swf", y que el clip de la barra de progreso tiene como nombre de instancia "barra" Entonces si "cuerpo.swf" ha cargado un 5% envías la cabeza lectora al fotograma 5 de "barra", si ha cargado 25% lo envías al fotograma 25 de "barra" y así sucesivamente, pero, ¿Cómo saber qué por ciento de "¿cuerpo.swf" se ha cargado? Se hace de la siguiente manera: (a continuación te pongo el código y algunos comentarios para que lo entiendas) Crea una capa nueva `para los códigos en la línea de tiempo principal, edita el script (F9) del primer fotograma y allí pon lo siguiente: this.createEmptyMovieClip("contenedor", 999); // Crear un movie clip vacío en el nivel 999 de la línea de tiempo principal, de nombre "contenedor" para que luego allí se cargue a "cuerpo.swf" this.contenedor._x = 50; this.contenedor._y = 50; // Sitúo ese clip en una posición determinada, la que quieras, por defecto se sitia en o, o que es por lo general la que más conviene, pero aquí te pongo otra por si acaso. <span>var cargador:MovieClipLoader = new MovieClipLoader();</span> <span>// Crear un objeto para recibir la descarga // Cree un objeto detector: var Midetector:Object = new Object();</span> // Crear un objeto detector de la descarga Midetector.onLoadError = function(MCObjetivo:MovieClip, CodigoError:String, status:Number) { <POr aquí las sentencias que deseas se ejecuten si ocurre un error de carga> }; // Esta function es llamada si ocurre un error durante de carga. En MCObjetivo se almacena cuál clip se estaba cargando cuando se produjo el error y en CodigoError el número del error Midetector.onLoadStart = function(MCObjetivo:MovieClip):Void { trace("onLoadStart: "+MCObjetivo); }; //Esta función se ejecuta cuando comienza la carga, MCObjetivo significa lo mismo que anteriormente Midetector.onLoadProgress = function(MCObjetivo:MovieClip, CantBytesCargados:Number, CantBytesTotal:Number):Void { var PorcientoCargado:Number = CantBytesCargados/CantBytesTotal*100; porciento = CantBytesCargado/CantBytesTotal*100 <span> </span>Barra.gotoAndPlay(porciento) }; //Esta función se ejecuta mientras se está cargando y es en realidad la que nos interesa, fíjate que en CantBytesCargados se almacena la cantidad de bytes que ya se han cargado y en CantBytesTotal la cantidad total a cargar, por tanto es fácil determinar el prociento y enviar la cabeza lectora a donde deseemos. <span> Midetector.onLoadComplete = function(MCObjetivo:MovieClip, status:Number):Void { barra.gotoAndStop(1) };</span> //Esta función se ejecuta cuando la carga termina. Aquí te puse algo a hacer, tu sabrás, en función de lo que desees qué hacer cuando "cuerpo.swf" sea cargado. cargador.addListener(Midetector); // Adicionar a la lista de objetos cargador.loadClip("cuerpo.swf", contenedor); //Cargar el swf externo. Se supone que se encuentra en el mismo sitio que la película principal, si no es así hay que darle el camino completo. <span style="font-size: 11pt; line-height: 115%; font-family: 'Calibri','sans-serif'">Jadaso63</span>