Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Tachikomaia en 17 Octubre 2023, 09:40 am



Título: ¿Cómo programo una luz expandiéndose?
Publicado por: Tachikomaia en 17 Octubre 2023, 09:40 am
Llevo un tiempo sin lograr que quede bien, de momento lo tengo así:
https://drive.google.com/file/d/1jCTOuhgsoF67vv1P7_uVp-aIHqtXLHSW/view?usp=sharing

Funciona lento porque mi PC se enlentece por muchas transparencias, más aún si está grabando.
No sé por qué al agregar algo con transparencia, lo que está debajo se vuelve transparente, parece.

Lo que quiero es que la luz se vaya expandiendo, hasta que la pantalla quede totalmente roja, pero que la expansión sea con transparencia en los extremos.

Funciona así (marco en negrita donde empieza lo relevante porque lo demás dudosamente lo sea):
Cuando se señala donde estaría la luz roja del semáforo, se enciende un poco.

Cuando se cliquea, más, pero en este caso se inserta una imagen, porque de la forma fácil puede ocurrir un bug, así lo evito.

Cuando se suelta el botón, la imagen es sustituída por otra, de la misma manera. También aparece un objeto que tiene:
Código
  1. onClipEvent (load) {
  2. N = 0;
  3. }
  4. onClipEvent (enterFrame) {
  5. N = N+1;
  6. Opacidad = 100-N*2.5;
  7. if (Opacidad>0) {
  8. attachMovie("LuzRojaB", "Light"+N, N);
  9. setProperty ("Light"+N, _xscale, 100+N*N);
  10. setProperty ("Light"+N, _yscale, 100+N*N);
  11. setProperty ("Light"+N, _alpha, Opacidad);
  12. }
  13. }
Significa que al cargarse se define una variable.

Luego, la 1era vez que transcurre un frame (cierto tiempo), la imagen es removida (eso no está en el código ese) porque sino queda encima de todo (se podría insertar sin que ocurra eso pero según sé esta es la mejor forma de hacerlo, no hay problema), y empieza a ejecutarse el código que está debajo de "enterframe", cada vez que transcurra un frame.
La Opacidad va disminuyendo, pero sólo debería aplicarse a las imágenes que van a insertarse, no a las que ya se insertaron.
Si la Opacidad es >0, es decir, si la imagen no será totalmente transparente, entonces se inserta.
attachMovie("LuzRojaB", "Light"+N, N);
=
InsertarImagen(Cual, NuevoNombre, CuanEncima).
...
Lo demás es hacer que la imagen insertada sea cada vez más grande y menos opaca o más transparente.

La opacidad de las imágenes ya insertadas no cambia porque cambie la variable, eso ya lo comprobé. Lo que hace la última línea es especificar la opacidad de la imagen que se está insertando, y al igual que las demás queda así hasta que se especifique un nuevo valor para ella. El hecho de que, efectivamente cambien debe ser por un bug o algo que no entiendo, pero no sé si ese es el problema.