Comunidad de diseño web y desarrollo en internet online

Navegando entre swf's en AS3

Citar            
MensajeEscrito el 22 Mar 2008 01:54 pm
Hice una página que voy a llamar de 0 en la cual coloqué un DisplayObjectContainer (elejí um Sprite) al que llamé de Container.

var container:Sprite = new Sprite();
addChild ( container );
container.x = 0;
container.y = 0;

Utilizando la clase Loader cargué en él un sfw externo que llamé de 1.

var ldr:Loader = new Loader ();
ldr.load( new URLRequest( "swf/1.swf" ) );
container.addChild( ldr );

Este swf tiene 3 botones que voy a llamar de Azul, Verde y Rojo.
Mi intención es que quando el usuario clique en el botón Azul se cargue el swf (externo) azul.swf y lo mismo ocurra con los botones Verde y Rojo cargando respectivamente el verde.swf y el rojo.swf.

Mi pregunta es: como hago para que quando los swf vayan siendo cargados substituyan al 1 y no queden por encima?

Desde ya muchas gracias

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 22 Mar 2008 06:29 pm
Si lo sustituyes te quedas sin botones ... ¿ o estás repitiendo los botones en todas las pelis?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Mar 2008 07:16 pm
Jorge: Tengo los botones en todas las pelis.

Hice lo siguiente: en todas ellas coloque el container

var container:Sprite = new Sprite();
container.x = 0;
container.y = 0;
addChild( container );

y está funcionando. Ahora mi duda es la siguiente, como sé que las pelis relamente están se substituyendo y no se está apilando unas encima de otras.

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 22 Mar 2008 07:26 pm
Eso es un error conceptual: nada que se repita debe ser vuelto a cargar.
Anyway, vacía el contenedor antes de cargar. Para eso primero lo tienes que identificar de alguna manera, por ejemplo:

var container:Sprite = new Sprite();
container.name = "contenedor"
addChild ( container );


Luego lo recuperas

var container = getChildByName("contenedor")
var cant:Number = container.numChildren
for(var i:Number; i>=0; i--) container.removeChildAt(i)

Luego ya lo tienes fuera .... o te cargas el container entero y lo vuelves a crear.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Mar 2008 09:28 pm
Jorge voy a abusar de tu buena voluntad, realmente no entendí como colocar ese código en las páginas.

Te mando a continuación el código actual:

//////// Primera página que manda automáticamente cargar la 1 ///////////

var ldr:Loader = new Loader();
ldr.load( new URLRequest ("1.swf") );

var container:Sprite = new Sprite();
container.x = 0;
container.y = 0;

addChild(container);
container.addChild(ldr);



///////// Página 1 que va cargar la rojo, azul o verde ///////


//Button btnRojo
//Button btnVerde;
//Button btnAzul;

// INICIALIZACIONES Y VARIABLES

var container:Sprite = new Sprite();
container.x = 0;
container.y = 0;

addChild(container);

var cargador:Loader = new Loader ();
var direccion:URLRequest = new URLRequest();
container.addChild( cargador );

// OUVIDORES DE EVENTOS

btnRojo.addEventListener( MouseEvent.CLICK, btnRojo_CLICK);
btnVerde.addEventListener( MouseEvent.CLICK, btnVerde_CLICK );
btnAzul.addEventListener( MouseEvent.CLICK, btnAzul_CLICK );

// FUNCIONES DE EVENTOS

function btnRojo_CLICK(evento:MouseEvent):void

{
direccion.url = ( "rojo.swf" );
cargador.load( direccion );
}

function btnVerde_CLICK (evento:MouseEvent):void

{
direccion.url = ( "verde.swf" );
cargador.load( direccion );
}

function btnAzul_CLICK (evento:MouseEvent):void

{
direccion.url = ( "azul.swf" );
cargador.load( direccion );
}

/////////// rojo.swf ///////////////


//Button btnVerde;
//Button btnAzul;

// INICIALIZACIONES E VARIABLES

var container:Sprite = new Sprite();
container.x = 0;
container.y = 0;
addChild(container);

var cargador:Loader = new Loader ();
var direccion:URLRequest = new URLRequest();
container.addChild( cargador );

// OIDORES DE EVENTOS

btnVerde.addEventListener( MouseEvent.CLICK, btnVerde_CLICK );
btnAzul.addEventListener( MouseEvent.CLICK, btnAzul_CLICK );

// FUNCIONES DE EVENTOS


function btnVerde_CLICK (evento:MouseEvent):void

{
direccion.url = ( "verde.swf" );
cargador.load( direccion );
}

function btnAzul_CLICK (evento:MouseEvent):void

{
direccion.url = ( "azul.swf" );
cargador.load( direccion );
}

Por Ishkandar

Claber

303 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 22 Mar 2008 09:40 pm
Tienes un problema de diseño, y eso hace que se tenga que repetir código por doquier, y que todo sea larguísimo. El problema es que yo con más de 10 líneas ya me pierdo, así que solo puedo sugerirte que la botonera sea una sola, no se recarga, y manda a cargar el swf en el mismo contenedor cada vez. Adicionalmente, los problemas de diseño hacen imposible escalar cualquier mecanismo

Jorge

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.