elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Error por clic y soltar fuera del botón.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error por clic y soltar fuera del botón.  (Leído 410 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.507


Hackentifiko!


Ver Perfil
Error por clic y soltar fuera del botón.
« en: 26 Noviembre 2024, 05:19 am »

https://youtu.be/xvKPm6Sox3c

Lo negro que cliqueo estará debajo de unos botones, ya hay uno, blanco.

Tienen 3 estados, o frames.

El 1ero es simple, estático.

Cuando uno de esos botones se señala, su borde parpadea cambiando de colores al azar. El estado 2: Señalándolo.

Cuando se cliquea, su borde adquiere el color de su centro, y su centro parpadea cambiando de colores al azar. El estado 3: Cliqueándolo.

Cuando se suelta, su centro adquiere el color del separador de dibujos, eso adquiere el color del borde del botón, y eso vuelve a como era (negro transparente).

Es un botón que asigna un color a los separadores de dibujos, pero en vez de asignar siempre el mismo, luego de usarse adquiere el color de los separadores, porque si son blancos no tiene mucho sentido un botón que los vuelva blancos. El resto son efectos para que quede mejor.

El problema es que si se cliquea, sin soltar el clic se deja de señalar, y se suelta el clic sin señalar el botón, entonces queda en el estado 3, incluso sin estarlo señalando, ni cliqueando, y eso está mal.

¿Cómo se evita ese error? Aún no lo pensé porque tuve mucho lío intentando lograr esos efectos que dije arriba xP Tengo que acomodar algunos nombres de variables también.

Pongo el código y luego el archivo. También pueden darme sugerencias sobre cómo mejorar el proceso.

La película que tiene el botón inicia así:
Código
  1. onClipEvent (load) {
  2. ColorDel = 0xFFFFFF;
  3. }
DelCentro sería, pero ese nombre ya lo tenía usado, culpa de cómo Flash guarda los colores  >:(
Eso hará que cada botón tenga un color distinto, aunque el símbolo u objeto sea el mismo. Sólo debe aplicarse una vez, sino el botón podría quedar como al inicio, cuando no debe.

En el frame 1 de la película:
ColorDelCentro = new Color(Centro);
stop ();
Posiblemente se puede poner esa definición en el load anterior. El stop hace que la película se quede mostrando el estado 1, normal, del botón.

Esto es de la parte central del botón, que ocupa el frame 1 y el 2:
Código
  1. onClipEvent (load) {
  2. _parent.ColorDelCentro.setRGB(_parent.ColorDel);
  3. }
Adquiere el color asignado por la variable.

Botón en el frame 1:
Código
  1. on (rollOver) {
  2. gotoAndStop (2);
  3. }
Cuando el botón se señala, va a su frame 2.

Frame 2:

El borde del botón, llamado Extremo (pues de hecho también tiene un borde exterior a eso, pero no cambia) tiene esto:
Código
  1. onClipEvent (load) {
  2. ColorDelExtremo = new Color(this);
  3. }
  4. onClipEvent (enterFrame) {
  5. Rojo = random(256);
  6. Verde = random(256);
  7. Azul = random(256);
  8. ColorDelExtremo.setRGB(Rojo*65536+Verde*256+Azul);
  9. }

El botón, que ocupa el frame 2 y 3, tiene:
Código
  1. on (rollOut) {
  2. gotoAndStop (1);
  3. }
  4. on (press) {
  5. // El extremo de este botón tendrá el color del centro,
  6. // y él cambiará a colores random:
  7. ExColorDelCentro = ColorDelCentro.getRGB();
  8. gotoAndStop (3);
  9. }
  10. on (release) {
  11. // El centro tendrá los colores de los separadores (fondo):
  12. ColorDel = _level0.ColorDelObjetoFondo.getRGB();
  13. ColorDelCentro.setRGB(ColorDel);
  14. // Los separadores el color del extremo:
  15. _level0.ColorDelFondo = ColorDelExtremo.getRGB().toString(16).toUpperCase();
  16. _level0.ColorDelObjetoFondo.setRGB(ColorDelExtremo.getRGB());
  17. gotoAndStop (2);
  18. }

Frame 3:
Código
  1. ColorDelExtremo = new Color(Extremo);
  2. ColorDelExtremo.setRGB(ExColorDelCentro);
Un detalle quizá relevante es que en el frame 1, el objeto Extremo no tiene nombre, porque no se quiere que tenga efectos.

Centro del botón, pero no tiene nombre:
Código
  1. onClipEvent (load) {
  2.    ColorDeEsto = new Color(this);
  3. }
  4. onClipEvent (enterFrame) {
  5.    Rojo = random(256);
  6.    Verde = random(256);
  7.    Azul = random(256);
  8.    ColorDeEsto.setRGB(Rojo*65536+Verde*256+Azul);
  9. }
  10.  

Creo que eso es todo.

https://drive.google.com/file/d/1cveV1htg1Hto9ylnu-hNnCMpwrdV45ma/view?usp=sharing


Edit:
Solucionado, los botones tienen la opción de "release out", simplemente hice tic en esa opción y puse que vaya al frame 1 en vez de al 2.
Lo que está mal es cómo queda el texto del color luego de que se seleccionan ciertos colores, pero eso es otro tema.


« Última modificación: 27 Noviembre 2024, 06:53 am por Tachikomaia » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines