Comunidad de diseño web y desarrollo en internet online

Cargar Mcs en contenedores

Citar            
MensajeEscrito el 10 Ene 2016 07:18 pm
Hola.

No soy capaz de sacar un código valido en as2.

Empiezo explicando lo que tengo y lo que quiero para facilitarlo.

Tengo 5 contenedores vacíos en el escenario, vinculados para actión script y con nombre de instancia. Cont1, cont2, etc..

Tengo unos Mcs en la biblioteca vinculados también para aciton script.

Y un botón que ejecuta.

Quisiera que al pulsar el botón me cargase un Mc en el contenedor 1, "cont1". Eso no hay problema

on (release) {
cont1.attachMovie("Mc_1","clip",1);
}

El problema me viene con el "if" y con los "elseif".

Que cuando el "cont1" este cargado ya con un Mc, al pulsar el botón me lo cargase un Mc en el "cont2", al volver ha pulsar el botón si esta cargado ya el "cont1" y el "cont2" cargase un Mc en el "cont3" así hasta el "cont5"

Alguien podría ayudarme?

Gracias.

Un saludo

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 11 Ene 2016 01:35 pm
Prueba asi, pero poniendo en la linea de tiempo que contiene los botones, no en el boton. Suponiendo que el boton que apretas se llama miBoton sería

Código ActionScript :

var mcs:Array = [cont1,cont2,cont3,cont4,cont5];
var count:Number = 0;
miBoton.onPress = function(){
   var t = mcs.shift();
   if(t) {
           t.attachMovie("Mc_"+count,"clip",1);
      count++;
        }
}


Esto supone que tienes un Mc_1, Mc_2, etc en la biblioteca, sino cambia la parte del attachMovie

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Ene 2016 05:51 pm
Ok, probare a ver y te cuento.

Muchas gracias

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 15 Ene 2016 10:35 am
hola.

Funciona, pero no bien.

Al cargar, carga en orden 1,2 3 etc..

Aparte que es algo mas complicado.

Loa Mcs vacíos están en el escenario, el escenario contiene un Mc cargado "base", en el que dependiendo del botón que aprietes carga una img aleatoria que esta en otro Mc "carta", las img de ese Mc son btns, con esos btns son con los que quiero cargar en los Mcs vacíos del escenario.

Pero cada botón corresponde a una img concreta.

Cargarlos no es problema, el problema es que si el "cont1" esta cargado lo carge en el siguiente, y asi sucesivamente.

Pienso que se podría hacer con un" array" o con "if y elseif"

Igual es lioso, pero explicarlo por escrito es complicado.

Muchas gracias.

No he podido responder antes, por que tengo muy poco tiempo.

Un saludo.

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 15 Ene 2016 01:47 pm
Si es difícil explicarlo, es que puedes trabajarlo más hasta que llegues a un problema concreto que puedes explicar en pocas palabras. Concretar el problema es a veces casi tan difícil como resolverlo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Ene 2016 10:50 am
Hola.

Ok.

Haber empiezo desde el principio.

En el escenario tengo un Mc "Base", un botón "miBoton" y 6 Mcs vacíos "contenedor1, contenedor2, etc...".

El Mc "Base" son cartas por la parte trasera, cada carta es un botón, que según el botón que aprietes, esa carta se da la vuelta, y carga en un Mc vacío "carta" otro Mc de la biblioteca "todas" que contiene todas las cartas, y que sale una aleatoriamente.

Hasta aquí todo bien.

El Mc "todas" que contiene todas las cartas, cada carta es un botón.

Volviendo al escenario, que es donde se refleja todo esto, si pinchas sobre una carta y sale por ejemplo el dos de espadas, quisiera que al pulsar la carta dos de espadas se cargase ese Mc que esta en la biblioteca como Mc_16 en el Mc "contenedor1".

A la siguiente vez se pulsa una carta y si sale el 4 oros, al pulsar la carta 4 de oros, la cargase en el siguiente Mc "contenedor.." que este vacío.

Si el contenedor uno ya esta cargado, que cargase en el segundo contenedor, si ese ya estuviese cargado, cargase en el tercero.

Esto es con el fin de que quede una img de cada una de las cartas que has sido dadas la vuelta y saber que cartas han salido a cada uno.

El botón del escenario solo sirve para resetear el Mc "base y volver a ponerlo al principio, con todas las cartas dadas la vuelta.

Entonces y resumiendo:

El problema llega cuando al dar la vuelta a una carta, no se como hacer para que esa carta se cargase en un contenedor ( El primero que estuviese vacío) del escenario.

Por que cargarla en un Mc no es dificultad,

_root.contenedor1.attachMovie("Mc_16","clip",1);

Pero eso me lo cargaría siempre en el "contenedor 1", o en el dos, o en el que se pusiese.

No se si he sabido explicarlo.

Ah!! esta en as2

Muchas gracias y perdona si soy muy torpe.

Un saludo.

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 16 Ene 2016 02:00 pm
Me pierdo pero supongo que necesitas saber si los contenedores estan vacíos o no, entonces tienes que marcarlos

_root.contenedor1.attachMovie("Mc_16","clip",1);
_root.contenedor1.cargado = true

Cuando la quitas


_root.contenedor1.removeMovieClip("Mc_16");
_root.contenedor1.cargado = false;

Luego usas ese flag para saber si tiene algo o no.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Ene 2016 03:29 pm
Ok
Ahora no puedo probarlo.
Pero habria que comprobarlo antes de cargar para saber si es true o false.
Y hay me pierdo
Gracias
Un saludo

Por jeyn

33 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Ene 2016 05:18 pm
Para eso existe el comando if

Código ActionScript :

if(_root.contenedor1.cargado){
   //ya esta cargado
} else {
  //cargar
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Ene 2016 09:04 pm
Ahi es donde me lio, con if y else,
If si se cumple la condicion false carga en el contenedor1y la marca
Else si no cerga en el contenedor2 y lo marca

Pero no puedo continuar con pos siguientes contenedores, por eso decia lo del elseif.

O crear una funcion que los comprobase y llamarla desde el if

Por jeyn

33 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Ene 2016 09:28 pm
Perdona que aun estoy trabajando y no puedo escribir bien ni probar las cosas.
Pero llwvo todo en la cabeza dandole vueltas.

Gracias

Por jeyn

33 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Ene 2016 07:19 pm
Hola.

No soy capaz.

De momento me falla el "contenedor1" y el "contenedor6", sin explicación.
Comprobado el nombre de instancia y que esta vinculado para Actionscript.
Con la primera function que me enviaste no carga esos Mcs.

Código ActionScript :

var Mcs:Array = [contenedor1,contenedor2,contenedor3,contenedor4,contenedor5,contenedor6,contenedor7,contenedor8];
var count:Number = 0;//no cargan los contenedores 1 y 6
miBoton.onPress = function(){
   var t = Mcs.shift();
   if(t) {
          t.attachMovie("Mc_"+count,"clip",1);
      count++;
        }
}

var Mcs:Array = [contenedor1,contenedor2,contenedor3,contenedor4,contenedor5,contenedor6,contenedor7,contenedor8];
var count:Number = 1;//no cargan los contenedores 5 y 8
miBoton.onPress = function(){
   var t = Mcs.shift();
   if(t) {
          t.attachMovie("Mc_"+count,"clip",1);
      count++;
        }
}


Inexplicable para mi.

Al botón de resetear le he dado el código para que marque los Mcs vacíos como false.

Código ActionScript :

on (release) {
      contenedor1.unloadMovie("")
      contenedor1.cargado = false;
      
      contenedor2.unloadMovie("")
      contenedor2.cargado = false;
      
      contenedor3.unloadMovie("")
      contenedor3.cargado = false;
      
      contenedor4.unloadMovie("")
      contenedor4.cargado = false;
      
      contenedor5.unloadMovie("")
      contenedor5.cargado = false;
      
      contenedor6.unloadMovie("")
      contenedor6.cargado = false;
      
      contenedor7.unloadMovie("")
      contenedor7.cargado = false;
      
      contenedor8.unloadMovie("")
      contenedor8.cargado = false;
}


He usado unloadMovie en vez de removeMovieclip, eso me funciona, los vacía.

y por ultimo el código de los botones que deberían hacer cargar el Mc_x en los "contenedores" del escenario.

Código ActionScript :

on (press) {
   if (_root.contenedor1.cargado=false)  {//cumprueba si es false
      _root.contenedor1.attachMovie("Mc_1","clip",1);//si es false lo carga
      _root.contenedor1.cargado=true;//lo marca como true
   }else if (_root.contenedor2.cargado=false){
      _root.contenedor2.attachMovie("Mc_1","clip",1);
      _root.contenedor2.cargado=true;
   }else if (_root.contenedor3.cargado=false){
      _root.contenedor3.attachMovie("Mc_1","clip",1);
      _root.contenedor3.cargado=true;
   }else if (_root.contenedor4.cargado=false){
      _root.contenedor4.attachMovie("Mc_1","clip",1);
      _root.contenedor4.cargado=true;
   }else if (_root.contenedor5.cargado=false){
      _root.contenedor5.attachMovie("Mc_1","clip",1);
      _root.contenedor5.cargado=true;
   }else if (_root.contenedor6.cargado=false){
      _root.contenedor6.attachMovie("Mc_1","clip",1);
      _root.contenedor6.cargado=true;
   }else if (_root.contenedor7.cargado=false){
      _root.contenedor7.attachMovie("Mc_1","clip",1);
      _root.contenedor7.cargado=true;
   }else if (_root.contenedor8.cargado=false){
      _root.contenedor8.attachMovie("Mc_1","clip",1);
      _root.contenedor8.cargado=true;
   }
}


Me esta volviendo loco.

Perdona.

Gracias.

Un saludo

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 18 Ene 2016 02:35 pm
Tienes errores muy básicos, por ejemplo asignas en un if

if (_root.contenedor1.cargado=false)

en vez de comparar

if (_root.contenedor1.cargado==false)

o hacerlo como boolean

if (!_root.contenedor1.cargado)

Ok, estas en un escenario complejo, tienes poca experiencia codeando y en realidad debes definir un mecanismo, con lo cual peimero haría una prueba de concepto en un escenario menos complicado, digamos dos contenedores que cargan películas alternativamente.
Luego usaremos el códgo en un solo sitio, porque otra de las cosas que tenia el viejo AS2 (AS3 surge en 2007) es que podías meter código en cualquier parte y luego te volvías loco para encontrarlo.

Ok, 3 contenedores, 10 imagenes a cargar, y un mecanismo sin fin, quiere decir que al darle al botón cargar hace este ciclo 1-2-3-1-2-3-1-2-3 ... etc
En cuanto a lo que carga lo mismo, al llegar a 10 vuelve a 1

Código ActionScript :

var contenedores:Array = ['contenedor1', 'contenedor2'];
var fotos:Array = ["foto1.jpg","foto2.jpg","foto3.jpg","foto4.jpg","foto5.jpg","foto6.jpg","foto7.jpg","foto8.jpg","foto9.jpg","foto10.jpg"];

var holderCount = 0;
var fotoCount = 0;
cargar.onPress = function(){
  contenedores[holderCount++].loadMovie(fotos[fotoCount++]);
  if(holderCount>=contenedores.length) holderCount = 0;
  if(fotoCount>=fotos.length) fotoCount=0;
} 


El botón tiene de nombre de instancia cargar, y debes crear 10 jpg con ese nombre para probarlo.

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 Ene 2016 07:01 pm
Hola.

Ufff, ahora si que me as dejado en el aire por completo.

Es que no he podido mirarlo hasta ahora.

Lo voy a intentar, pero no se. Se que tengo muy poca experiencia.

Pense que seria mas fácil el comprobar si estaban sin cargar los Mcs vacios, aunque fuese desde un tercer nivel, lo llama asi por que el primero seria es escenario, el segundo el Mc base y el tercero el Mc cartas, igual no es la manera correcta de decirlo pero yo es como me entiendo.

Bueno lo intentare probar a ver si soy capaz.

Gracias.

Un saludo.

Por jeyn

33 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 28 Feb 2016 05:53 pm
Por fin.

Solucionado.

Gracias.

Un saludo

Por jeyn

33 de clabLevel



 

mozilla

 

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