Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TouchLocation? mousePressed = null; // Pro Win8 (pro ovládání myší... odlišení Pressed a Moved)
- Random rnd = new Random();
- public void Update( ... )
- {
- // Převedeme TouchCollection na List<TouchLocation> (aby tam šlo přidávat dotyky)
- TouchCollection touchLocations = TouchPanel.GetState();
- List<TouchLocation> allTouchLocations = new List<TouchLocation>();
- foreach (TouchLocation tl in touchLocations)
- allTouchLocations.Add(tl);
- LoadTouches(allTouchLocations);
- // Nyní zpracováváme dotyky v allTouchLocations...
- foreach (TouchLocation tl in allTouchLocations)
- {
- //...
- }
- }
- /// <summary>
- /// Pokud je předané TouchCollection prázdné (nebyl načten dotyk prstu), zkusí načíst ještě vstup z myši
- /// - daný vstup přidá do předaného TouchCollection
- /// - pozn. problém MonoGame na Win8, pro čisté XNA např. na WP7 by se tato metoda volat neměla
- /// (tj. např. ošetřit volání direktivou #if WIN8...)
- /// </summary>
- private void LoadTouches(List<TouchLocation> availableTLs)
- {
- // Pro Win8 řešíme zvlášť jednodotykové ovládání (je načítáno z myši)
- if (availableTLs.Count == 0)
- {
- MouseState ms = ScreenParams.UserInput.MouseStateValue;
- if (ms.LeftButton == ButtonState.Pressed)
- {
- // Provedl myší MouseDown...
- if (mousePressed == null)
- mousePressed = new TouchLocation(rnd.Next(Int32.MaxValue - 1), TouchLocationState.Pressed, new Vector2(ms.X, ms.Y));
- else // Nebo MouseMove...
- mousePressed = new TouchLocation(mousePressed.Value.Id, TouchLocationState.Moved, new Vector2(ms.X, ms.Y));
- availableTLs.Add(mousePressed.Value);
- }
- else if (ms.LeftButton == ButtonState.Released)
- {
- if (mousePressed != null)
- {
- if (mousePressed.Value.State == TouchLocationState.Released)
- mousePressed = null;
- else
- {
- mousePressed = new TouchLocation(mousePressed.Value.Id, TouchLocationState.Released, new Vector2(ms.X, ms.Y));
- availableTLs.Add(mousePressed.Value);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment