Comunidad de diseño web y desarrollo en internet online

Crear eventos dinamicos si es un vector (arreglo)

Citar            
MensajeEscrito el 26 Oct 2005 02:23 pm
Hola a todos. Tengo un problema a ver si alguien puede ayudarme.
Intento hacer un mosaico de imagenes (eso ya está), y que al hacer click
en cualquiera de ellas, me informe de que imagen es en la que estoy
haciendo click. He creado las imagenes y las he dimensionado correctamente,
lo que no se es como poner un evento dinámico al onPress de cada clip.
Pego aquí el código que tengo a ver si alguien me ayuda. Gracias.

var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);

function onLoadInit(mc:MovieClip) {
// En otra prueba hice mc.onPress=mifuncion;
// pero luego en mifuncion no sabía que mc es el que estaba disparando el onpress. :(
mc._x = memcolumna * (maximoancho+3);
mc._y = memfila * (maximoalto+1);
memcolumna++;
if (memcolumna>maximocolumnas){
memcolumna=1;
memfila++;
}
}

btncargar.onRelease = function(){
numimagen++;
var container:MovieClip = createEmptyMovieClip("container"+numimagen, getNextHighestDepth());
mcLoader.loadClip("imagen"+numimagen+".jpg", "container"+numimagen);
}

/*Si supiera el nombre del clip, pondría
nombreclip.onPress = function (){
txtdebug.text = "nombreclip";
}
pero como es un vector... no tengo ni idea. HELP???
*/


Gracias a todos.

Por progragon

1 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 26 Oct 2005 08:09 pm
Hola, proba lo siguiente:

en el momento que haces esto:

Código :

var container:MovieClip = createEmptyMovieClip("container"+numimagen, getNextHighestDepth());

pones las siguientes lineas

Código :

eval("container"+numimagen).mePresionaste = function (){
     txtdebug.text = "nombreclip"; 
}


es decir, la forma de conocer el nombre de clip es cuando lo creas, y allí le asignas de una vez la función que queras. y la forma sería

Código :

// esto devuelve el apuntador a tu clip
eval("container"+numimagen)

Por muro

13 de clabLevel



Genero:Masculino  

Medellín - Colombia

msie
Citar            
MensajeEscrito el 27 Oct 2005 07:21 am
Lo he hecho y no me funciona. mi código ha quedado así:

Código :

 var mcLoader:MovieClipLoader = new MovieClipLoader();
 mcLoader.addListener(this);
 maximoalto = 80;
 maximoancho = 100;
 maximocolumnas = 4;
 memcolumna = 1;
 memfila = 1;
 numimagen = 0;

function mifuncion(){
   txtdebug.text =this.Identifier;;
   
} 
function onLoadInit(mc:MovieClip) {
    anchooriginal=mc._width;
    altooriginal=mc._height;
    if (anchooriginal>maximoancho) {
       //Le voy a asignar el máximo ancho... proporcionalmente el alto que deba.
//     anchooriginal->altooriginal;
//     maximoancho-> xalto;
       xalto=maximoancho*altooriginal/anchooriginal;
        mc._width=maximoancho;
       mc._height=xalto;
      anchooriginal=mc._width;
       altooriginal=mc._height;
    }
    if (altooriginal>maximoalto) {
       //Le voy a asignar el máximo alto... proporcionalmente el ancho que deba.
//     anchooriginal->altooriginal;
//     xancho -> maximoalto;
       xancho=maximoalto*anchooriginal/altooriginal;
        mc._width=xancho;
       mc._height=maximoalto;
      anchooriginal=mc._width;
       altooriginal=mc._height;
    }
    
    mc._x = memcolumna * (maximoancho+3);
    mc._y = memfila * (maximoalto+1);
     memcolumna++;
    if (memcolumna>maximocolumnas){
       memcolumna=1;
       memfila++;
    }
}

//Este mprobando es otra movie que puse a ver si el evento onPress funcinoaba. y sí lo hace
mprobando.onPress = function (){
   txtdebug.text = "MPROBANDO";
}

btncargar.onRelease = function(){
   numimagen++;
   var container:MovieClip = createEmptyMovieClip("container"+numimagen, getNextHighestDepth());
   eval("container"+numimagen).onPress = function (){
     txtdebug.text = "nombreclip";
   }    
   mcLoader.loadClip("imagen1.jpg", "container"+numimagen);
   txtdebug.text = "Cargando";
};



Si pudiese subía el flash. :(

La diferencia que noto es que el mprobando (otra movie añadida de forma estática) aparece la manita cuando te pones sobre ella y sobre los containerxxxx no cambia el puntero del ratón.
ayuda???

[/code][/flash]

Por progragon

1 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 27 Oct 2005 02:21 pm
faltan los métodos que hacen el mosaico de imágenes... podrías publicarlos... es que ahí es donde debe estar la solución... mejor dicho viejo... si queres mandarme el FLA hacelo a [email protected]

Por muro

13 de clabLevel



Genero:Masculino  

Medellín - Colombia

msie
Citar            
MensajeEscrito el 27 Oct 2005 03:36 pm

Código :

btncargar.onRelease = function(){
   numimagen++;
   var container:MovieClip = createEmptyMovieClip("container"+numimagen, getNextHighestDepth());
   eval("container"+numimagen).onPress = function (){
     txtdebug.text = "nombreclip";
   }    
   mcLoader.loadClip("imagen1.jpg", "container"+numimagen);
   txtdebug.text = "Cargando";
};

De momento no lo estoy cargando desde ningún asp ni nada parecido. solo aparece la misma foto muchas veces en la posicion adecuada mediante este y el loader.

Código :

function onLoadInit(mc:MovieClip) {
    anchooriginal=mc._width;
    altooriginal=mc._height;
    if (anchooriginal>maximoancho) {
       //Le voy a asignar el máximo ancho... proporcionalmente el alto que deba.
//     anchooriginal->altooriginal;
//     maximoancho-> xalto;
       xalto=maximoancho*altooriginal/anchooriginal;
        mc._width=maximoancho;
       mc._height=xalto;
      anchooriginal=mc._width;
       altooriginal=mc._height;
    }
    if (altooriginal>maximoalto) {
       //Le voy a asignar el máximo alto... proporcionalmente el ancho que deba.
//     anchooriginal->altooriginal;
//     xancho -> maximoalto;
       xancho=maximoalto*anchooriginal/altooriginal;
        mc._width=xancho;
       mc._height=maximoalto;
      anchooriginal=mc._width;
       altooriginal=mc._height;
    }
    
    mc._x = memcolumna * (maximoancho+3);
    mc._y = memfila * (maximoalto+1);
     memcolumna++;
    if (memcolumna>maximocolumnas){
       memcolumna=1;
       memfila++;
    }
}



A ver si lo sacamos al final. Gracias.

Por progragon

1 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 27 Oct 2005 04:35 pm
Mira lo que ocurre es que cuando generamos un nuevo clip, este no está realmente en el escenario cuando ejecutamos la función que le pone el evento, por lo tanto la solución para no modificar mucho tu code actual es ejecutar 10 milisegundos despues, la instrucción que pone el evento en la foto, quedaría de este modo...

Código :

btncargar.onRelease = function(){
   numimagen++;
   var container:MovieClip = createEmptyMovieClip("container"+numimagen, getNextHighestDepth());
   evento = setInterval(ponerEvento, 10, container)
   mcLoader.loadClip("imagen1.jpg", "container"+numimagen);
   txtdebug.text = "Cargando";
};
function ponerEvento (quien) {
   quien.onPress = function (){
     txtdebug.text = "nombreclip";
   }    
   clearInterval(evento);
}


desde luego hay modos más limpios... pero este es el primero que se me ocurre...

Saludos...

Por muro

13 de clabLevel



Genero:Masculino  

Medellín - Colombia

msie
Citar            
MensajeEscrito el 27 Oct 2005 04:43 pm
uno más limpio sería crear un simbolo con un boton transparente, y un mc vacio para contener la imagen, y este TODO, sería el Item a incluir en la lista, y ya tendrias instanciada un boton diferente por cada item, en el cual puedes incluir el código que quieras para sus eventos, parametrizando cada instancia del item, en función de su posición por ejemplo...

;)

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

firefox

 

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