不在应用程序时关闭鼠标交互性

时间:2013-12-19 15:14:33

标签: c# xna window mouse contains

假设我的C#程序正在运行,屏幕上有一个按钮,如果我将鼠标放在它上面,它会将游戏更改为新页面。现在我在项目前放了另一个窗口,让我们说Google Chrome,我正在搜索网页并点击内容,因为我这样做现在正在运行的项目仍在与鼠标交互,甚至可以按下按钮如果我看不到按钮。如何关闭此交互?

1 个答案:

答案 0 :(得分:0)

通过在Game类的实现中使用IsActive(默认情况下称为Game1),可以避免在游戏未对焦时接收输入。

protected override void Update(GameTime gameTime)
{
    base.Update(gameTime);

    if (!IsActive)
    {
        return;
    }

    // ... do regualr update.
}

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.isactive.aspx


或者,如果您已经有一些游戏状态管理系统,则可以在游戏中覆盖OnDeactived方法。当游戏失去焦点时,将调用此函数。

protected override void OnDeactivated(object sender, EventArgs args)
{
    base.OnDeactivated(sender, args);

    // If we are in a state which it makes sense to pause the game, then do it now.
    if (GameObjectManager.pInstance.pCurUpdatePass == BehaviourDefinition.Passes.GAME_PLAY)
    {
        GameObjectManager.pInstance.pCurUpdatePass = BehaviourDefinition.Passes.GAME_PLAY_PAUSED;
    }
}

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.ondeactivated.aspx