Animation en retard ou saccadée
coccinelle5-Apr-2011/8:34:30+2:00
Bonjour à tous,

Lors de la programmation de l'affichage en 3d dans le Quetzal, en voulant faire bouger le planeur avec la souris, je me suis retrouvé face au problème de l'animation qui prennait beaucoup de retard sur la souris.

Ceci était dû au temps pris pour recomposer l'image qui est beaucoup plus important que l'interval entre deux "move" de la souris.

Résultat, lorsque je déplaçais rapidement la souris, l'image continuait à bouger longtemps après le dernier mouvement de la souris.

Pour estomper ce problème, j'ai choisi d'ignorer les évènements "move" successifs pour ne traiter que le dernier. Ainsi, le mouvement de l'image s'arrête pratiquement en même temps que la sourris par contre, l'animation devient nettement plus saccadée. Autre problème, le démarrage de la rotation de l'image se fait avec un peu de retard sur la souris.

Ceci a été réalisé avec le bout de code ci-dessous pour traiter l'événement "over" dans la fonction "engage" :
over [
    face/state: on
; Ignore the event if the next one is a move event
    if all [
        event? next-event: pick system/view/event-port 1
        'move = next-event/type
    ][
        do next-event return ; Execute the next move event and return
    ]
; Execute the last move (over) event
    move-size: event/offset - move-offset
    move-offset: event/offset
    if move-size <> 0x0 [ ; Handle the animation
        azimuth: azimuth + (move-size/x / face/size/x  * 180)
        elevation: elevation + (move-size/y / face/size/y  * 180)
        move-size: 0x0
        build-draw
    ]
; Execute the last event what ever it is.
    if event? next-event [do next-event]
]


Quelqu'un a-t-il par hazard déjà été confronté à ce problème en Rebol opu dans un autre langage, et est-il arrivé à bonne solution alliant une animation harmonieuse et bien siynchronisée avec la souris ?

Merci d'avance pour toutes vos suggestions, Marco.
Didec5-Apr-2011/9:57:39+2:00
Romano et Gabrielle avait pondu une fonction pour palier à ça qui "mange" les événements 'move en trop. Ca marchait très bien et les prog que j'ai et qui s'en servent marche toujours sous R2.7.7.

http://www.rebol.org/view-script.r?script=eat.r

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2