ActionScript - Asignar valores a check box, sumarlos y mostrar resultado en cuadro de texto

 
Vista:

Asignar valores a check box, sumarlos y mostrar resultado en cuadro de texto

Publicado por lucas (2 intervenciones) el 13/01/2012 15:58:59
Estimados:

Estoy en finalizando la etapa de validación de 10 check box, donde la aplicación deberá validar en una primera instancia que el usuario haya seleccionado solo 3 opciones de la lista.

El codigo funciona y es el siguiente:

import mx.controls.Alert;
stop();
for(var i = 1; i < 11; i++) {
this["check" + i].setStyle("color", 00000000);
this["check" + i].setStyle("fontWeight", "bold");
this["check" + i].setStyle("marginLeft", 2);
}
boton1.onRelease = function() {
var respuestas:Array = buscaSeleccionados();
if(respuestas.length <> 3)
Alert.show("Usted seleccionó: " + respuestas.length, "Elija 3 opciones");
else
gotoAndPlay(2);
}
function buscaSeleccionados():Array {
var temp = new Array();
for(var i = 1; i < 11; i++) {
if(this["check" + i].selected) {
temp.push(this["check" + i].label);
}
}
return temp;
}

Para ver el resultado, abran un proyecto nuevo en as2, en el primer fotograma agreguen 10 check box con instancias check1, check2, etc, checkN y un boton con la instancia boton1.
En el mismo fotograma pegan el codigo anteriormente expuesto (en acciones) y en el segundo fotograma pon un texto cualquier como "resultado" y en acciones el script

stop();

Ahora bien, mi consulta es la siguiente:

Logre con "buscaseleccionados" CONTAR la cantidad de seleccionados pero necesito obtener un numero de 10 digitos, de acuerdo a la selección de cada usuario, para poder validar el resultado final a mostrar en el tercer fotograma.

Es decir:

CHECK1 necesito que se guarde en temporal como 1
CHECK2 como 10
CHECK3 como 100
CHECK4 como 1000
CHECK5 como 10000
CHECK6 como 100000
CHECK7 como 1000000
CHECK8 como 10000000
CHECK9 como 100000000
CHECK10 como 1000000000

y a su ves en este mismo arreglo obtener la sumatoria de los check seleccionados

Es decir, si el usuario clickeo el 1 el 5 y el 10, necesito que el arreglo cargue una variable denominada TOTAL, con el resultado: 1000010001

De esta forma, me permitiria generar un switch en donde

para el caso 1000010001, devuelva un mensaje como "las respuestas no son las correctas".

Si bien esta parte tengo nociones para programarla.

Desconozco como puedo hacer un arreglo cuyo valor final sea una sumatoria lineal de una precarga de checks con los valores expuestos.

Les agradezco mucho su colaboración.

Saludos,

Lucas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Generar una sumatoria lineal y validar respuestas de checkboxes

Publicado por Alejandro (369 intervenciones) el 27/06/2023 20:38:26
El código que has proporcionado es para ActionScript 2 (AS2). Aquí te presento una solución para generar una sumatoria lineal y validar las respuestas de los checkboxes en AS2.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import mx.controls.Alert;
stop();
 
var total:Number = 0; // Variable para almacenar la sumatoria lineal
 
for (var i:Number = 1; i < 11; i++) {
    this["check" + i].setStyle("color", 0x00000000);
    this["check" + i].setStyle("fontWeight", "bold");
    this["check" + i].setStyle("marginLeft", 2);
    this["check" + i].id = Math.pow(10, i - 1); // Asignar el valor correspondiente a cada checkbox
    this["check" + i].onRelease = function() {
        this.selected ? total += this.id : total -= this.id; // Actualizar la sumatoria lineal al seleccionar o deseleccionar
    }
}
 
boton1.onRelease = function() {
    var respuestas:Array = buscaSeleccionados();
    if (respuestas.length !== 3) {
        Alert.show("Usted seleccionó: " + respuestas.length, "Elija 3 opciones");
    } else {
        if (total === 1000010001) {
            gotoAndPlay(3); // Ir al tercer fotograma si las respuestas son correctas
        } else {
            Alert.show("Las respuestas no son las correctas", "Error");
        }
    }
}
 
function buscaSeleccionados():Array {
    var temp:Array = [];
    for (var i:Number = 1; i < 11; i++) {
        if (this["check" + i].selected) {
            temp.push(this["check" + i].label);
        }
    }
    return temp;
}

Esta solución asigna un identificador único a cada checkbox, utilizando el valor correspondiente en la sumatoria lineal. Al seleccionar o deseleccionar un checkbox, se actualiza la variable `total` en consecuencia.

Luego, al hacer clic en el botón `boton1`, se verifica si se han seleccionado exactamente 3 checkboxes. Si es así, se compara el valor de `total` con el número esperado (1000010001). Si coinciden, se va al tercer fotograma; de lo contrario, se muestra un mensaje de error.

Recuerda ajustar los fotogramas y la lógica de tu proyecto según tus necesidades.

Espero que esta solución te sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar