
En la imagen pueden verse 10 textos que son valores de colores: 000000, FF0000, 00FF00, y el resto son todos 999999.
Al lado de cada valor hay una columna de cuadraditos grises.
La idea básicamente es que tengan un color y al cliquearlos su color se transfiera al valor que muestra su texto asociado.
Cada columna de esas es una película con algo como esto:
Código
en cada una los valores son distintos.
onClipEvent (load) { ColorAsociado = 0; ColorDelCentro0 = 0xCCCCCC; ColorDelCentro1 = 0x999999; ColorDelCentro2 = 0x666666; ColorDelCentro3 = 0x333333; }
ColorAsociado se refiere a qué valor cambiará.
Lo demás se refiere a qué colores tendrán los centros de los cuadraditos.
Cada cuadradito tiene:
Código
donde X es 0, 1, etc, según el cuadradito que sea.
onClipEvent (load) { ColorDelCentro = _parent.ColorDelCentroX; }
Lo que hace es tomar de su película padre, el color que se le puso.
Si los cuadraditos tuvieran nombre, quizá se podría haber puesto al inicio algo como:
Cuadradito0.ColorDelCentro = 0xCCCCCC;
Cuadradito1.ColorDelCentro = 0x999999;
etc, tendría que probar.
Todos los cuadraditos tienen esto:

En frame 1:
ColorDelObjetoCentro = new Color(Centro);
stop ();
La parte del extremo (el borde, pero no le digo así porque tienen un borde con línea, que obvié) tiene transparencia.
El centro, llamado Centro, se extiende hasta el frame 2 y tiene:
Código
Con esto, cada vez que la película va al frame 1 o al 2, el centro del cuadradito se pone del color que se le estableció.
onClipEvent (load) { _parent.ColorDelObjetoCentro.setRGB(_parent.ColorDelCentro); }
El botón es un objeto invisible que ocupa todo el cuadradito y en el frame 1 tiene:
Código
Hace que, al señalarlo, la película vaya al frame 2.
on (rollOver) { gotoAndStop (2); }
Frame 2:
La parte extrema del cuadradito, ahora llamada Extremo, pero no sé si es necesario ponerle nombre, tiene:
Código
Eso hace que cambie de color constantemente. Es un efecto visible para indicar que el botón está siendo señalado.
onClipEvent (load) { ColorDelExtremo = new Color(this); } onClipEvent (enterFrame) { Rojo = random(256); Verde = random(256); Azul = random(256); ColorDelExtremo.setRGB(Rojo*65536+Verde*256+Azul); }
El centro ya dije que se extendía desde el frame 1, así que sigue igual.
El botón, que se extiende hasta el frame 3, tiene:
Código
Si el botón se deja de señalar, la película va al frame 1, donde la parte extrema del cuadradito ya no cambia de colores, queda como al inicio, un botón normal.
on (rollOut) { gotoAndStop (1); } on (press) { // El extremo de este botón tendrá el color del centro, // y él cambiará a colores random: ExColorDelCentro = ColorDelObjetoCentro.getRGB(); gotoAndStop (3); } on (release, releaseOutside) { // El centro tendrá el color asociado (de unos cuadraditos): ColorDelCentro = _level0.PosiblesColores[_parent.ColorAsociado]; ColorDelObjetoCentro.setRGB(ColorDelCentro); // Si se saltearon colores (es cuando se asigna el 5to... // sin haber asignado el 4to, por ej), asignar los intermedios al azar: NroDePosibleColoraAsignar = _level0.PosiblesColores.length; while (_level0.PosiblesColores.length < _parent.ColorAsociado) { ColorElegido = random(16711681); _level0.PosiblesColores[NroDePosibleColoraAsignar] = ColorElegido; // A continuación se modificará la variable que muestra... // el color, que existe porque el contenido de un array... // no se puede mostrar directamente. Se le agregarán "0s"... // si tiene menos de lo debido: ColoraAsignar = ColorElegido.toString(16).toUpperCase(); while (ColoraAsignar.length < 6) { ColoraAsignar = "0"+ColoraAsignar; } set("_level0.ShowerDePosibleColor"+NroDePosibleColoraAsignar, ColoraAsignar); NroDePosibleColoraAsignar++; } // El color asociado de los posibles colores de los cuadraditos... // tendrá el color del extremo: _level0.PosiblesColores[_parent.ColorAsociado] = ColorDelExtremo.getRGB(); // A continuación se modificará la variable que muestra... // el color, que existe porque el contenido de un array... // no se puede mostrar directamente. Se le agregarán "0s"... // si tiene menos de lo debido: ColoraAsignar = ColorDelExtremo.getRGB().toString(16).toUpperCase(); while (ColoraAsignar.length < 6) { ColoraAsignar = "0"+ColoraAsignar; } set("_level0.ShowerDePosibleColor"+_parent.ColorAsociado, ColoraAsignar); _level0.InsertarCuadros(); gotoAndStop (1); }
Dije lo que hace cuando se cliquea, pero no entiendo cómo lo hice o cómo lo hago mejor, diré más en el frame 3. Es un efecto visible de que el botón está siendo presionado, en vez de hundirse.
Lo que el botón hace cuando se suelta, lo hace luego de llegar al frame 3 porque fue ahí al cliquearse, así que lo vemos luego.
Frame 3:
ColorDelExtremo = new Color(Extremo);
ColorDelExtremo.setRGB(ExColorDelCentro);
Con esto el color del extremo del cuadradito queda como estaba su centro. Pensé que podría ponerlo en el botón en el código de cuando se cliquea, pero algo falla, no sé.
La parte extrema del cuadradito, Extremo, ya no tiene su código de cambiar colores.
El centro tiene:
Código
Para que cambie de colores al azar, el efecto visible en vez de hundirse, que ya comenté.
onClipEvent (load) { ColorDeEsto = new Color(this); } onClipEvent (enterFrame) { Rojo = random(256); Verde = random(256); Azul = random(256); ColorDeEsto.setRGB(Rojo*65536+Verde*256+Azul); }
Y ahora se aplicaría lo del botón.
Código
En cuanto a cuadraditos es lo mismo que tomar el valor que tiene su texto asociado. Es como que los colores se intercambian, el color central es ahora como indica el texto pero el texto queda como era el color central. Es como si hubiera 5 opciones: 4 en los cuadraditos y la elegida en el texto, entonces al elegir otra se pasa al texto y la que estaba elegida pasa a las elegibles.
// El centro tendrá el color asociado (de unos cuadraditos): ColorDelCentro = _level0.PosiblesColores[_parent.ColorAsociado]; ColorDelObjetoCentro.setRGB(ColorDelCentro);
Código
Eso se supone que está bien explicado y lo entiendo, no le veo problema tampoco.
// Si se saltearon colores (es cuando se asigna el 5to... // sin haber asignado el 4to, por ej), asignar los intermedios al azar: NroDePosibleColoraAsignar = _level0.PosiblesColores.length; while (_level0.PosiblesColores.length < _parent.ColorAsociado) { ColorElegido = random(16711681); _level0.PosiblesColores[NroDePosibleColoraAsignar] = ColorElegido; // A continuación se modificará la variable que muestra... // el color, que existe porque el contenido de un array... // no se puede mostrar directamente. Se le agregarán "0s"... // si tiene menos de lo debido: ColoraAsignar = ColorElegido.toString(16).toUpperCase(); while (ColoraAsignar.length < 6) { ColoraAsignar = "0"+ColoraAsignar; } set("_level0.ShowerDePosibleColor"+NroDePosibleColoraAsignar, ColoraAsignar); NroDePosibleColoraAsignar++; }
Código
Esto sería lo más importante, que el color cliqueado se transmita al valor que muestra el texto. La mención a cuadraditos es porque aparecerán en pantalla unos, que deben poder tener el color cliqueado. Con todo esto y otro código se logra.
// El color asociado de los posibles colores de los cuadraditos... // tendrá el color del extremo: _level0.PosiblesColores[_parent.ColorAsociado] = ColorDelExtremo.getRGB(); // A continuación se modificará la variable que muestra... // el color, que existe porque el contenido de un array... // no se puede mostrar directamente. Se le agregarán "0s"... // si tiene menos de lo debido: ColoraAsignar = ColorDelExtremo.getRGB().toString(16).toUpperCase(); while (ColoraAsignar.length < 6) { ColoraAsignar = "0"+ColoraAsignar; } set("_level0.ShowerDePosibleColor"+_parent.ColorAsociado, ColoraAsignar);
Código
Eso inserta dibujos con cuadraditos y el goto hace que el botón vuelva a quedar normal, mostrando en su centro qué color pondrá en el texto si se cliquea.
_level0.InsertarCuadros(); gotoAndStop (1);
Todo esto es que empecé a revisarlo y no lo entendía, y algunas cosas aún no las entiendo, si se pueden hacer mejor o no. Díganme cómo hacerlo mejor o explíquenme por qué no se puede.