Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/08/2005, 13:49
Avatar de touza
touza
 
Fecha de Ingreso: febrero-2003
Ubicación: barcelona
Mensajes: 65
Antigüedad: 21 años, 9 meses
Puntos: 0
Abrir ventana y cerrar otra

Yo tengo una animación .swf dentro de un html. Dentro del html he metido un script al que llamo desde un botón del .swf . Veamos, este es el script que he puesto en el html:

<script>
<!--
function coolIntro2()
{
if (!document.layers&&!document.all&&!document.getEle mentById)
{
paramstp="height=580,width=796,top=0,right=0,scrol lbars=yes,location=no"+
",directories=no,status=no,menubar=no,toolbar=no,r esizable=yes"
var gwa=window.open("entrada.html","",paramstp);
if (gwa.focus){gwa.focus();}
return;
}
var movespeed=60;
var resizespeed=10;
var winreswidth=window.screen.availWidth;
var winresheight=window.screen.availHeight;
var leftspeed=winreswidth/movespeed;
var topspeed=winresheight/movespeed;
var movewidth=winreswidth;
var moveheight=winresheight;
var widthspeed=winreswidth/resizespeed;
var heightspeed=winresheight/resizespeed;
var sizewidth=0;
var sizeheight=0;
var gwa=open("entrada.html","","left="+winreswidth+",t op="+winresheight+",width=100,height=100,toolbar=n o,menubar=no,location=no,status=no,scrollbars=yes, resizable=yes");
for (move=0;move<movespeed;move++)
{
gwa.moveTo(movewidth,moveheight);
movewidth-=leftspeed;
moveheight-=topspeed;
}
gwa.moveTo("750","0");

for (size=0;size<resizespeed;size++)
{
gwa.resizeTo(sizewidth,sizeheight);
sizewidth+=widthspeed;
sizeheight+=heightspeed;
}
gwa.resizeTo(winreswidth,winresheight);
if (gwa.focus){gwa.focus();}
}
// -->
</script>

La función que realiza este script es que me permite abrir una nueva ventana del navegador con un curioso efecto, ya que abre la venta desde la esquina superior izquierda hasta ajustarse a toda la pantalla. Funciona perfectamente, y lo único que tengo que hacer es poner el siguiente código en mi botón de flash:

on (press) {
getURL("javascript:coolIntro()");
}


Hasta aquí todo bien. Puede verse lo que quiero decir en la siguiente dirección: http://comunidad.jrey.net Sólo hay que pinchar en alguno de los 4 botones.

Lo que quiero hacer ahora es que cuando pinche en alguno de los botones se abra una nueva ventana, como viene haciéndose hasta ahora, y se cierre la primera ventana, en la que están los 4 botones. He probado a poner esto pero no funciona:

on (press) {
getURL("javascript:coolIntro()");
}
on (press) {
getURL("javascript:window.close();window.open('ind ex.html','index','width=100,height=200')");
}

Index.html es la ventana en la que tengo el .swf con el botón que abre la nueva ventana.


Por otra parte, y ya aprovechando, pues tengo otra consulta acerca del script. No sé si es posible hacer lo que pido, pero bueno....

Como tengo 4 botones y quiero que cada uno me abra un html diferente, lo que he hecho es poner todo esto en el index.html :

<script>
<!--
function coolIntro2()
{
if (!document.layers&&!document.all&&!document.getEle mentById)
{
paramstp="height=580,width=796,top=0,right=0,scrol lbars=yes,location=no"+
",directories=no,status=no,menubar=no,toolbar=no,r esizable=yes"
var gwa=window.open("entrada2.html","",paramstp);
if (gwa.focus){gwa.focus();}
return;
}
var movespeed=60;
var resizespeed=10;
var winreswidth=window.screen.availWidth;
var winresheight=window.screen.availHeight;
var rightspeed=winreswidth/movespeed;
var topspeed=winresheight/movespeed;
var movewidth=winreswidth;
var moveheight=winresheight;
var widthspeed=winreswidth/resizespeed;
var heightspeed=winresheight/resizespeed;
var sizewidth=0;
var sizeheight=0;
var gwa=open("entrada2.html","","right="+winreswidth+" ,top="+winresheight+",width=100,height=100,toolbar =no,menubar=no,location=no,status=no,scrollbars=ye s,resizable=yes");
for (move=0;move<movespeed;move++)
{
gwa.moveTo(movewidth,moveheight);
movewidth-=rightspeed;
moveheight-=topspeed;
}
gwa.moveTo("750","0");

for (size=0;size<resizespeed;size++)
{
gwa.resizeTo(sizewidth,sizeheight);
sizewidth+=widthspeed;
sizeheight+=heightspeed;
}
gwa.resizeTo(winreswidth,winresheight);
if (gwa.focus){gwa.focus();}
}
// -->
function coolIntro()
{
if (!document.layers&&!document.all&&!document.getEle mentById)
{
paramstp="height=580,width=796,top=0,left=0,scroll bars=yes,location=no"+
",directories=no,status=no,menubar=no,toolbar=no,r esizable=yes"
var gwa=window.open("entrada.html","",paramstp);
if (gwa.focus){gwa.focus();}
return;
}
var movespeed=60;
var resizespeed=10;
var winreswidth=window.screen.availWidth;
var winresheight=window.screen.availHeight;
var leftspeed=winreswidth/movespeed;
var topspeed=winresheight/movespeed;
var movewidth=winreswidth;
var moveheight=winresheight;
var widthspeed=winreswidth/resizespeed;
var heightspeed=winresheight/resizespeed;
var sizewidth=0;
var sizeheight=0;
var gwa=open("entrada.html","","left="+winreswidth+",t op="+winresheight+",width=100,height=100,toolbar=n o,menubar=no,location=no,status=no,scrollbars=yes, resizable=yes");
for (move=0;move<movespeed;move++)
{
gwa.moveTo(movewidth,moveheight);
movewidth-=leftspeed;
moveheight-=topspeed;
}
gwa.moveTo("0","0");

for (size=0;size<resizespeed;size++)
{
gwa.resizeTo(sizewidth,sizeheight);
sizewidth+=widthspeed;
sizeheight+=heightspeed;
}
gwa.resizeTo(winreswidth,winresheight);
if (gwa.focus){gwa.focus();}
}
// -->
function coolIntro3()
{
if (!document.layers&&!document.all&&!document.getEle mentById)
{
paramstp="height=580,width=796,top=0,left=0,scroll bars=yes,location=no"+
",directories=no,status=no,menubar=no,toolbar=no,r esizable=yes"
var gwa=window.open("entrada3.html","",paramstp);
if (gwa.focus){gwa.focus();}
return;
}
var movespeed=60;
var resizespeed=10;
var winreswidth=window.screen.availWidth;
var winresheight=window.screen.availHeight;
var leftspeed=winreswidth/movespeed;
var topspeed=winresheight/movespeed;
var movewidth=winreswidth;
var moveheight=winresheight;
var widthspeed=winreswidth/resizespeed;
var heightspeed=winresheight/resizespeed;
var sizewidth=0;
var sizeheight=0;
var gwa=open("entrada3.html","","left="+winreswidth+", top="+winresheight+",width=100,height=100,toolbar= no,menubar=no,location=no,status=no,scrollbars=yes ,resizable=yes");
for (move=0;move<movespeed;move++)
{
gwa.moveTo(movewidth,moveheight);
movewidth-=leftspeed;
moveheight-=topspeed;
}
gwa.moveTo("0","0");

for (size=0;size<resizespeed;size++)
{
gwa.resizeTo(sizewidth,sizeheight);
sizewidth+=widthspeed;
sizeheight+=heightspeed;
}
gwa.resizeTo(winreswidth,winresheight);
if (gwa.focus){gwa.focus();}
}
// -->
function coolIntro4()
{
if (!document.layers&&!document.all&&!document.getEle mentById)
{
paramstp="height=580,width=796,top=0,left=0,scroll bars=yes,location=no"+
",directories=no,status=no,menubar=no,toolbar=no,r esizable=yes"
var gwa=window.open("entrada4.html","",paramstp);
if (gwa.focus){gwa.focus();}
return;
}
var movespeed=60;
var resizespeed=10;
var winreswidth=window.screen.availWidth;
var winresheight=window.screen.availHeight;
var leftspeed=winreswidth/movespeed;
var topspeed=winresheight/movespeed;
var movewidth=winreswidth;
var moveheight=winresheight;
var widthspeed=winreswidth/resizespeed;
var heightspeed=winresheight/resizespeed;
var sizewidth=0;
var sizeheight=0;
var gwa=open("entrada4.html","","left="+winreswidth+", top="+winresheight+",width=100,height=100,toolbar= no,menubar=no,location=no,status=no,scrollbars=yes ,resizable=yes");
for (move=0;move<movespeed;move++)
{
gwa.moveTo(movewidth,moveheight);
movewidth-=leftspeed;
moveheight-=topspeed;
}
gwa.moveTo("0","0");

for (size=0;size<resizespeed;size++)
{
gwa.resizeTo(sizewidth,sizeheight);
sizewidth+=widthspeed;
sizeheight+=heightspeed;
}
gwa.resizeTo(winreswidth,winresheight);
if (gwa.focus){gwa.focus();}
}
// -->
</script>


En realidad sólo he copiado y pegado el script 3 veces más, renombrándolo ( function coolIntro() , function coolIntro2()...) para poder abrir diferentes páginas según el botón, cuyo código también variará dependiendo de la parte del script que llamo:

on (press) {
getURL("javascript:coolIntro()");
}

on (press) {
getURL("javascript:coolIntro2()");
}


etc.....


Esto también me ha funcionado sin problemas. Ahora lo que quiero hacer es una pequeña chulería que no sé si es posible. El efecto del script es que la ventana se abra en la esquina superior izquierda y se despliegue hasta llenar la pantalla. Esto me está bien para el botón superior izquiero del .swf, pero quisiera que al presionar el botón superior derecho me hiciera el mismo efecto sólo que empezando a abrirse la ventana desde la esquina superior derecha, luego lo mismo con los otros botones ( al presionar el botón de abajo-izda que se abra la nueva ventana del explorador desde esta esquina ). He descubierto, lo que no era muy difícil, que basta con alterar los valores que se definen en esta parte del código:

gwa.moveTo("0","0");




...y que si no me equivoco no son más que los parámetros respecto al eje X y eje Y, que al ser 0 y 0 definen el principio de la acción en el ángulo superior izquierdo, o lo que es lo mismo el punto "0" "0" . Vale, la cosa es que ya he probado a cambiar estos valores y cada vez se me abre la ventana desde un sitio diferente, pero mi problema es que no sé como definir el punto más a la derecha de la pantalla sin tener que meter valores relativos y que cambiarán en función de la resolución y el tamaño del monitor de cada persona. Poner 0 y 0 es muy fácil, ya que siempre sabes que empezará desde el punto más a la izquierda y más arriba, ¿ pero como hago lo mismo si quiero empezar arriba a la derecha o abajo y a la izquierda ?. ¿Existen también valores absolutos que definan esta posición ?.


Bueno, perdonad por el rollazo.......


Saludos y gracias
__________________
Mi web es http:www.jrey.net