【问题标题】:Turn off mouse interactivity when not on applicaiton不在应用程序上时关闭鼠标交互
【发布时间】:2013-12-19 15:14:33
【问题描述】:

假设我正在运行我的 C# 程序,屏幕上有一个按钮,如果我将鼠标放在它上面,它会将游戏切换到新页面。现在我在项目前面放了另一个窗口,比如说谷歌浏览器,我正在搜索网络并点击一些东西,因为我现在正在运行的项目仍然与鼠标交互,甚至可以按下按钮如果我看不到按钮。如何关闭此交互?

【问题讨论】:

  • 您的标题和问题难以阅读且不清楚。如果您希望得到答案,您应该改写它们以便更容易理解。
  • @PatrickQuirk 我已经更新了这个问题,希望能帮助人们理解这个问题,这是一个很难命名的话题,抱歉沟通不畅。
  • @cloyd800 我认为是这样。我想知道 Game.IsActive 究竟是如何被纳入程序的。我尝试在主类中的更新方法中使用它并且出现错误。 IsActive 没有出现。

标签: c# xna window mouse contains


【解决方案1】:

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

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


或者,如果您已经有一些游戏状态管理系统,您可以覆盖 Game 中的 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

【讨论】:

    猜你喜欢
    • 2017-03-25
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2020-01-19
    • 1970-01-01
    相关资源
    最近更新 更多