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

Duplicar clips con parametros diferentes

Estas en el tema de Duplicar clips con parametros diferentes en el foro de Flash y Actionscript en Foros del Web. Hola a todos. Necesito duplicar un clip, cada uno tiene un boton dentro, y quiero que este boton tenga destinos diferentes. Aqui pego el codigo, ...
  #1 (permalink)  
Antiguo 03/02/2006, 20:16
 
Fecha de Ingreso: marzo-2003
Ubicación: Barcelona
Mensajes: 107
Antigüedad: 21 años, 1 mes
Puntos: 0
Duplicar clips con parametros diferentes

Hola a todos.
Necesito duplicar un clip, cada uno tiene un boton dentro, y quiero que este boton tenga destinos diferentes.
Aqui pego el codigo, pues ya veo hasta visiones.

Un saludo.

var total=9
var i=0
var cant=1
var posx=50
var posy=50
function callback1(){
if (i<total) {
duplicateMovieClip(_root.clip,"clip"+i,i),
this["clip"+i]._x = posx;
this["clip"+i]._y = posy;
i++
posx+=45
}
}
clip.bot.onPress = function() {
if (cant <= total){
cant++
getURL(cant,"_self");
}
}
stop();
setInterval(_root, "callback1", 35)
  #2 (permalink)  
Antiguo 03/02/2006, 20:42
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Prueba con esto.

Código:
var total = 9
var i = 0
var cant = 1
var posx = 50
var posy = 50
function callback1 ()
{
	if (i < total)
	{
		duplicateMovieClip (_root.clip, "clip" + i, i) ,
		this ["clip" + i]._x = posx;
		this ["clip" + i]._y = posy;
		this ["clip" + i].cant = i;
		this ["clip" + i].onPress = function(){
			getURL (this.cant, "_self");
		}
		i ++
		posx += 45
	}
}
setInterval (_root, "callback1", 35)
  #3 (permalink)  
Antiguo 03/02/2006, 21:36
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
Cita:
Iniciado por albertius
Aqui pego el codigo, pues ya veo hasta visiones.
!

Ahi va mi arreglo =P

Código:
var total = 9;
var cant = 1;
var posx = 50;
var posy = 50;
for (i=0; i<total; i++) {
	// duplicamos el clip
	z = clip.duplicateMovieClip("clip"+i, i+1);
	// duplicamos el boton
	w = bot.duplicateMovieClip("bot"+i, i+total+1);
	// posicionamos
	z._x = posx;
	w._x = posx+bot._x-clip._x;
	z._y = posy;
	w._y = posy+bot._y-clip._y;
	posx += 45;
	// asignamos una variable exclusiva dentro de cada boton
	w.nro = i;
	// al apretar en el boton "i"...
	w.onPress = function() {
		trace(this.nro);
		//al presionar cada boton se carga una misma url seguida de la variable "i"
		//por ejemplo: "http://tudominio.com/pagina0.htm" o "http://tudominio.com/pagina5.htm" ...
		getURL("tu_url_secuencial"+this.nro+".htm", _blank);
	};
}
stop();

Muy importante:
con el codigo que te he puesto yo tienes que sacar el boton de dentro del clip y trabajar con el como clip de pelicula (en la pestaña de abajo le asignas: clip de pelicula)

Cita:
Iniciado por albertius
Necesito duplicar un clip, cada uno tiene un boton dentro, y quiero que este boton tenga destinos diferentes.
Creo que lo que te puso TMeister hace que te abra la direccion cuando se aprieta en el MC entero... no en cada boton, pero bueno puedes adaptarlo a tu gusto...

Espero que te cunda

ArgoN

Última edición por -=ArgoN=-; 03/02/2006 a las 21:44
  #4 (permalink)  
Antiguo 04/02/2006, 08:27
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 1 mes
Puntos: 0
una manera básica, sencilla y elengante de hacerlo:
sólo necesitas un MovieClip en la biblioteca con nombre de vinculación: boton y este código en un fotograma de _root

Código:
//lo primero armamos un array con los destinos de los botones
var destinos_array:Array = new Array('http://www.google.com/','http://es.yahoo.com/','http://www.altavista.com/','http://www.forosdelweb.com/',	'http://www.mipagina.com/','http://www.aol.com/','http://www.terra.com/','http://www.swissinfo.com/','http://www.toptoursperu.com/');
//------------------------>
//exploramos uno a uno los elementos del array
for(n in destinos_array){
	//aquí agregamos un boton por cada elemento explorado
	var boton_ref:MovieClip = this.attachMovie('boton','b'+n,this.getNextHighestDepth(),{_x:n*(45+5)+50,_y:50});
	//la acción para cada botón: prueba en vez de trace();  getURL(); (el parámetro se toma del array)
	boton_ref.onRelease = function(){ trace(destinos_array[this._name.substr(1)]); }
}
//------------------------>
stop();
Cómo posicionarlos?
Si revisamos en la ayuda, verás que el último parámetro de los métodos: attachMovie y duplicateMovieClip es: [initObject:Object]
allí le pasamos los valores iniciales para las propiedades de MC que estas duplicando o añadiendo
En el ejemplo que te puse estamos definiendo su posicion (_x _y)
{_x:n*(45+5)+50,_y:50}
para posicionarlo en x es: _x:n*(45+5)+50
donde
45 es el acho del boton
5 la separacion entre boton y boton
50 la distancia en x a partir del cual deben posicionarse
(solo un poco de mates xD)

para y es absoluto, lo posicionamos en 50: _y:50

para darle una acción diferente a cada boton:
podemos aplicarle cualquier método o función pasándole como parámetro su respectivo valor en el array principal
para ello hicimos así:

Cómo obtener el valor del botón tomándolo del array:
al agregar el boton le hemos puesto por nombre una 'b' seguida del número del elemento explorado n que es lo mismo que decir, la posición en el array... entonces lo unico que tenemos que hacer es en el array tomar el valor de la posicion indicada en a partir de la segunda lentra del nombre del botón (ops espero haberlo explicado bien xD)
osea:
numero a partir de la segunda letra del nombre: this._name.substr(1);
(recodad que el primero es 0)
para obtener el valor:
destinos_array[this._name.substr(1)]

creo que no es complicado

saludos :D
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #5 (permalink)  
Antiguo 05/02/2006, 13:33
 
Fecha de Ingreso: marzo-2003
Ubicación: Barcelona
Mensajes: 107
Antigüedad: 21 años, 1 mes
Puntos: 0
Genial, estoy a punto de llorar, pero de emoción.
Cada respuesta me sirve de mucho.
Gracias a todos por la dedicación.
------------------------------------------
Si digo que soy guapo. ¿Que soy? respuesta: var pers = Guapo o feo+fantasma;
  #6 (permalink)  
Antiguo 08/02/2006, 17:22
 
Fecha de Ingreso: marzo-2003
Ubicación: Barcelona
Mensajes: 107
Antigüedad: 21 años, 1 mes
Puntos: 0
Hola a todos.
Y si lo que quiero, es cargar imagenes a partir de un url que esta en el array?

var array:Array = new Array('foto1','foto2','foto3','foto4','foto5');
for(n in array){
var marco_ref:MovieClip = this.attachMovie('marco','b'+n,this.getNextHighest Depth(),{_x:n*(110)+0,_y:0});
loadMovie(array[1], marco_ref); }
stop();

Esque de esta forma simpre se carga la posicion 2 del array "foto2"

Gracias de antemano
  #7 (permalink)  
Antiguo 08/02/2006, 18:10
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
loadMovie(array[n], marco_ref); }
  #8 (permalink)  
Antiguo 09/02/2006, 07:17
 
Fecha de Ingreso: marzo-2003
Ubicación: Barcelona
Mensajes: 107
Antigüedad: 21 años, 1 mes
Puntos: 0
Annnnnnda, pues mira q era facilillo.
Muchas gracias
  #9 (permalink)  
Antiguo 09/02/2006, 11:31
 
Fecha de Ingreso: marzo-2003
Ubicación: Barcelona
Mensajes: 107
Antigüedad: 21 años, 1 mes
Puntos: 0
Hola
Y por ultimo...
Quiero pasar otro parametro, y me he parado otra vez.

var pag_array:Array = new Array('1','2','3');
//------------------------>
for(z in pag_array){
//aquí agregamos un boton por cada elemento explorado
var pag_ref:MovieClip = this.attachMovie('pag','b'+z,this.getNextHighestDe pth(),{_x:z*(16)+0,_y:0});
pag_ref.onRelease = function(){ setProperty (_parent.scrol, _x, - Number(_parent.mw*pag_array[z]));}
}
stop();

Lo mismo q antes, solo toma el valor del primer dato del array.

Gracias y ya termino con el tema.
  #10 (permalink)  
Antiguo 09/02/2006, 12:51
 
Fecha de Ingreso: marzo-2003
Ubicación: Barcelona
Mensajes: 107
Antigüedad: 21 años, 1 mes
Puntos: 0
Nada, ya lo tengo, era superfascil.
Gracias igual
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 14:05.