Project

General

Profile

Actions

Bug #683

open

Unexpected behavior of the Actor's movement in a loop

Added by Stéphane VINCENT over 3 years ago. Updated over 3 years ago.

Status:
New
Priority:
Normal
Target version:
-
Start date:
03/05/2021
Due date:
% Done:

0%

Estimated time:
Affected version:

Description

Please consider the following code:

Actor "magicien", X=0, Y=0, Image$="lucie.png", EndX=1920, loopmove=True
Do
    A$ = Inkey$
    If A$ = "p" or A$="P" Then Actor "magicien", ActionMove$="pause"
    If A$ = " " Then Actor "magicien", ActionMove$="play"
Loop

If the Actor's movement is interrupted and restored, the movement will start from the interruption point and not from the initial start.
For instance, if the position is X=700 when "pause" is activated, the movement loop will be between x=700 and x=1920, instead of the expected range (0 - 1920).
This can be really confusing.

Actions #1

Updated by Laurant Weill over 3 years ago

Bien vu.
Il est normal que le pause/play se fassent dans la continuité du mouvement mais cela montre un problème sur le loopmove.
merci

Actions #2

Updated by Laurant Weill over 3 years ago

pour faire comme je comprends que vous désirez il faut faire :
Actor "magicien", Image$="lucie.png", EndX=1920, loopmove=True
Do
A$ = Inkey$
If A$ = "s" or A$="S" Then Actor "magicien",X=0, Y=0, ActionMove$="pause", loopmove=True
If A$ = "p" Then Actor "magicien",X=0, Y=0, ActionMove$="play", loopmove=True
Loop

Actions #3

Updated by Stéphane VINCENT over 3 years ago

Laurant Weill wrote in #note-2:

pour faire comme je comprends que vous désirez il faut faire :
Actor "magicien", Image$="lucie.png", EndX=1920, loopmove=True
Do
A$ = Inkey$
If A$ = "s" or A$="S" Then Actor "magicien",X=0, Y=0, ActionMove$="pause", loopmove=True
If A$ = "p" Then Actor "magicien",X=0, Y=0, ActionMove$="play", loopmove=True
Loop

Ce n'est malheureusement pas ce à quoi je pensais.
Personnellement, si je lance une animation en boucle entre la position 0 et 1920 et que celle-ci est mise en pause à la position 700.
Je m'attends à ce qu'elle reprenne depuis la position 700 jusqu'à la position 1920 pour ensuite reprendre sa boucle entre la position 0 et 1920.

Actuellement, le code que j'avais fourni, permet bien une boucle entre 0 et 1920 mais si la pause est réalisée à la position 700, la boucle ne se fera plus qu'entre les positions 700 et 1920 (et non plus entre 0 et 1920).
J'espère que mon explication est désormais plus claire, sinon le plus simple est de lancer mon exemple d'arrêter l'animation vers le milieu, de la relancer et voir ce qu'il se passe.

Actions

Also available in: Atom PDF