Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - cortex024

Pages: [1]
1
DotNet / SFML et timer: pas d'effet
« le: Juin 25, 2013, 02:03:37 pm »
Bonjour,

lorsque je bouge mon sprite comme ceci:

            app = new RenderWindow(panel_SFML.Handle);//myvideomode, "test");
            app.SetFramerateLimit(60);
            mytexture = new SFML.Graphics.Texture(myimage);
            mysprite = new Sprite(mytexture);

            while (app.IsOpen())
            {
                app.Clear();
                mysprite.Position = new SFML.Window.Vector2f(mysprite.Position.X + 1, 0);
                app.Draw(mysprite);

                app.Display();
            }

ça fonctionne bien, je vois mon sprite qui se déplace vers la droite.
Mais je ne veux pas rester coincer dans un app.isopen comme tous les exemples qu'on trouve.
Car je suis dans une windows form qui peut réaliser pleins d'autres actions.

j'essaie alors de me servir d'un timer; à chaque fois que le temps est écoulé, je passe dans la fonction qui fait ceci (exactement la même chose):

public void RunEvent(object source, ElapsedEventArgs e)
        {
            //MessageBox.Show("test" + mysprite.Position.X.ToString());
            app.Clear();
            mysprite.Position = new SFML.Window.Vector2f(mysprite.Position.X + 1, 0);
            app.Draw(mysprite);

            app.Display();

        }

rien ne se passe, le sprite ne se dessine même pas à l'écran, le panel reste gris.
en mode debug, je vois pourtant bien mon sprite créé, sa position qui évolue.

si je décommente le messagebox, je l'ai bien à l'écran.

je ne comprends pas ce qui coince et pourquoi tout ce qui est fait en dehors du windows.isopen n'apparait pas à l'écran!

Pages: [1]
anything