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

Comparar dos array

Estas en el tema de Comparar dos array en el foro de Flash y Actionscript en Foros del Web. Hola: Estoy realizando un juego de organización de elementos en columnas. Tengo dos columnas con diferentes nombres a las que hay que arrastrar elementos de ...
  #1 (permalink)  
Antiguo 25/06/2007, 14:21
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 12 años, 9 meses
Puntos: 0
Exclamación Comparar dos array

Hola:

Estoy realizando un juego de organización de elementos en columnas.

Tengo dos columnas con diferentes nombres a las que hay que arrastrar elementos de manera adecuada que correspondan con la columna.

Para hacer la validación tengo dos array que contienen las respuetas correctas, además de otros dos array en los que se van añadiendo los elementos de manera dinámica conforme se van arrastrando a la columna.

Todo bien hasta el momento de hacer la validación y comparación de los cuatro array, ya que no puedo obtener los resultados equivocados, sólo los buenos.

Aquí el código:
Código PHP:
var arrayColQuimica:Array = new Array("pap_cara""pap_mas_blanca""pap_mas_blancos""pap_menos_cuerpo""pap_quita_lignina");
var 
arrayColMecanica:Array = new Array("pap_amarillentos""pap_barata""pap_mas_cuerpo""pap_menos_blanca""pap_no_quita_lignina""pap_opacos");
var 
correctasEjer:Array = arrayColQuimica.concat(arrayColMecanica);
trace (correctasEjer);
var 
arrayColQuimicaResp:Array = new Array();
var 
arrayColMecanicaResp:Array = new Array();
var 
respondidasEjer:Array = new Array(arrayColQuimicaResparrayColMecanicaResp);
arrayColQuimicaResp.concat(arrayColMecanicaResp);
function 
colocaTextos(movieClip){
    
with (ejercicio) {
        
columnas = [(cel_mecanica), (cel_quimica)];
        
colMecanica columnas[0];
        
colQuimica columnas[1];
        
movieClipString String(movieClip).substr(18);
        var 
arrayTemporal1:Array = _root.arrayColMecanicaResp.slice();
        var 
arrayTemporal2:Array = _root.arrayColQuimicaResp.slice();
        
j=0;
        while(
movieClipString != arrayTemporal1[j] and arrayTemporal1.length){
            
j++;
        }
        
k=0;
        while(
movieClipString != arrayTemporal2[k] and arrayTemporal2.length){
            
k++;
        }
        Array.
prototype.removeItem=function(find){
        for(var 
z=0;z<this.length;++z){
            if(
this[z] == find){
                
this.splice(z,1)
            }
        }
        return 
false
        
}
        for(
i=0;i<columnas.length;i++){
            if (eval(
movieClip._droptarget) == columnas[i]) {
                
movieClip._x columnas[i]._x + ((columnas[i]._width movieClip._width)/2);
                
trace ("donde se soltó el MC "+eval(movieClip._droptarget));
                
trace ("nombre del MC soltado "+movieClip);
                if (eval(
movieClip._droptarget) == colMecanica) {
                    
trace ("valor inicial del array colMecanica: "+_root.arrayColMecanicaResp);
                    
trace ("valor actual del array colMecanicaTemporal: "+arrayTemporal1);
                    
trace ("valor actual del array colQuimicaTemporal: "+arrayTemporal2);
                    if (
arrayTemporal2[k] != movieClipString) {
                        
trace ("MovieClip no está en la columna quimica");
                        if (
arrayTemporal1[j] != movieClipString){
                            
trace ("MovieClip no está en la columna mecanica, así que lo graba");
                            
_root.arrayColMecanicaResp.push(movieClipString);
                        }else{
                            
trace ("MovieClip ya está en la columna mecanica, no hace nada");
                        }
                    }else{
                        
trace ("MovieClip ya estaba en la columna química, borrarlo");
                        
trace ("MovieClip no está, logicamente, en la columna mecanica, así que lo graba");
                        
//delete _root.arrayColQuimicaResp[k];
                        
_root.arrayColQuimicaResp.removeItem(movieClipString);
                        
_root.arrayColMecanicaResp.push(movieClipString);
                    }
                } else if (eval(
movieClip._droptarget) == colQuimica) {
                    
trace ("valor inicial del array colQuimica: "+_root.arrayColMecanicaResp);
                    
trace ("valor actual del array colMecanicaTemporal: "+arrayTemporal1);
                    
trace ("valor actual del array colQuimicaTemporal: "+arrayTemporal2);
                    if (
arrayTemporal1[j] != movieClipString) {
                        
trace ("MovieClip no está en la columna mecanica");
                        if (
arrayTemporal2[k] != movieClipString){
                            
trace ("MovieClip no está en la columna quimica, así que lo graba");
                            
_root.arrayColQuimicaResp.push(movieClipString);
                        }else{
                            
trace ("MovieClip ya está en la columna quimica, no hace nada");
                        }
                    }else{
                        
trace ("MovieClip ya estaba en la columna mecanica, borrarlo");
                        
trace ("MovieClip no está, logicamente, en la columna quimica, así que lo graba");
                        
_root.arrayColMecanicaResp.removeItem(movieClipString);
                        
_root.arrayColQuimicaResp.push(movieClipString);
                    }
                }
                
trace ("array respondidas ejercicio**"+_root.respondidasEjer);
                
trace ("************************************************************************");
            }
        }
    }
}
function 
comparaArraysQuimica() {
    
//trace ("compara quimica");
    
var arrayColQuimicaRespTemp:Array = _root.arrayColQuimicaResp.slice();    
    
arrayColQuimicaRespTemp.sort();
    
trace ("Array Correctas Quimica Ejercicio: "+arrayColQuimica);
    
trace ("Array Respondidas Quimica Ejercicio: "+arrayColQuimicaRespTemp);
    for (var 
0l<arrayColQuimica.lengthl++) {
        for (var 
0m<arrayColQuimicaResp.lengthm++) {
            if (
arrayColQuimica[l] == arrayColQuimicaRespTemp[m]) {
                
trace ("correctas"+arrayColQuimica[l]);
                
trace ("respondidas"+arrayColQuimicaRespTemp[m]);
                
trace ("Felicidades, esta respuesta en columna química es correcta: "+arrayColQuimicaRespTemp[m]);
            }
        }
    }
    
delete arrayColQuimicaRespTemp;
}

function 
comparaArraysMecanica() {
    
//trace ("compara mecanica");
    
var arrayColMecanicaRespTemp:Array = _root.arrayColMecanicaResp.slice();    
    
arrayColMecanicaRespTemp.sort();
    
trace ("Array Correctas Mecanica Ejercicio: "+arrayColMecanica);
    
trace ("Array Respondidas Mecanica Ejercicio: "+arrayColMecanicaRespTemp);
    for (var 
0n<arrayColMecanica.lengthn++) {
        for (var 
0o<arrayColMecanicaRespTemp.lengtho++) {
            if (
arrayColMecanica[n] == arrayColMecanicaRespTemp[o]) {
                
trace ("correctas: "+arrayColMecanica[n]);
                
trace ("respondidas: "+arrayColMecanicaRespTemp[o]);
                
trace ("Felicidades, esta respuesta en la columna mecánica es correcta: "+arrayColMecanicaRespTemp[o]);
            }
        }
    }
    
delete arrayColMecanicaRespTemp;
}

with (ejercicio) {
    
pap_amarillentos.onPress = function() {
        
this.startDrag();
    };
    
pap_amarillentos.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_amarillentos);
    };
    
pap_barata.onPress = function() {
        
this.startDrag();
    };
    
pap_barata.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_barata);
    };
    
pap_cara.onPress = function() {
        
this.startDrag();
    };
    
pap_cara.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_cara);
    };
    
pap_mas_blanca.onPress = function() {
        
this.startDrag();
    };
    
pap_mas_blanca.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_mas_blanca);
    };
    
pap_mas_blancos.onPress = function() {
        
this.startDrag();
    };
    
pap_mas_blancos.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_mas_blancos);
    };
    
pap_mas_cuerpo.onPress = function() {
        
this.startDrag();
    };
    
pap_mas_cuerpo.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_mas_cuerpo);
    };
    
pap_menos_blanca.onPress = function() {
        
this.startDrag();
    };
    
pap_menos_blanca.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_menos_blanca);
    };
    
pap_menos_cuerpo.onPress = function() {
        
this.startDrag();
    };
    
pap_menos_cuerpo.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_menos_cuerpo);
    };
    
pap_no_quita_lignina.onPress = function() {
        
this.startDrag();
    };
    
pap_no_quita_lignina.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_no_quita_lignina);
    };
    
pap_opacos.onPress = function() {
        
this.startDrag();
    };
    
pap_opacos.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_opacos);
    };
    
pap_quita_lignina.onPress = function() {
        
this.startDrag();
    };
    
pap_quita_lignina.onRelease = function() {
        
this.stopDrag();
        
_root.colocaTextos(pap_quita_lignina);
    };
    
botonVerificar.onRelease = function() {
        if ((
_root.arrayColQuimica.length+_root.arrayColMecanica.length) > (_root.arrayColQuimicaResp.length+_root.arrayColMecanicaResp.length)){
            
trace ("Debes de agrupar todas las palabras en la columna correspondiente");
        }else{
            
_root.comparaArraysMecanica();
            
_root.comparaArraysQuimica();
        }
    };

La dirección al archivo ya swf:
http://percepcionunitaria.org/prueba...jercicio01.swf

Lo que necesito es que al momento de apretar el boton de validar, revise qué palabras están bien soltadas en la columna correspondiente y qué palabras no.

¿Alguna idea?
Gracias
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 08:30.