我是 XNA 和 C# 的新手,在我的 XNA 项目中,我需要事件处理程序来预测游戏何时失去焦点,以便在再次获得焦点时同步音乐和视觉效果。但我遇到了一个问题;游戏在被拖动时不会“更新”,但我似乎找不到合适的事件监听器。我试过了:
System.Windows.Forms.Control.FromHandle(Window.Handle).Move += new EventHandler(DeactivateGame);
这个在移动窗口时调用了很多次“DeactivateGame”。但即使它有效,尽管它多次调用该函数,但我看不到在释放窗口句柄时调用函数的事件处理程序,以便游戏可以通过调用“ActivateGame”再次恢复
旁注(如果有帮助的话);
this.Activated += new EventHandler<EventArgs>(NotifyActivated);
this.Deactivated += new EventHandler<EventArgs>(NotifyDeactivated);
这些事件处理程序在最小化窗口或将焦点放在游戏窗口以外的其他东西上时工作正常,但它不会注册被拖动的窗口。对于习惯编程的人来说可能很明显,但我只是想确保我已经提供了足够的信息
编辑:作为事件处理程序的结果,我要添加的函数是 DateTime/TimeSpan,当窗口失焦或被拖动时会调用它。当放下或再次获得焦点时,这会将当前时间与窗口失去焦点时设置的时间进行比较,以计算两者之间的损失时间。