Precarga de Applets

nIQuiTen
11 de Noviembre del 2003
Hola Señores del Java: he caído aqui luego de millones de vueltas por la web y por mi cabeza con un problema que tengo para detectar el estado de carga de un applet. El problema completo es el que detallo abajo, para el que intenté buscar soluciones con ASP, con Javascript y, ya casi dándome por vencido, con Java. Espero que a alguno de uds se le ocurra ALGO...chas gracias a todos.
Aca va todo el choclo:

Se trata de una página ASP que carga applets de tour virtuales dinámicamente, o sea, según el código de una propiedad busca en la carpeta de applets si existe ese applet y en tal caso habilita el link al a esta página que contiene el tour virtual. Ya dentro de la página nos encontramos con 2 applets, uno del plano de la propiedad y un segundo que va cargando los distintos ambientes.

La url para ver la página es la sgte: http://www.amaira.com/tour/INS2/360_0.asp?ficha=413

Esta página, como te dije, carga los applets dinámicamente, con ASP y Javascript. Mediante un combo que ejecuta la sgte función Javascript al evento "OnClick": document.applets["Applet1"].load (la misma función ejecuta el plano de la derecha para cada ambiente), cargo cada applet reemplazando el que me carga cuando abre la página (el del plano de la propiedad). El tema es que cuando cargo un applet nuevo en la página para reemplazar al que carga por default tarda un rato porque pesa un poquito, y el otro sigue cargado mientras, entonces da la sensación de que no está cargando nada. Para solucionar eso traté de hacer algo con settimeOut() y cleartimeOut() respondiendo a un if que tenía como condicion "document.applets["Applet1"].complete". El tema es que creo que el ¿objeto? "applets["Applet1"]" no soporta esta propiedad que tienen las imágenes, y tampoco hay un "unload" que me descargue el applet viejo antes de cargar el nuevo. Yo intentaba además hacer visible el layer "loading", que dice "cargando" mientras el applet no esté cargado. Pero como no detecta el applet cargado, lo vuelve visible, pero luego una vez que está cargado el tour no me hace nuevamente invisible el layer. El problema con el que me encontré también, es que el settimeOut() me enviaba nuevamente al comienzo del script, y esto hacía que se me cargara nuevamente el applet por la propiedad "..applets["Applet1"].load", lo que me volvía circularmente infinita la rutina.
En fin, te adjunto el script completo , a ver si se te ocurre como hacerlo funcionar, o alguna otra solución paralela:

function showView(v)
{
document.applets["Applet1"].load(v);
document.frmAmbientes.Ambientes.value = v;

if (document.applets["Applet1"].complete)
{
loading.style.visibility="hidden";
clearTimeout();
}
else
{
loading.style.visibility="visible";
settimeOut('showView()',1000);
}

}