Comunidad de diseño web y desarrollo en internet online

Otorgarle prioridad a los swf que cargan simultáneamente.

Citar            
MensajeEscrito el 28 Abr 2008 12:30 am
Buenos días! Este es mi primer post en Cristalab! Aunque los sigo desde hace mucho tiempo! He aprendido mucho con esta comunidad y espero poder empezar a hacer mis aportes.

Pero bueno, el problema que quiero plantearles ahora es el siguiente:

Estoy realizando una página íntegramente en flash, con diagramación liquida… Esta tiene un reproductor de mp3, que carga los temas externamente con XML.
La página tiene muchas secciones, por lo cual, obviamente, estas son llamadas cuando el usuario desea entrar en alguna de estas…

Hasta aquí, todo perfecto. Pero me encuentro con este problema:
Cuando cargo alguna sección, la música se entre-corta en algunas ocasiones.
Obviamente, esto es debido por que se esta pidiendo mucha transferencia de datos (el mp3 en streaming, y la sección que deseamos ver) y también es cierto que esto solo ocurre cuando la canción recién ha empezado… por que si ya cargó bastante del mp3 (que de echo, es un mp3 de baja calidad), tiene suficiente “buffer” como para que esto no ocurra. También es cierto que depende la velocidad de conexión del usuario, pero si a mi me sucede este problema teniendo 2mb de conexión…. Ni me quiero imaginar con un mega o 512.

Lo primero que intenté para solucionar esto, es colocar un código que almacene cierto buffer antes de empezar a reproducir cualquier canción.

Pero esto no me ayudó, por que, como mucho, le ponía 3 segundos de buffer… El usuario no puede esperar más de 3 segundos desde que hace clic en una canción, pensaría que no anda.
Y con 3 segundos no solucioné el problema, por que si en seguida cargaba una sección, el sonido se entrecortaba igual, llegados a los 15 o 20 segundos.

Entonces mi pregunta es: (y ya busque por 3/4 de toda la web y no encontré respuesta)

¿Hay alguna forma de darle PRIORIDAD a una carga de un Swf sobre otro? O con un mp3, da igual.

O sea, ¿hay algún método desde ActionScript (esto lo estoy haciendo en AS2) para que cuando 2 archivos se estén cargando simultáneamente, se le pueda dar prioridad o mayor ancho de banda a uno mas que al otro? y de esta forma poder evitar que se entre-corte el sonido?

Una solución simple pero poco “práctica y funcional” seria poner en código que hasta que no se cargue el mp3 que se esté reproduciendo, no cargue la sección que el usuario “clickeo” para ver. Esto se como hacerlo, pero no tiene sentido alguno. Por que si bien los mp3 están en baja calidad, SON TEMAS MUY LARGOS (algunos temas duran mas de 20 minutos). Por lo que, haciendo esto, el usuario tendría que esperar quizá 3 minutos para que finalice la carga del mp3, y luego descargue la sección a la cual el intentó entrar…. 3 minutos atrás. Por eso digo, esta solución queda Descartada.

Repito mi duda: ¿Algún experto de ActionScrip conoce alguna forma de que se le otorgue prioridad o mayor ancho de banda a un archivo que se este llamando externamente, mientras cargan otros archivos, en este caso, las secciones?

Yo he visto en más de una web que mientras se reproduce de fondo un mp3 cargado en streaming, se pueden cargar secciones, incluso muy pesadas, y esto no altera la reproducción del mp3. Veo como la “barrita” del streaming continua creciendo casi a la misma velocidad cuando, al mismo tiempo estoy cargando otra sección.
PERO A MI NO ME OCURRE!!!!!!

Desde ya muchas gracias, y si me he extendido un poco con mi simple duda, es por que prefiero dar la mayor cantidad de datos posibles para que me puedan ayudar.

Un beso! Vicky

Por Vicky_25

10 de clabLevel



Genero:Femenino  

Argentina/España

opera
Citar            
MensajeEscrito el 28 Abr 2008 11:04 am
Primero: no hay forma de dar prioridad al uso de banda cuando se hace un loadMovie o loadSound, es decir todos los elementos cargados compiten por el mismo ancho de banda
Segundo: para modificar el ancho de banda que se dedica a los streams habría que usar Flash Media Server

En un trabajo reciente que hice donde debía cargar mucha data (mp3 + loops de video) hice un poll de carga al principio e iba habilitando a medida que se cargaban las cosas. En tu caso, eso haría que la sección tarde en estar disponible, cosa que no sería viable en tu estructura, con lo cual me parece que lo mejor que podrías hacer es mostrar la precarga del MP3 (por lo menos hasta que se llene un buffer razonable) Luego se puede ir ajustando el buffer o hacer algún tipo de manipulación pero en los NetStream, que ofrecen callbacks para eso (NetStream.Buffer.full, etc), por ejemplo http://www.adobe.com/devnet/flashmediaserver/articles/fms_buffering_strategies.html

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Abr 2008 11:18 pm
Gracias por tu respuesta Solisarg....

Si bien parecería ser cierto lo que dices de que todos los elementos cargados al mismo tiempo compiten por el mismo ancho de banda... esto no es así:

Hice una prueba en donde se cargan a la vez 9 videos (en realidad, secuencia de imágenes frame by frame) de 280x110px c/u

http://www.nfa-producciones.com/loops/

Los 9 swf, son, en realidad, el mismo archivo con otros nombres, para poder comparar bien el tema de la velocidad de carga. Al swf que carga los swf secundarios le puse una función “nocache\\\" para que al abrir cada vez la página, pueda probarlo, y no tenga que vaciar el cache del browser.

var nochache:String;
nocache = \\\"?nocaching=\\\"+random(65000);

Y el resultado no fue que todos cargaron lentamente al mismo tiempo, tampoco fue que cargaba uno hasta el final para cargar el siguiente…..

EL RESULTADO ES IMPREDECIBLE! DE PENDIENDO EL BROWSER, LA CONEXIÓN, EL CLIMA, LA HUMEDAD Y LOS RAYOS GAMMA CARGABAN ALGUNOS MAS RAPIDO QUE OTROS, Y NINGUNO EN ESPECIAL.
A veces algunos clips no empezaban a cargar hasta que no terminaban otros, a veces sí comenzaban todos; dentro de este último caso, a veces algunos cargaban en seguida mientras que otros lo hacían lentamente (recuerda que eran secuencias de imágenes frame by frame, por lo cual podía ver el avance cuadro por cuadro del video).

Los únicos patrones que encontré fueron los siguientes:

Opera: Carga siempre los primero 4 swf, hasta que no termina el 1ro, o alguno, no carga el 5to, y así sucesivamente.

IE7: Carga los 9 swf prácticamente a la vez. Pero le da mucha mas prioridad al 1ro. (lo cual tendría cierta lógica).

IE6: Al igual que en IE7, carga todos prácticamente a la vez, PERO A VECES CARGA TODOS MENOS UNO DEL MEDIO, EL 6 O EL 7 !!! Y recién cuando termina de cargarlos en su totalidad a los 8 restantes, carga el que falta. Igual, esto ocurre solo en ocasiones.

FireFox: Carga los primeros 2 swf, cuando termina el primero, carga el tercero. De vez en cuando carga 3 a la vez.

Si quieren testearlo ustedes mismos, y contarme como les fue, acá les dejo el link nuevamente:

http://www.nfa-producciones.com/loops/

Ahora cuando tenga tiempo haré una prueba similar, pero con un swf repetido muchas veces, con un loading bar en c/u. aunque imagino que el resultado será el mismo: IMPREDECIBLE.

Y Con respecto a Flash Media Server, yo no manejo el hosting del cliente, así que dudo que me den bola si les planteo contratar algo así.

Así que pues, sigo con el problema. Y lo curioso es que en mi prueba el IE7 le da prioridad al primer swf llamado, por lo cual el sonido no debería entre cortarse al llamar a una sección. La música se cargará si o si antes de que el usuario escoja cualquier sección. El cliente quiere la música de entrada (no hay forma de convencerlo de que es menos invasivo para el usuario el poder escoger si quiere o no reproducir música, y no tener que buscar el botón de “stop” o “sound off”).

Por lo tanto, sigo teniendo el problema de que se entre corta el sonido al cargar las secciones restantes.

Besos, Vicky!

Por Vicky_25

10 de clabLevel



Genero:Femenino  

Argentina/España

opera
Citar            
MensajeEscrito el 29 Abr 2008 12:07 am
Jajaja! ahora en IE7 terminó de cargarme el archivo 9, antes que los demas, y el primero, quedo entre los ultimos! ya no se que pensar!!!

Pd: Perdon por mi falta de html en mi anterior post, soy nueva en esto. :oops:

La url era http://www.nfa-producciones.com/loops/

:)

Besos, Vicky!

Por Vicky_25

10 de clabLevel



Genero:Femenino  

Argentina/España

opera
Citar            
MensajeEscrito el 29 Abr 2008 01:02 am
Tus pruebas sólo confirman lo que dice solisarg: los archivos compiten por el ancho de banda, no lo comparten, eso hace que sea impredecible cuál se carga primero y cual después, porque dependerá de cómo van llegando los paquetes.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 29 Abr 2008 01:22 am
Ahhhhh, yo entendía "competir" como a "compartir"....

Igual, seguiré investigando, por que ya el hecho de que los diferentes Browsers tengan diferentes patrones en cuanto al orden de descarga, (recordemos que en IE aparecen todos a la vez, en FireFox 2, y en Opera 4) me hace pensar que existe algún método de manipulación de esto, al menos, externamente a flash. Si cada Browser tiene la capacidad de determinar y manipular cuantos archivos puede, el plugin de flash, bajar simultáneamente, entonces quizá exista alguna forma en ajax para controlar esto.

Si alguien mas tiene idea de esto, o, al menos, se le ocurre como solucionar mi problema, se lo agradeceré.
Y gracias a vos Fricky! por aclararme lo de solisarg. :)

Besos, Vicky!

Por Vicky_25

10 de clabLevel



Genero:Femenino  

Argentina/España

opera
Citar            
MensajeEscrito el 05 May 2008 04:21 am
Se me ocurre ahora, que con el evento onLoadProgress de la clase MovieClipLoader, y alguna otra cosa mas que me este faltando... se podría solucionar mi problema. Pero realmente pienso, pienso, pruebo y pruebo y por ahora... NADA!

¿A alguien se le ocurre como solucionar mi problema con algún dato que me este faltando?

Lo cierto es que la clase MovieClipLoader, no permite "pausar" la descarga de un archivo... por lo cual mi idea para que no se entrecorte el sonido mientras carga alguna sección pesada, seria la siguiente: (es medio ridícula, debo admitir)

Con un listener controlar el buffer del sonido, si este baja demasiado, que genere un "unloadClip" de la sección que se este cargando, que espere unos pocos segundos, y que luego vuelva a cargar la sección. Total, cuando un archivo es detenido mientras se descarga, y luego vuelve a cargarse, la carga continua desde donde estaba, por que queda en el cache. Al menos eso compruebo yo en mis experimentos....

La cuestión es que si bien ya tengo una idea (ridícula, vuelvo a decir, y dudo que funcione), NO TENGO IDEA DE COMO HACERLA!!!!
Si alguien me puede ayudar, desde ya muchas gracias!!!!!!!!

Besos, Vicky!

Por Vicky_25

10 de clabLevel



Genero:Femenino  

Argentina/España

opera
Citar            
MensajeEscrito el 05 May 2008 09:35 am
Si es AS2, por más unload que ejecutes, el archivo bajará hasta el final. Muchos archivos pesados cargados al mismo tiempo es un problema de diseño. Si alguno de ellos es imprescindible, pues habrá que esperar a que esté cargado.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 May 2008 03:24 am
Lo Imprescindible, sería que el cliente entienda que no puede poner mp3 de mas de media hora, (por mas que estén a 96kbps) que suenen todo el tiempo y que pretenda que las secciones, que también son pesadas (y eso también es por cuenta del cliente, que me hace poner pngs pesadísimos), carguen sin que se corte el buffer del sonido en ocasiones.

Pero bueno, de esto trata este trabajo... es un tire y afloje con los clientes.
Gracias Solisarg, de vuelta. No sabía eso de que en AS2 si cargo un archivo, este sigue descargándose por mas que le ponga "unloadClip"
Me generaste una duda, y bueno, fui y lo comprobé y tienes razón....
En AS3 no sucede esto? Realmente no me he sentado mucho a aprender AS3.

Besos, Vicky!

Por Vicky_25

10 de clabLevel



Genero:Femenino  

Argentina/España

opera
Citar            
MensajeEscrito el 06 May 2008 09:26 am
En AS3 puedes cancelar la descarga con Loader.close()

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 May 2008 03:13 pm
Gracias por la info Solisarg.

Lastima que ni por pu** migro la programación de este sitio a AS3. :twisted:

Ya de por si AS3 es una tarea pendiente. :oops:

Ahora te pregunto: Si con loadMovie (me dio como nostalgia nombrarlo :cry: ), cargo un swf en algún clip, y en medio de su descarga, cargo OTRO archivo al mismo MC para que lo remplace.... ¿El anterior también sigue descargándose del servidor a la PC del usuario?
O sea, caso práctico: Imaginemos una MC central en la pantalla donde se cargarán las secciones, y 10 botones arriba, donde cada uno carga una sección en ese MC central con LoadMovie….

Si yo toco los 10 botones uno detrás del otro en unos pocos segundos…. ¿Me va a descargar del servidor las 10 secciones? Yo pensaba que solo la última, y que por el solo hecho de estar remplazando un MC con otro archivo SWF, el anterior dejaba de descargarse…

El reproductor de MP3 de la página que estoy armando, tiene una lista de 30 canciones….
O sea que si el usuario toca tema por tema, por que no le va gustando ninguno….
LE VA A DESCARGAR LOS 10, 20 o 30 MP3???!! :shock: :crap:

AL DECIMO TEMA QUE QUIERA ESCUCHAR, POR MAS BANDA ANCHA QUE TENGA, SE LE VA A ENTRE CORTAR EL SONIDO SI O SI!!!!!

Pero es raro… Yo he visto mp3Players en flash (y no hechos con AS3, por que hablo de hace unos cuantos años) con largas listas, y me ha pasado de escuchar a penas unos segundos de cada tema, y al llegar a los últimos no se me entre cortaba, ni tampoco tardaba en empezar a reproducirlo…

¿Que tan seguro estas Solisarg?

¿No habrá otra forma de hacerlo?

Gracias por la información.

Besos, Vicky!

Por Vicky_25

10 de clabLevel



Genero:Femenino  

Argentina/España

opera
Citar            
MensajeEscrito el 06 May 2008 05:34 pm
Cuando haces un loadSound con streaming a true la cosa mejora, aunque si realmente quieres que eso funcione bien tendrías que usar FMS o Red5
Seguro está preso, así que si descubres algo nuevo ya nos cuentas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 May 2008 09:43 am
JAJAJAJA! Gracias, como siempre, Solisarg.

El mp3 player lo armé con el componente “list” nativo de flash. Aunque customatizé el diseño de todos los botones, scroll, etc (lo que me costó, no te das una idea).

Y…BUENAS NOTICIAS!!!

Aunque sigo con el problema que llevó a crear este post….

Hice una prueba, subí todos los mp3 pesadísimos de mi cliente, que, como ya dije, son pesados por el tiempo de duración, por que la calidad es de 96kbps. Y a pesar de ser AS2, cuando escojo de la lista otro tema, la descarga del anterior se detiene. Lo comprobé por que puse los últimos temas en la lista xml, haciendo referencia a mp3 que no estaban cargados en el servidor, y cuando los tocaba, veía como mi router dejaba de transmitir datos.
También hice la prueba de escuchar apenas unos pocos segundos de cada tema y pasar al siguiente, de los mas de 20 que cargué, y no se entre corto para nada la música. Y cada tema empezaba a reproducirse casi instantáneamente.

Así que definitivamente en AS2 se puede detener la descarga de un archivo.

Pero yo aun sigo con mi problema…. Cuando recién carga la página (que ya empieza a reproducir el primer tema) si pongo a cargar una sección, el sonido se entre corta.
Lo mismo si, una vez ya navegando por la página, escojo escuchar un tema, o justo termina una canción y empieza a cargar la otra, y en los primeros 10 segundos que carga un mp3, escojo cargar una sección… el mp3 se cuelga, por insuficiencia del buffer.
De allí la creación de este post, y mi duda sobre si se podía asignarle prioridad a un archivo que se este descargando, por sobre otro.

Todavía no encuentro la forma, pero ahora que comprobé que se puede detener la descarga de un archivo en AS2, entonces mi idea de hacer alguna función para que controle el buffer del mp3 en reproducción, y que si este está muy bajo, detenga la descarga de la sección que estoy intentando cargar, espere unos segundos y vuelva a cargarla (que seguiría descargándola desde donde estaba, por que queda en cache, y eso también lo comprobé con los mp3 del player), ya no es tan “ridícula” o “descabellada”.
Y como el preloading de las secciones esta sujeto a la película principal, la barra de “cargando sección” no desaparecería, sino que se detendría unos segundos mientras carga más buffer del mp3.

El problema es que el código para el mp3Player no lo armé yo, lo tomé de una página de tutoriales hace años, cuando recién empezaba a programar, miré el código, no entendí nada en ese momento, así que lo guardé y recién ahora lo estoy utilizando, que se bastante mas de AS2.
Por lo cual, si bien entiendo bastantes cosas, y he modificado otras, no se exactamente donde está dentro del código la parte que detenga la descarga.

Te dejo el código del mp3Player:

Código :

import mx.utils.Delegate;
import mx.controls.List;
_global.mainTL = this;
var myTunes:Sound;
var continuous:Boolean = false;
var pauseTime:Number;
var listData:Array = new Array();
var songList_xml:XML;
var songList_ls:List;
_global.style.setStyle("color",0xffcf00);
_global.style.setStyle("themeColor","haloOrange");
_global.style.setStyle("fontSize",10);
_global.style.setStyle("fontFamily","Verdana");
_global.style.setStyle("embedFonts","false");
songList_ls.rowHeight = 16;
songList_ls.rowCount = 4;
songList_ln.selectable = false;
songList_ls.multipleSelection = false;
songList_ls.setStyle("alternatingRowColors",[0x000000, 0x000000]);
pausePlay_pb.label = "--";
pausePlay_pb.addEventListener("click",Delegate.create(this, pausePlay));
next_pb.label = "next >>";
next_pb.addEventListener("click",Delegate.create(this, nextTrack));
prev_pb.label = "<< previous";
prev_pb.addEventListener("click",Delegate.create(this, prevTrack));
continuous_ch.label = "continuous";
continuous_ch.selected = false;
continuous_ch.addEventListener("click",Delegate.create(this, playMode));
function pausePlay(eventSrc:Object):Void {
   var bttnState:String;
   bttnState = eventSrc.target.label;
   switch (bttnState) {
      case "--" :
         break;
      case "pause" :
         pauseTime = myTunes.position;
         myTunes.stop();
         pausePlay_pb.label = "resume";
         break;
      case "resume" :
         myTunes.start(pauseTime/1000);
         pausePlay_pb.label = "pause";
         break;
   }
}
function nextTrack():Void {
   if (songList_ls.selectedIndex == undefined) {
      songList_ls.selectedIndex = 0;
   } else if (songList_ls.selectedIndex == listData.length-1) {
      songList_ls.selectedIndex = 0;
   } else {
      songList_ls.selectedIndex++;
   }
   songList_ls.dispatchEvent({type:"change", target:songList_ls});
}

function prevTrack():Void {
   if (songList_ls.selectedIndex == undefined) {
      songList_ls.selectedIndex = 0;
   } else if (songList_ls.selectedIndex == 0) {
      songList_ls.selectedIndex = listData.length-1;
   } else {
      songList_ls.selectedIndex--;
   }
   songList_ls.dispatchEvent({type:"change", target:songList_ls});
}
function playMode():Void {
   mainTL.continuous = continuous_ch.selected;
}
volume_mc.slider_mc.onPress = function() {
   this.startDrag(false,0,this._y,200,this._y);
   this.onEnterFrame = function() {
      myTunes.setVolume(Math.floor(this._x/2));
   };
};

volume_mc.slider_mc.onRelease = function() {
   this.stopDrag();
   delete this.onEnterFrame;
};
songList_ls.addEventListener("change",Delegate.create(this, doPlay));
function formatTime(theSource:Number):String {
   var elapsedTime = theSource;
   var elapsedM = Math.floor(elapsedTime/60000);
   var remaining = elapsedTime-(elapsedM*60000);
   if (elapsedM<10) {
      elapsedM = "0"+elapsedM;
   }
   var elapsedS = Math.floor(remaining/1000);
   remaining -= (elapsedS*1000);
   if (elapsedS<10) {
      elapsedS = "0"+elapsedS;
   }
   var elapsedFractions = Math.floor(remaining/10);
   if (elapsedFractions<10) {
      elapsedFractions = "0"+elapsedFractions;
   }
   var outputData:String = elapsedM+":"+elapsedS+":"+elapsedFractions;
   return outputData;
}

function displayStreaming(theSource:Object):Void {
   if (theSource.duration>0) {
      if (theSource.getBytesLoaded() == theSource.getBytesTotal()) {
         clearInterval(streamingID);
         mainTL.displayDuration_txt.text = "duration: "+formatTime(theSource.duration);
      } else {
         mainTL.displayDuration_txt.text = "streaming: "+formatTime(theSource.duration);
      }
   }
}
function displayPosition(theSource:Object):Void {
   if (theSource.position>0) {
      if (theSource.position == theSource.duration) {
         clearInterval(playingID);
         mainTL.displayPosition_txt.text = "completed: "+formatTime(theSource.position);
      } else {
         mainTL.displayPosition_txt.text = "position: "+formatTime(theSource.position);
      }
   }
}
function doPlay(eventSrc:Object):Void {
   clearInterval(streamingID);
   clearInterval(playingID);
   if (typeof myTunes == "object") {
      myTunes.stop();
      delete myTunes;
   }
   displayDuration_txt.text = "--";
   displayPosition_txt.text = "--";
   myTunes = new Sound();
   myTunes.loadSound(eventSrc.target.selectedItem.data,true);
   myTunes.setVolume(100);
   pausePlay_pb.label = "pause";
   streamingID = setInterval(displayStreaming, 200, myTunes);
   playingID = setInterval(displayPosition, 200, myTunes);
   myTunes.onSoundComplete = function() {
      if (mainTL.continuous) {
         nextTrack();
      } else {
         displayDuration_txt.text = "completed";
         displayPosition_txt.text = "completed";
         clearInterval(streamingID);
         clearInterval(playingID);
         myTunes.stop();
         delete myTunes;
         pausePlay_pb.label = "--";
      }
   };
}
songList_xml = new XML();
songList_xml.ignoreWhite = true;
songList_xml.onLoad = Delegate.create(this, songListLoaded);
function songListLoaded():Void {
   var mainNode:XMLNode = this.songList_xml.firstChild;
   this.songList_ls.dataProvider = listData;
   var resourceCount:Number = mainNode.childNodes.length;
   for (var i = 0; i<resourceCount; i++) {
      listData.addItem({label:i+1+". "+mainNode.childNodes[i].attributes.title, data:mainNode.childNodes[i].attributes.url});
   }
   songList_ls.selectedIndex = 0;
   songList_ls.dispatchEvent({type:"change", target:songList_ls});
}


Luego lo llamo con:

Código :

songList_xml.load ("songList.xml");


En fin, voy avanzando.... y aprendiendo...
Pero aun sigo con el problema. Que, si bien, no es la muerte de nadie, aprender a como detener la descarga de un archivo del servidor, podría servirme a mi, como a cualquier otro, a hacer un montón de otras cosas.

Se me ocurre, por ejemplo, una página que al comenzar, en el home, te de la posibilidad de navegarla de 2 formas diferentes, o que se trate de la presentación de 2 productos diferentes, (que llamarían a un swf , cada una de estas opciones, respectivamente). Entonces, sabiendo como detener la descarga de un swf, el usuario llegaría a la página, y mientras miraría el home y tomaría la decisión de a cual sección entrar, estas 2 ya podrían estar empezando a cargarse. Y cuando el usuario se decida, la sección que no fue elegida detendría su descarga.
De esta forma obtendríamos los siguientes Pros y Contras:

Pros:
- Cuando el usuario escoge que sección quiere ver, esta ya está cargada en una gran parte, quizá incluso en mas del 50% lo que lograría una mejor respuesta para con el usuario.

- Menos probabilidades de que el usuario deje la pagina al ver un preloading de una sección pesada.

Contras:
-Consumiría más transferencia tanto de nuestro servidor, como del usuario.

Pero bueno, esto es tan solo una de tantas ideas para lo que representaría el aprender a que un archivo deje de descargarse.
Así que bueno, si alguien encuentra identificar en que parte de este código esta situado esto, o, mejor aun, tiene una idea mas simple de algún código para detener la transferencia de un swf en AS2 (en AS3 ya nos explicó como hacerlo Solisarg)… sería de gran utilidad.

Desde ya muchas gracias, especialmente a vos, Jorge.
Besos, Vicky!

Por Vicky_25

10 de clabLevel



Genero:Femenino  

Argentina/España

opera
Citar            
MensajeEscrito el 08 May 2008 09:53 am
No lo detiene, sino que en un mismo objeto Sound hace un loadSound distinto, esto al contrario de lo que ocurre con loadMovie si detiene la descarga anterior. Es decir una descarga reemplaza a la otra, es decir que

Así que definitivamente en AS2 se puede detener la descarga de un archivo ... en un msimo objeto Sound

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 May 2008 12:18 pm
Resolví el Misterio!!!!

Ni tu, solisarg, ni yo, teníamos razón…
Al parecer, es todo un problema de compatibilidad de browsers… por no decir…
OPERA. Y al parecer es un Bug bastante groso…

Y he aquí la prueba: (y luego la demostración)

Como te había dicho antes, parecía que con el MP3 Player, cuando escogía otra canción, no se entre cortaba. Y a vos te pareció que esto era por que si hacía la carga en el mismo objeto con loadSound, allí si dejaba de descargarse el mp3 anterior. Pero que esto no ocurría con loadMovie.

Solisarg escribió:
“No lo detiene, sino que en un mismo objeto Sound hace un loadSound distinto, esto al contrario de lo que ocurre con loadMovie si detiene la descarga anterior.”


Bueno, resulta que no, resulta que TODO método que remplacé un archivo por otro, ya sea en el mismo clip con loadMovie, o en el mismo nivel con loadMovieNum, o con MovieClipLoader, tanto haciéndolo sobre un MC, o creando uno con createEmptyMovieClip…. Resulta que SIEMPRE que se remplace a uno que se esté cargando, ESTE SE DETIENE.
Y EL PROBLEMA ERA CON EL MALDITO OPERA, QUE ES EL ÚNICO BROWSER QUE NO LO HACE. :twisted:

Como lo descubrí: de repente navegando por una de estas interminables páginas de myspace que parecen nunca terminar… se empieza a colgar el sonido. Y yo pensé que era por la maldita página infinita. Entonces abrí el “mp3player” en otra ventana y cerré la pagina que media como 200 metros de lago….
Y noto que si escuchaba un mp3 unos pocos segundos y pasaba al siguiente, cuando llegaba al 5to o al 6to se cortaba el sonido…
Allí nomás, borre el cache del opera, cargué la pagina que estoy armando, y veo que también pasaba con mi reproductor….

Y se hizo la luz

Cargo mi página y también ese reproductor de myspace en FireFox, en Internet Explorer 7, luego en el 6, incluso en el Safari para windows… Y TODO ANDABA PERFECTO: Podía ir tema tras tema en mi reproductor como en el de myspace, escuchar unos pocos segundos, y nunca se colgaba…
Pero recordando que me habías dicho que esto ocurría con eventos de sonido, y no podía ocurrir con un LoadMovie, allí nomás hice varias pruebas con:

loadMovie
loadMovieNum
MovieClipLoader (con un MC como holder)
MovieClipLoader (con un MC creado con createEmptyMovieClip, como holder)

Y la pu** madre que los re parió!!! Todos, absolutamente con todos los métodos, cuando tocaba un archivo dejaba de descargar el anterior. En el único lugar donde no pasaba era en el maldito OPERA (que tanto amaba :cry: )

En el OPERA, con cualquier método, siempre descarga los archivos, no importa cuantas veces lo remplaces con otro.

Acá te dejo para que lo pruebes (y cualquier otro interesado también, en especial los que usan otros exploradores), el ejemplo mas “oldie” que armé, con loadMovieNum, para que compruebes vos también que se detiene la descarga de archivos. Lo armé así nomás, no le puse preloader ni nada, son 3 botones, que llaman a 3 swf respectivamente. Los primeros 2 swf, tienen una foto (pesadas, de mas de 1mb, y achicada dentro de flash, para poder comprobar bien el asunto) y el TERCER botón, carga un swf que es un degradado vectorial que pesa menos de 1kb.
A los 3 llamados les puse “nocache” para que cada vez que toques el botón vuelva a cargar el swf de nuevo y puedas volver a comprobarlo.

O sea, ¿que puedes comprobar?:

En todos los exploradores que nombre menos en Opera:

- Presiona alguno de los 2 primeros botones y luego el tercero: la imagen roja vectorial. Y veras como el MODEM o ROUTER ya no siguen descargando datos. ( Si estas bajando algo con el emule o haciendo otra cosa, obviamente no podrás notarlo).

En Opera:

- Presiona alguno de los 2 primeros botones y luego el tercero: la imagen roja vectorial. Y veras como el MODEM o ROUTER SIGUEN TRANSFIRIENDO DATOS.

- Y acá lo mas divertido, presiona 40 o 50 veces sobre el botón 1 o 2, o en ambos, y luego presiona la imagen vectorial. JAJAJAJAJA PASARAN HORAS EN QUE APAREZCA LA MALDITA IMAGEN DE 1KB EN OPERA. Es mas, a mi a veces me sale el famoso “Un script parece estar… desea cancelar…”

Si haces lo mismo en cualquier otro explorador, si presionas todas las veces que quieras el botón, verás que esto no pasa. La imagen vectorial siempre la carga al instante. Y deja de transferir los datos de los otros archivos.

Aquí el link de prueba:

www.nfa-producciones.com/carga

(Recuerden que los 2 primeros 2 swf son de 1mb y no tienen preloader, así que en vez de mirar la pantalla miren las “lucecitas” de su Modem o Router).

También pensé que podía ser la versión del player de flash, aunque es raro por que la comparte con FireFox, y demás exploradores menos IE. Y en todos los demás no pasaba esto.
Entonces también realice pruebas con las siguientes versiones del player de flash:

Para IE:
9.0.45.0
9.0.47.0
9.0.124.0

Para FireFox, Opera, etc:
9.0.16.0
9.0.28.0 (por si alguno le interesa saber, creo que a partir de esta versión, es en la que funciona el fullScreen)
9.0.45.0
9.0.47.0
9.0.115.0
9.0.124.0

Y en todas las pruebas lo mismo:
OPERA: Descarga los archivos hasta el final, no importa el método que uses para remplazarlo.
Demás exploradores (al menos los que mencione antes): Dejan de transferir datos. Y no se “cuelga” cuando tocas 50 veces el boton para cargar los 2 primeros swf.

La explicación del cuelgue en Opera es simple: Para poder realizar la prueba, como ya dije, tiene la función “nocache” para que siempre cargue el archivo nuevamente y no lo tome del cache.
Pero claro, como en opera no se “interrumpe” la descarga, cada vez que lo presionamos, el browser le pide al servidor:

foto1.swf?nocaching=40154
foto1.swf?nocaching=12565
foto1.swf?nocaching=34566
foto1.swf?nocaching=53542
foto1.swf?nocaching=43449
foto1.swf?nocaching=23541

Y TODOS estos archivos son descargados, más allá de que solamente se cargará y visualizará el último. (y mas allá de que es el mismo archivo, con una variable en el nombre).

Esto en los demás exploradores funciona así:

Toco el botón “FOTO 1”, empieza a descargar:
foto1.swf?nocaching=34984
Vuelvo a tocar el botón “FOTO 1”,
Se detiene la descarga de foto1.swf?nocaching=34984
Y comienza a cargar:
foto1.swf?nocaching=59328

Entonces solo baja UN archivo. Presionen en IE el botón FOTO 1, las veces que quieran, luego toquen “VECTOR” y verán que el swf vectorial se carga en seguida.

Presionen “FOTO 1” en OPERA unas 50 veces y después me cuentan si alguna vez les apareció la imagen, o les dejo de transferir datos…

Ojo, quizá es un problema de mi versión de OPERA. Tampoco tengo tanto tiempo para hacer tantas pruebas. Así que si a alguien no le sucede este “bug” en OPERA, por favor, díganmelo…

A mi ya me parecía raro, muchas cosas en flash me andaban medio mal en el opera…

Y mas raro aun me parecía la idea de que no se pueda detener la descarga de un archivo swf, al cargar otro en el mismo nivel, o MC, etc etc…. Como me decías vos Jorge…

Así que bueno che, te agradezco especialmente a vos, por que tus “pautas” fueron las que me llevaron a descubrir que estaba pasando “realmente”. (Comillas muy bien puestas por que tranquilamente puedo estar equivocada).

Ahora ya se que se puede detener la descarga de un archivo, pero aun me falta ver la forma en que programo que cuando el buffer se este quedando corto, remplace la sección que se este cargando con alguna otra vacía (total esto no se ve), y luego de unos segundos que siga cargando la sección, ya con mas buffer para el mp3. Obviamente no le puedo poner “nocache” a las secciones por que sino, en el caso de detenerse, cuando vuelva a cargar, lo hará desde el principio, y no desde donde estaba.
Ya estoy a UN paso de resolver mi problema.
Gracias de nuevo, jorge.

Pd: Si a otros les sucede lo mismo con el opera, ¿Deberíamos reportar el bug en algún lado?

Besos, Vicky!

Por Vicky_25

10 de clabLevel



Genero:Femenino  

Argentina/España

opera
Citar            
MensajeEscrito el 09 May 2008 12:30 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.