我正在用c ++(DirectX和XAML App)开发windows8.1游戏。我发现在游戏中处理触摸时遇到的问题很少。我正在使用这些事件处理程序来检测用户触摸/点击。
// The CoreIndependentInputSource will raise pointer events for the specified device types on whichever thread it's created on.
m_coreInput = swapChainPanel->CreateCoreIndependentInputSource(
Windows::UI::Core::CoreInputDeviceTypes::Mouse |
Windows::UI::Core::CoreInputDeviceTypes::Touch |
Windows::UI::Core::CoreInputDeviceTypes::Pen
);
// Register for pointer events, which will be raised on the background thread.
m_coreInput->PointerPressed += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &OpenGLESPage::OnPointerPressed);
m_coreInput->PointerMoved += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &OpenGLESPage::OnPointerMoved);
m_coreInput->PointerReleased += ref new TypedEventHandler<Object^, PointerEventArgs^>(this, &OpenGLESPage::OnPointerReleased);
....
void OpenGLESPage::OnPointerReleased(Platform::Object^ sender, PointerEventArgs^ e)
{
e->Handled = true;
Windows::UI::Input::PointerPoint ^ point = e->CurrentPoint;
....
}
如果按下鼠标按钮 - 一切正常,所有事件都将被触发 - 按下,移动,释放。但是,如果我执行此组合 - 事件将无法正常触发。
我错过了什么?如何正确处理所有处理程序?
答案 0 :(得分:0)
这听起来像是正确的行为。鼠标是单个指针,而不是单独按钮的单独指针。只要按下任何按钮,指针就会被按下,您可以检查状态以查看哪些按钮已关闭。
如果您可以解释您实际上想要做的事情,我们可以提供更多直接帮助。我怀疑你最好在更新循环中查看指针状态而不是等待指针事件,但它取决于最终目标。