Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Bucle vs eventos

Iniciado por Buffon, 21 de Noviembre de 2008, 08:37:17 AM

« anterior - próximo »

Buffon

Buenos días,

Estoy peleandome ahora con flex3 + as3 y tengo una seria duda.

Del código tradicional en C/C++:

while(true)
{
time1 = getTime()
gamelogic()
colisions()
movement()
...
do {
time2  = getTime() - time1
}while(time2 > XXXFPS )
}

he pasado a hacerlo por eventos con un Timer

gametimer:Timer = new Timer(20) <---- cada 20 ms se ejecutará un evento TIMER
gametimer.addEventListener(TimerEvent.TIMER,onTickTimer)
gametimer.start()

y en definitiva la función onTickTimer es el nuevo while(true) y como defines cada cuanto quieres lanzarla ya tienes los FPS estudiados, pero me veo que en el arkanoid que he hecho la pelota parece "vibrar", no se mueve con suavidad sino que a veces parece volver a un punto anterior y hace como un efecto "estela".

He mirado el tutorial de tirso de utilización de flex3 + as3 y su código es identico al mio, lo he probado y también tiene el mismo problema.

Es normal que esto ocurra cuando se utilizan eventos para generar los frames ? Es mejor casi seguir incluyendo el bucle de toda la vida y calcularse uno los FPS que desea ? Como se soluciona sino el efecto "estela".

Capiflash

La verdad es que es algo con lo que todavía no me he topado con Flex, de hecho, mi interes con el Flex es para crear "RIA's", asi que de momento no he metido mano a animar nada por la pantalla. Pero si alguien postea una solución es algo a tener en cuenta para cuando me surja una situación similar.

Buffon


Juanchocosa

Hola,

yo uso tambien timers para el bucle principal de juegos Flash, y no me he topado con este problema que comentas al mover objetos. Puedes pastear el código del movimiento en concreto? Igual ahí se puede ver donde está el problema.

Buffon


TiRSO

Hola. Lo primero que quería decirte es que no pongas el código del Arkanoid ese como el "modelo a seguir" en cuanto a programación en Flash. Ese código es lo primero que escribí en mi vida en AS y la verdad es que es bastante chapucero, aunque una forma sencillísima de programar un arkanoid.

Sobre lo de los frames y tal... Ten en cuenta que se deben pasar los fps por defecto al compilador de flex (mxmlc). Esto se hace con la opción "-default-frame-rate". Por ejemplo, para compilar con un frame rate de 60, sería algo así:

Código (dos) [Seleccionar]
mxmlc -default-frame-rate 60 juego.as

Lo he probado con el arkanoid y al subirle los frames va mucho más fluido (el Timer del código está puesto pensando en unos 100fps ¬¬). Aún así sigue quedando esa estela rara, pero es que la bola va bastante rápido y es pequeña... He usado este mismo código en otros juegos y no se notaba nada raro.
Aún así, he visto bastante código de otros juegos y sí que hay gente que se hace todo esto a mano. Con clases enteras dedicadas a controlar los fps y demás.


Buffon

Gracias por la respuesta Tirso :D

seguiré probando y haciendo mis chapucillas, ahora me molaría saber como han hecho los efectos 3D con AS3, pero tiempo al tiempo.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.