J'ai un petit soucis et l'espoir de trouver une réponse ici
je lance une appli XNA , à l'intérieur de laquelle je cree un thread d'une nouvelle appli XNA. Jusque la pas de soucis, ma deuxieme appli s'ouvre.
Je gere la souris grace au GetState de"Microsoft.Xna.Framework.Input.Mouse"
le soucis est que GetState a un décalage, comme si sa nouvelle ref d'origine ecran etait la premiere Appli XNA.
Lorsque je ferme la fenetre en passant par la croix de la fenetre, le dephasage est tout de meme conservé dans ma premiere fenetre...
Je n'arrive pas à recaler le curseur, meme avec le SetPosition.
Est ce un bug du Framework ou un probleme d'init? Est ce que ca se contourne facilement?
voici les lignes principales du contexte (chaque classe a son DrawMouse):
Dans le Main:
Dans la Classe GameMapEditor:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 using (GameMapEditor ZeMapEditor = new GameMapEditor()) { ZeMapEditor.Run(); }
Dans la classe OurMessage idem:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public void NewMessage(string ZeMessage, bool modal) { Thread t = new Thread(new ParameterizedThreadStart( ThreadNewMessage)); t.Start(ZeMessage); Thread.Sleep(0); if (modal) t.Join(); //Microsoft.Xna.Framework.Input.Mouse.SetPosition .... } public static void ThreadNewMessage(object Param) { OurMessages OM = new OurMessages((string) Param); OM.Run(); Thread.Sleep(0); } public void DrawMouse(SpriteBatch spriteBatch) { MouseState mouseState = Microsoft.Xna.Framework.Input.Mouse.GetState(); Vector2 MousePosition = new Vector2(mouseState.X, mouseState.Y); spriteBatch.Draw(MousePointer, MousePosition, Color.White); }
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public void DrawMouse(SpriteBatch spriteBatch) { MouseState mouseState = Microsoft.Xna.Framework.Input.Mouse.GetState(); Vector2 MousePosition = new Vector2(mouseState.X, mouseState.Y); spriteBatch.Draw(MousePointer, MousePosition, Color.White); }
Partager