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

ya no puedo mas / addEventListener

Estas en el tema de ya no puedo mas / addEventListener en el foro de Flash y Actionscript en Foros del Web. Hola. Tengo el siguiente código (eliminé algunas lineas para no confundir) for(var i:int=0 ; i<4 ; i++){ var mc:MovieClip = Atachar("dia"); // Atachar funciona bien; ...
  #1 (permalink)  
Antiguo 08/07/2009, 17:20
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
ya no puedo mas / addEventListener

Hola.
Tengo el siguiente código (eliminé algunas lineas para no confundir)

for(var i:int=0 ; i<4 ; i++){
var mc:MovieClip = Atachar("dia"); // Atachar funciona bien; "dia" elemento de biblioteca
mc.name = "dia"+i;
mc.diaFondo.alpha = .5;

for(var j:int=0;j<4;j++){//CADA ELEMENTO
mc["anota"+j].addEventListener(MouseEvent.CLICK, function (event:*):void { ABRIR(event,i) });
addChild(mc);
}
}
function ABRIR(event:MouseEvent,indice:Number):void{
// aqui quiero desplegar los indices de los FOR el "i" y el "j"
}

LA idea es, bucle for para atachar 4 elementos "dia" de la biblioteca, cada uno con .name = "dia"+i y cada elemento "dia" posee 4 elementos "anota"+j por medio de el otro bucle.
Todo se despliega de maravillas, pero al querer saber los indices de cada elemento está el ERROR, siempre "i" queda como 4

A que se deberá??
  #2 (permalink)  
Antiguo 08/07/2009, 17:53
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ya no puedo mas / addEventListener

No entiendo por que haces eso de esa forma...

mc["anota"+j]
  #3 (permalink)  
Antiguo 08/07/2009, 18:10
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: ya no puedo mas / addEventListener

Hola.

mc["anota"+j]
donde:
- mc es el clip atachado que contiene 4 botones que se despliegan dependiendo la cantidad de nodos que contiene un XML

- "anota" es un boton, y le quiero asignar una funcion cuando se presione

Por ejemplo, tengo
mc.name = dia0
con 2 botones dentro: mc.anota0 y mc.anota1

mc.name = dia1
con 3 botones dentro: mc.anota0, mc.anota1 y mc.anota2

Cuando presiono mc.anota2 ( de mc.name = dia1 ) quiero desplegar el indice "j" del for que sería "2" y ademas el indice "i" del for que sería "1"

me comprendes?!!?!?
  #4 (permalink)  
Antiguo 08/07/2009, 18:43
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ya no puedo mas / addEventListener

A lo mejor me estoy equivocando, pero para acceder a hijos de un movieclip será:

Código actionscript:
Ver original
  1. mc.getChildByName("anota"+j).addEvent..
  #5 (permalink)  
Antiguo 08/07/2009, 18:53
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: ya no puedo mas / addEventListener

el problema no es el Hijo ( indice "j") sino el Padre ( indice "i") este último no puedo capturar
  #6 (permalink)  
Antiguo 08/07/2009, 18:58
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ya no puedo mas / addEventListener

Código actionscript:
Ver original
  1. function ABRIR(event:MouseEvent,indice:Number):void{

indice es I, y I es un int, no se si será la solución, pero eso no está bien XD
  #7 (permalink)  
Antiguo 08/07/2009, 19:02
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: ya no puedo mas / addEventListener

dudé...pero no. Tampoco funciona con indice:int
  #8 (permalink)  
Antiguo 08/07/2009, 19:05
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: ya no puedo mas / addEventListener

No se tio, intenta explicarte un poco mejor, estoy algo perdido
  #9 (permalink)  
Antiguo 08/07/2009, 19:11
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: ya no puedo mas / addEventListener

No sé si servirá colocar todo el código, pero nada se pierde.


Código:
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("datos.xml"));

function LoadXML(e:Event):void {
	xmlData = new XML(e.target.data);
	var regTOTAL:XMLList = xmlData.datos.attribute("fecha");
	var TOTAL:Number = regTOTAL.length();
	var NumCeldas = 0;
	var MaxCeldas = 8;
	SALIDA(xmlData,NumCeldas,MaxCeldas,TOTAL,MaxCeldas);
}
function Atachar(id:String):MovieClip{
	var mcObj:Object = null;
	mcObj = getDefinitionByName(id.toString());	
	return (new mcObj()) as MovieClip;
}

function SALIDA(sal:XML,Xinicial:Number,Xfinal:Number,T:Number,MAX:Number):void {
	var AnchoRes = flash.system.Capabilities.screenResolutionX;
	var AltoRes = flash.system.Capabilities.screenResolutionY;
	var AltoCeldas = 80;
	var posInicial = 0;
	
	var VARfecha:XMLList  = sal.datos.attribute("fecha"); // Elemento FECHA	
	var VARdia:XMLList  = sal.datos.attribute("dia"); // Elemento FECHA	
	for(var i:int=Xinicial;i<Xfinal;i++){
			var VARfechaELEMENTOS:XML = VARfecha[i];
			var VARdiaELEMENTOS:XML = VARdia[i];			
			var mc:MovieClip = Atachar("dia");
			mc.name = "dia"+i;
			mc.diaFondo.alpha = .4;
			mc.height = AltoCeldas;
			mc.x = AnchoRes - mc.width;
			mc.y = (posInicial)*AltoCeldas;
			mc.FechaActual.text = VARfechaELEMENTOS;
			mc.nombre.text = VARdiaELEMENTOS;
			
			var VARhora:XMLList  = sal.datos[i].nota.attribute("hora");
			var VARanota:XMLList  = sal.datos[i].nota.attribute("anota");
			
			for(var j:int=0;j<VARhora.length();j++){//CADA ELEMENTO
				var VARhoraELEMENTOS:XML = VARhora[j];
				var VARanotaELEMENTOS:XML = VARanota[j];				
				
				mc["anota"+j].addEventListener(MouseEvent.CLICK, function (event:*):void { ABRIR(event,i) });
				mc.anota.htmlText += VARhoraELEMENTOS+": "+VARanotaELEMENTOS;				
				addChild(mc);
			}
			for(var jj:int=VARhora.length();jj<4;jj++){//CADA ELEMENTO RESTANTE				
				mc["anota"+jj].visible = false;
				mc["anota"+jj].mouseEnabled = false;
			}
			posInicial += 1;
	}
		
Cita:
function ABRIR(event:MouseEvent,indice:int):void{ // indice : PADRE // event.currentTarget.name : HIJO trace(event.currentTarget.name+","+indice); }
var barra:MovieClip = Atachar("barra"); barra.proximos.text = "Próximos: "+(T-Xfinal); barra.anteriores.text = "Anteriores: "+(Xinicial); barra.x = AnchoRes - barra.width; barra.y = (posInicial)*AltoCeldas; if((T-Xfinal)==0){ barra.btnProx.mouseEnabled = false; }else{ barra.btnProx.mouseEnabled = true; } if((Xinicial)==0){ barra.btnAnt.mouseEnabled = false; }else{ barra.btnAnt.mouseEnabled = true; } addChild(barra); function borrarElementos(ini:Number,fin:Number){ for(var ii:int=ini;ii<fin;ii++){ var target:DisplayObject = getChildByName("dia"+ii); removeChild(target); } removeChild(barra); } function Fproximo(event:MouseEvent):void{ borrarElementos(Xinicial,Xfinal); if((Xfinal+MAX)>T){ SALIDA(sal,Xfinal,T,T,MAX); }else{ SALIDA(sal,Xfinal,Xfinal+MAX,T,MAX); } } function Fanterior(event:MouseEvent):void{ borrarElementos(Xinicial,Xfinal); SALIDA(sal,Xinicial-MAX,Xinicial,T,MAX); } barra.btnProx.addEventListener(MouseEvent.CLICK,Fproximo); barra.btnAnt.addEventListener(MouseEvent.CLICK,Fanterior); }
  #10 (permalink)  
Antiguo 09/07/2009, 06:16
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
Puntos: 51
Respuesta: ya no puedo mas / addEventListener

buaa que lio te has montado Xd mira primero crea objetos de indice dentro del mc por ejemplo
Código PHP:
for (var i:int=0i<4i++) {
    var 
mc:MovieClip Atachar("dia");// Atachar funciona bien; "dia" elemento de biblioteca
    
mc.name "dia"+i;
    
mc.diaFondo.alpha .5;
    
mc.id=i
    
for (var j:int=0j<4j++) {//CADA ELEMENTO
        
mc["anota"+j].id=j
        mc
["anota"+j].addEventListener(MouseEvent.CLICK,ABRIR);
        
addChild(mc);
    }
}
function 
ABRIR(event:MouseEvent):void {
    
trace(event.currentTarget.parent.id//esta recoge el indice mc.id
    
trace(event.currentTarget.id)//esta recoge el indice del mc.anotaX.id
    // aqui quiero desplegar los indices de los FOR el "i" y el "j"

__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #11 (permalink)  
Antiguo 09/07/2009, 17:03
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: ya no puedo mas / addEventListener

Sabes, había probado con mc.id=i y los pasaba como parametros, pero no funcionaba, ahora sin el paso de parametros y
Cita:
trace(event.currentTarget.parent.id) //esta recoge el indice mc.id
trace(event.currentTarget.id)
FUNCIONA!!!!

GRACIAS Lynxcraft
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:46.