Comunidad de diseño web y desarrollo en internet online

Duda graphics de forma instantanea

Citar            
MensajeEscrito el 25 Abr 2013 06:52 pm
Buenas a todos!! Soy novato en actionscript 3.
Estoy intentando hacer una especie de jueguillo un poco cutre jejee, estoy usando solamente FlashDevelop (sin usar adobe flash), y me sucede lo siguiente:

Tengo una función que se llama desde un EventListener en la que quiero hacer :
//Pseudocodigo

pintarCirculoAzul();
esperaTiempo();
pintarCirculoRojo(); //Sobre el circulo anterior

La función de espera la uso para que en un breve periodo de tiempo se muestre la primera imagen, las imágenes (ambas) las pinto usando la librería graphics. Lo que sucede (comprobado mediante debugging) es que hasta que no sale del método llamado por el EventListener no se actualiza la pantalla, de forma que no se llega a mostrar la primera imagen y no entiendo porque. ¿Alguna idea? ¿Como puedo hacer que se pinte de forma instantanea?

Ahh , al pintar lo hago sobre un Sprite que coloque en la pantalla con addChild y el pintarcirculo es un simple miSprite.graphics.drawCircle(...);

Muchas gracias. Saludos!

Por isijose2

4 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 26 Abr 2013 07:58 pm
Serias bueno que publicaras el código completo de como dibujas los círculos para poder ver donde esta el error. Recuerda que si estas llamando las tres funciones al mismo tiempo , lo normal es que solo veas el circulo que se dibuja en la ultima función.

Por julianpena

98 de clabLevel

1 tutorial

Genero:Masculino  

Diseñador Grafico

chrome
Citar            
MensajeEscrito el 26 Abr 2013 10:16 pm
Buenas, si las hago las tres seguidas, pero con una pausa para que se pueda notar el cambio. Para que se entienda dejo un ejemplo de código con mi problema:

----------------------------------------------------

package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.getTimer;
import flash.events.MouseEvent;

/**
* ...
* @author isijose2
*/
public class Main extends Sprite
{

public var dibu: Sprite = new Sprite ();

public function Main():void
{

addChild (dibu);

dibu.addEventListener(MouseEvent.CLICK, detectaboton);

draw(0xFFFF00);

}

public function detectaboton(e:MouseEvent):void
{

draw(0x000080);

trace("antes");
esperando(5000); /// Para esperar 5 segundos
trace("despues") // solo para dejar constancia de que transcurren los 5 segundos sin seguir ejecutando

draw(0xFFFF00); // Si se comenta, se puede comprobar el cambio.

/// Mi idea es que se pinte , luego espere 5 segundos mostrándose y luego vuelva al dibujo inicial

}

public function esperando(tiempo:uint):void {


var min:uint = getTimer();

while (tiempo>(getTimer()-min)) {

}

}


private function draw(color:uint):void {
dibu.graphics.beginFill(0x000000);
dibu.graphics.drawCircle(100, 100, 60);
dibu.graphics.endFill();
dibu.graphics.beginFill(color);

dibu.graphics.drawCircle(100, 100, 50);
dibu.graphics.endFill();

}

}

}

----------------------------------------------------

Por lo que he comprobado, lo que sucede es que la función de graphics no llega ha activarse hasta termina la función desde la que la llamo. ¿Se puede hacer algo para que sea instantáneo? o ¿alguna otra cosa para que lo realice tal y como quiero ?


Aparte,se me ocurrió otra forma de realizar el juego con la función setInterval(miactualizarpantalla,30); , lo que sucede es que no necesito actualizar la pantalla constantemente, si no ante determinadas situaciones.

Gracias. Saludos!!

Por isijose2

4 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.