Foros del Web » Creando para Internet » Flash y Actionscript »

Duplicando un mc pero intercambiando mapa de bits

Estas en el tema de Duplicando un mc pero intercambiando mapa de bits en el foro de Flash y Actionscript en Foros del Web. Hola, tengo un mc_imagen (en su nombre de instancia) que hace un rollover en esa misma imagen aumentando y disminuyendo al pasar sobre ella. Ahora ...
  #1 (permalink)  
Antiguo 08/12/2006, 12:46
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.893
Antigüedad: 14 años, 9 meses
Puntos: 60
Duplicando un mc pero intercambiando mapa de bits

Hola, tengo un mc_imagen (en su nombre de instancia) que hace un rollover en esa misma imagen aumentando y disminuyendo al pasar sobre ella. Ahora tengo que hacer eso mismo 40 veces, pero claro con otras imágenes.

Si lo hago con duplicatemovieClip desde un frame en otra capa lo llamo así y me lo repite, pero claro es el mismo que el anterior.

Código:
duplicateMovieClip("mc_imagen", "newClip", 10);
setProperty("newClip", _x, 100);

-¿Como podria hacer que la imagen fuese otra, es decir otro mapa de bits en el duplicado dos, otro en el tres etc etc?

- y si es posible ¿Como puedo hacer para que no cambie al clip anterior? ya que cada vez que cambio una imagen en un mc duplicado me cambia y me pone la misma imagen en el original.
  #2 (permalink)  
Antiguo 09/12/2006, 11:09
 
Fecha de Ingreso: junio-2006
Mensajes: 195
Antigüedad: 11 años, 5 meses
Puntos: 0
Re: Duplicando un mc pero intercambiando mapa de bits

se me ocurre que puedes armar el mc, y duplicarlo promero 40 veces desde la biblioteca, pero el original tendria q ser un clip dentro de otro, lo que se va a agrandar va a ser el clip q esta dentro del clip principal, y como ultima instancia tienes la foto,

boton > clip q se agranda > clip q contiene a la foto

a cada uno de los 40 tienes q entrar al ultimo clip y cambiarle la foto, encontercs no modificas la animacion (va a ser siempre la misma), o sea, que en el fotograma 1 del ultimo movieclip va a estar la foto, no se se me ocurre eso, pero tiene q funcionar pienso q tendria q andar, a lo mejor con un clip menos tb funciona, te lo estoy escribiendo mientras me lo imagino, no lo tengo aca para probar
  #3 (permalink)  
Antiguo 09/12/2006, 12:28
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 13 años, 10 meses
Puntos: 7
Re: Duplicando un mc pero intercambiando mapa de bits

Pues lo que necesitas es adjuntar cada imagen a nuevos movieclips generados dinamicamente. Seria la forma mas facil.

Para eso puedes usar el siguiente codigo:

Código:
var id:Number = 0;
//
MovieClip.prototype.propiedadesMC = function(instanciaEnLib:String, posX:Number, posY:Number) {
	//
	var thisMC:MovieClip = this;
	//
	thisMC.attachMovie(instanciaEnLib, "nuevoMC", 1);
	thisMC._x = posX;
	thisMC._y = posY;
};
Luego haras esto por cada nueva imagen que quieres adjuntar al _root:

Código:
this.createEmptyMovieClip("nuevaImagen" + id, this.getNextHighestDepth());
this["nuevaImagen" + id].propiedadesMC("nombreInstanciaEnLibreria", 25, 100);
id++;
Necesitaras que cada imagen este inserta dentro de un movieclip y con un nombre de instancia asignado en el "linkage" (propiedad del objeto en la libreria).

Si necesitas ayuda para entenderlo, solo dilo.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #4 (permalink)  
Antiguo 09/12/2006, 18:43
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.893
Antigüedad: 14 años, 9 meses
Puntos: 60
Re: Duplicando un mc pero intercambiando mapa de bits

Hola de nuevo.

Gracias a ambos por la explicación, juinihh la verdad es que no he entendido del todo tu explicación, entre otras cosas estoy un poco pegado todavía de programación en Actionscript.

Por ahora lo de duplicar las imágenes lo he conseguido, ahora el problema es darle a cada mc una acción diferente, de todas formas me explico de nuevo.

Primero con una imagen creo un mc llamado "mc", luego dentro de ese mc hago una animación para el rollover, donde aumenta y disminuye esa misma imagen, pero a la vez en la capa de arriba en el primer fotograma tiene esta acción para hacer esa animación:

Código:
stop ();
this.onEnterFrame = function(){ 
if(rewind == true){ 
prevFrame(); 
} 
} 
this.onRollOver = function(){ 
rewind = false; 
play(); 
} 
this.onRollOut = function(){ 
rewind = true; 
} 
this.onRelease = function(){ 
_parent.mc_imagen.x = -600
}
Lo que hace entonces es aumentar y dismunuir al pasar por encima y a la vez mover otro mc_imagen hacia la x=-600 con la última parte de ese código

Código:
this.onRelease = function(){ 
_parent.mc_imagen.x = -600
}
Entonces lo que quiero hacer es repetir ese mismo mc pero cada uno con una imagen diferente y a la vez que cada uno tenga un evento diferente para mover al mc_imagen.

Lo que planteaba en principio (intercambiar imagen o mapa de bits para cada mc) lo he conseguido vinculando ese mc con vinculanción mc (clic derecho en mc dentro de la biblioteca y luego vinculación, marcar primer cuadradito). Luego dentro de ese mc creo un mc vacio y pongo en el nombre de instancia foto. Luego en el primer frame de la linea de tiempo principal:

Código:
var cantidad:Number = 5;

for (var i:Number = 0; i < cantidad; i++) {
   var mc:MovieClip = attachMovie("mc", "mc" + i, i);
      mc._x = 0 + i * 100;
      mc._y = 0;
      mc.id = i;
      mc.foto.loadMovie("imagen0" + i + ".jpg");
}
Las imágenes deben llamarse imagen01.jpg, imagen02.jpg... etc.y así me sale lo que me planteaba en principio.


Ahora solo me falta que cada uno de los mc no repita esto:

Código:
stop ();
this.onEnterFrame = function(){ 
if(rewind == true){ 
prevFrame(); 
} 
} 
this.onRollOver = function(){ 
rewind = false; 
play(); 
} 
this.onRollOut = function(){ 
rewind = true; 
} 
this.onRelease = function(){ 
_parent.mc_imagen.x = -600
}
Donde se deberia cambiar en cada uno la última parte de este código quedando así por ejemplo:

primer mc
Código:
stop ();
this.onEnterFrame = function(){ 
if(rewind == true){ 
prevFrame(); 
} 
} 
this.onRollOver = function(){ 
rewind = false; 
play(); 
} 
this.onRollOut = function(){ 
rewind = true; 
} 
this.onRelease = function(){ 
_parent.mc_imagen.x = -600
}
segundo mc

Código:
.
.
.
.
.
.
.
this.onRelease = function(){ 
_parent.mc_imagen.x = -300
}
tercer mc

Código:
.
.
.
.
.
.
.this.onRelease = function(){ 
_parent.mc_imagen.x = 0
}
Código:
cuarto mc

.
.
.
.
.
.
.this.onRelease = function(){ 
_parent.mc_imagen.x = 250
}
No se si me explico, es un mc que dentro tiene un rollover y que a la vez tiene una acción o llamada al mc_imagen en la principal para desplazarla a una posición determinada.
  #5 (permalink)  
Antiguo 10/12/2006, 20:56
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.893
Antigüedad: 14 años, 9 meses
Puntos: 60
Re: Duplicando un mc pero intercambiando mapa de bits

Hola de nuevo, por si no me he explicado bien anteriormente resumo un poco más.

Mi intención es hacer algo parecido a lo de este enlace:

http://www.toxiclab.org/tutorial.asp?ID=61

Solo que en vez de tener la llamada a una url lo tengo a un mc_imagen que está en la principal.

O sea que en vez de esto:

Código:
.
.
.
.
.
.
.
this.onRelease = function(){ 
getURL("http://www.toxiclab.org"); 
}
tengo esto en mi mc

Código:
.
.
.
.
.
.
.
 
this.onRelease = function(){ 
_parent.mc_imagen.x = -600
}

Ahora lo que quiero hacer es repetir (duplicar) ese mismo ejemplo pero con una imagen distinta por cada mc duplicado y que la acción de llamar al m c_imagen de la principal sea distinta en cada mc duplicado (seria por ejemplo cambiando estos valores por cada mc _parent.mc_imagen.x = -600, _parent.mc_imagen.x = -300, _parent.mc_imagen.x = 100, etc)


No se si aún me explico del todo.
  #6 (permalink)  
Antiguo 12/12/2006, 00:35
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.893
Antigüedad: 14 años, 9 meses
Puntos: 60
Re: Duplicando un mc pero intercambiando mapa de bits

Hola de nuevo al final he logrado meter una nueva capa dentro del mc y en el primer frame pongo esto:

Código:
_root.mc0.onRelease = function(){ 
_parent.mc_imagen.x = -600
}
_root.mc1.onRelease = function(){ 
_parent.mc_imagen.x = -100
}
_root.mc2.onRelease = function(){ 
_parent.mc_imagen.x = 120
}
_root.mc3.onRelease = function(){ 
_parent.mc_imagen.x = 250
}
_root.mc4.onRelease = function(){ 
_parent.mc_imagen.x = 0
}
Y entonces el mc al repetirse incluye siempre esta acción y por tanto en todos los mc duplicados ya tengo como desplazar al mc_imagen a otra posición según el mc pulsado.



Ahora solo me queda ver la forma de resumir este código, ya que son 40 mc los que se repiten.

Código:
_root.mc0.onRelease = function(){ 
_parent.mc_imagen.x = -600
}
_root.mc1.onRelease = function(){ 
_parent.mc_imagen.x = -100
}
_root.mc2.onRelease = function(){ 
_parent.mc_imagen.x = 120
}
_root.mc3.onRelease = function(){ 
_parent.mc_imagen.x = 250
}
_root.mc4.onRelease = function(){ 
_parent.mc_imagen.x = 0
}
_root.mc0.onRelease = function(){ 
_parent.mc_imagen.x = 600
}
_root.mc1.onRelease = function(){ 
_parent.mc_imagen.x = 800
}
_root.mc2.onRelease = function(){ 
_parent.mc_imagen.x = 1120
}
_root.mc3.onRelease = function(){ 
_parent.mc_imagen.x = 1350
}
_root.mc4.onRelease = function(){ 
_parent.mc_imagen.x = 1600
}
..
.
.
.
.
.
.
y así hasta llegar al mc 40
Supongo que habrá una forma más facil, pero por ahora con eso me va perfecto.

Gracias por la ayuda :wink:
  #7 (permalink)  
Antiguo 12/12/2006, 16:13
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.893
Antigüedad: 14 años, 9 meses
Puntos: 60
Re: Duplicando un mc pero intercambiando mapa de bits

Hola de nuevo por si a alguien le interesa, esta última parte he logrado resumirla con un array, gracias a la explicación de Eliseo en el foro de after-hours.org :

Código:
posicionesX=new Array(-600,-100,120,250,0,600,800,1120,1350,1600,.....)
for (var i=0;i<40;i++){
    var mc=_root["mc"+i]
    mc.id=i   //<---ahora le asigno "id"
    mc.onRelease=function(){
        _parent.mc_imagen.x=posicionesX[this.id]  //<--uso, tanto "id"
                                         //<---como el array posicionesX
    }
}
Saludosss
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:42.