Comunidad de diseño web y desarrollo en internet online

Duplicar MovieClip, con Loader y Que actue como Botón, help

Citar            
MensajeEscrito el 22 Mar 2010 12:16 pm
Ya llevo demasiado con esto, pido ayuda para aclarar conceptos ya que cuanto más leo más menos lo entiendo, voy poster el código por partes,

El código del preloader precargador_Thumbs2 es el siguiente:

Código ActionScript :

var ln:Number = Number(_root.archivos) + 1

var precargador_Thumbs2:MovieClipLoader = new MovieClipLoader();
var listener2:Object = new Object();
Stage.showMenu = false;

listener2.onLoadStart = function(target2_mc) {
   
   trace("IniciandoTHUMB");

};

listener2.onLoadProgress = function(target2_mc) {
   trace("Cargando THUMB");
};


listener2.onLoadComplete = function(target2_mc) {
   
   trace("THUMB Cargado !");
      
};

precargador_Thumbs2.addListener(listener2);


Luego, lo que hago es cargar diferentes SWFs del siguiente modo:

Código ActionScript :

var spacer:Number = 130;
var duplicate:MovieClip;

for(var i:Number = 1; i < ln; i++) {
    var newY:Number = i * (thumb1_mc._height + spacer);
   var newX:Number = 16
   var Ident:Number 
    duplicate = thumb1_mc.duplicateMovieClip("thumb"+i, getNextHighestDepth(), {_y:newY, _x:newX, _xscale:20, _yscale:20, Ident:i}); // ident prentende indentificar al clip que se crea pero no se si realmente lo hace.
   precargador_Thumbs2.loadClip("archivo_"+i+".swf", "thumb"+i+"");


Hasta ahora se cargan los diferente clips sin problemas con las propiedades que les paso en el parametro initObject,
(desconozco si la variable (Ident) le llega, lo que no logro es que cada clip lea un botón con su correspondiente enlace.

Si coloco el código para hacerlo botón dentro del for pasa de mi.
Si coloco el código:

Código :

target2_mc.onRelease = function(){}
dentro de la funcion onLoadComplete, todos los CLips funcionan como botones pero todos linkan a la misma url.

¿Podeis ayudarme a sacar esto en claro?

Muchisimas gracias.

Por clydde

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 22 Mar 2010 04:16 pm
Si quieres que carge diferentes url debes asignar una variable dentro del mc algo asi ..

mc[i].boton = i;

donde le asiginaras un determinado valor , despues haras una funcion para que de acuerdo al boton que presionaste ejecute una url..

Espero que te sirva de ayuda

Saludos

Por joshuavw

Claber

306 de clabLevel



Genero:Masculino  

Juego, aprendo y programo

firefox
Citar            
MensajeEscrito el 23 Mar 2010 03:40 pm
hola, primero de todo gracias por responder, vemaos y donde asignas esa variable,

en el For? en la linea donde duplico el mc original o bien dentro del mc original thumb1_mc el que utilizo como Master para duplicar los demas?

Por clydde

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Mar 2010 05:31 pm
Hola de nuevo, intentare daros más pistas porque no lo saco:

poniendo lo siguinete en el for :

mc = eval("thumb"+i+"")
mc.boton = i;
trace(mc)

el trace me retorna :
_level0.miniaturas_mc.thumb1
_level0.miniaturas_mc.thumb2
_level0.miniaturas_mc.thumb3
_level0.miniaturas_mc.thumb4
_level0.miniaturas_mc.thumb5

poniendo trace(mc.boton) me retorna:
1
2
3
4
5

Imagino que debo leer la variable boton desde la clausa onLoadComplete, porque alli es desde el único sitio donde me funciona el forzar que el clip sea un botón. ¿no? Pues como llega esa variable alli, por mas pruebas que hago siempre me retorna undefined como si la variable boton no estubiera en ese clip, ainssss no hay manera ! tal vez no le indico el path correctamebte para llegar a ella, pero es que creo que lo he intentado todo !!! grrrr, help !

gracias

Por clydde

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Mar 2010 05:55 pm
ok a ver vamos por pasos....

1. boton declaralo como variable global para que lo puedas encontrar en todo el swf

Código ActionScript :

_global.boton = 0;

y cuando le asignas el mc.boton = i; te lanza diferentes numeros o sea diferentes num de boton... donde puedes referenciar

2. enseguida dentro del movie clip que duplicas crea un boton y dentro de el pones este codigo llamando a una funcion

Código :

on (release) {
   _parent.releaseBts(boton);
}


3. Creas la funcion donde tienes todo tu codigo y que pasas como parametro el valor de la variable boton imprimelo y veras que impime diferente valor de acuerdo al boton que presionaste

Código ActionScript :

function releaseBts(boton) {
   _global.boton= boton;
        trace("Boton Presionado:"+_global.boton);
}

4. Si son url que vas a cargar diferente se me ocurre que puedes implementar un arreglo de los jpg o swf que vas a cargar

Código ActionScript :

ligas = ["home.swf","contacto.swf"];
function releaseBts(boton) {
   _global.boton= boton;
        trace("Boton Presionado:"+_global.boton);
        gerURL(ligas[boton],"_blank");
}


O lo que vayas a hacer ...

Espero que te ayude

Saludos

Por joshuavw

Claber

306 de clabLevel



Genero:Masculino  

Juego, aprendo y programo

firefox
Citar            
MensajeEscrito el 24 Mar 2010 05:15 pm
Gracias de nuevo, no hay manera :(
_______________________________________________________________
_global.boton = 0;

for(var i:Number = 1; i < ln; i++) {
var newY:Number = i * (thumb1_mc._height + spacer);
var newX:Number = 16
duplicate = thumb1_mc.duplicateMovieClip("thumb"+i, i, {_y:newY, _x:newX, _xscale:20, _yscale:20 });
precargador_Thumbs2.loadClip("archivo_"+i+".swf", "thumb"+i+"");
mc = eval("thumb"+i+"")
mc.boton = i
trace(mc) // retorna _level0.miniaturas_mc.thumb1, ..._level0.miniaturas_mc.thumb2, ..._level0.miniaturas_mc.thumb3, ..
}

_______________________________________________________________

El trace("Boton Presionado:"+_global.boton); me retorna // Boton Presionado: 0 pulse el botón que pulse.

He tenido que poner el código " on (release) {_parent.releaseBts(boton);} " directamente en el MC thumb1_mc (boton drecho en el mc y clickando en Acciones) porque si creo un boton dentro de dicho clip los clips duplicados no lo contienen y no se pude hacer click, aun así como te indicaba cada clip funciona como boton y llama a la funcion, pero como ya dije me retorna simpre: Boton Presionado: 0
Si borro la variable global boton, entonces me retorna undefined, creo que el for no asigna bien las variables a los clips, no se ! ¿?

que desespero !! en fin espero no se te agote la paciencia ! gracias

Por clydde

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Mar 2010 10:24 am
veamos, me he dado cuenta de algo, he comenzado de nuevo un clip vacio y he puesto el siguinete código:

Código ActionScript :

_global.boton = 0;

function releaseBts(boton) { 
   _global.boton= boton; 
        trace("Boton Presionado:"+_global.boton); 
}

for(var i:Number = 1; i < 3; i++) {
    var newY:Number = i * (mcmaster._height + 90);
    duplicate = mcmaster.duplicateMovieClip("thumb" + i, getNextHighestDepth(), {_y:newY });
   duplicate.boton = i
}


y haciendo- botón derecho / Acciones - al clip del escenario "mastermc" le he aplicado el codigo:

Código ActionScript :

on (release) {
   _parent.releaseBts(boton);
}


Al clicar ahora funciona, el trace me retorna:
Boton Presionado:0
Boton Presionado:1
Boton Presionado:2
------------------------------------------------------------------

El problema empieza cuando en los clips duplicados les cargo un SWF externo:

ejemplo:

Código ActionScript :

for(var i:Number = 1; i < 3; i++) {
    var newY:Number = i * (mcmaster._height + 90);
    duplicate = mcmaster.duplicateMovieClip("thumb" + i, getNextHighestDepth(), {_y:newY});
   duplicate.boton = i+1
   loadMovie("archivo_"+i+".swf", "thumb"+i+""); //<< nueva línea
   
}


Ahora al clicar el trace retorna:

Boton Presionado:0
Boton Presionado:0
Boton Presionado:0

¿Alguna idea de como solucionarlo?

Mil gracias !

Por clydde

79 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Mar 2010 03:43 pm
Bueno, encontre una solución pero no me gusta. He creado un clip vacio el cual duplico y como no cargo nada dentro, este si funciona, le doy las mismas posiciones (excepto profundidad) que los clips que voy duplicando y el resultado es el que queria, pero como ya he dicho lo veo como un parche y me queda la duda de como se podria hacer de un modo más fino.

saludos y gracias

Por clydde

79 de clabLevel



Genero:Masculino  

firefox

 

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