zoukankan      html  css  js  c++  java
  • WP7备注(3)(GamePad)

    public class InputState
        {
            public const int MaxInputs = 4;
    
            public readonly GamePadState[] CurrentGamePadStates;
            public readonly GamePadState[] LastGamePadStates;
    
            public InputState()
            {
                CurrentGamePadStates = new GamePadState[MaxInputs];
                LastGamePadStates = new GamePadState[MaxInputs];
            }
    
            public bool MenuUp
            {
                get
                {
                    return IsTargetButtonPress(Buttons.DPadUp);
                }
            }
    
            public bool MenuDown
            {
                get
                {
                    return IsTargetButtonPress(Buttons.DPadDown);
                }
            }
    
            public bool MenuSelect
            {
                get
                {
                    return IsTargetButtonPress(Buttons.A);
                }
            }
    
            public bool MenuCancel
            {
                get
                {
                    return IsTargetButtonPress(Buttons.Back);
                }
            }
    
            public bool PauseGame
            {
                get
                {
                    return IsTargetButtonPress(Buttons.Back) ||
                           IsTargetButtonPress(Buttons.Start);
                }
            }
    
            public void Update()
            {
                for (int i = 0; i < MaxInputs; i++)
                {
                    LastGamePadStates[i] = CurrentGamePadStates[i];
                    CurrentGamePadStates[i] = GamePad.GetState((PlayerIndex)i, GamePadDeadZone.IndependentAxes);
                }
            }
    
            public bool IsTargetButtonPress(Buttons button)
            {
                for (int i = 0; i < MaxInputs; i++)
                {
                    if (IsTargetButtonPress(button, (PlayerIndex)i))
                        return true;
                }
    
                return false;
            }
    
            public bool IsTargetButtonPress(Buttons button, PlayerIndex playerIndex)
            {
                return (CurrentGamePadStates[(int)playerIndex].IsButtonDown(button) && LastGamePadStates[(int)playerIndex].IsButtonUp(button));
            }
    
            public bool IsMenuSelect(PlayerIndex playerIndex)
            {
                return IsTargetButtonPress(Buttons.A, playerIndex) || IsTargetButtonPress(Buttons.Start, playerIndex);
            }
    
            public bool IsMenuCancel(PlayerIndex playerIndex)
            {
                return IsTargetButtonPress(Buttons.B, playerIndex) || IsTargetButtonPress(Buttons.Back, playerIndex);
            }
        }
     
    整个输入状态类是通过以下方法实现的:
    public bool IsTargetButtonPress(Buttons button)
            {
                for (int i = 0; i < MaxInputs; i++)
                {
                    if (IsTargetButtonPress(button, (PlayerIndex)i))
                        return true;
                }
    
                return false;
            }
    
            public bool IsTargetButtonPress(Buttons button, PlayerIndex playerIndex)
            {
                return (CurrentGamePadStates[(int)playerIndex].IsButtonDown(button) && LastGamePadStates[(int)playerIndex].IsButtonUp(button));
            }
    

    共有两个方法

    1.一是判断是否有人输入了这个键(针对任何人)

    2.二是判断是否这个指定人输入了这个键(针对特定的一个人)

     

    每次获取用户所按的键使用过一下方法:

    public void Update()
            {
                for (int i = 0; i < MaxInputs; i++)
                {
                    LastGamePadStates[i] = CurrentGamePadStates[i];
                    CurrentGamePadStates[i] = GamePad.GetState((PlayerIndex)i, GamePadDeadZone.IndependentAxes);
                }
            }

  • 相关阅读:
    IntStack(存放int型值,带迭代器) 附模板化实现 p406
    Mule自带例子之stockquote
    Mule自带例子之loanbroker-simple
    Mule自带例子之flight-reservation
    hsqldb使用
    基于memcached中命令分析函数tokenize_command改造的split函数
    Memcached-1.4.4启动参数——手动设置chunk大小的上限
    Memcached源码分析——process_command函数解析
    Memcached源码分析——hash
    Memcached源码分析——slab的初始化
  • 原文地址:https://www.cnblogs.com/otomii/p/2029118.html
Copyright © 2011-2022 走看看