【问题标题】:Difference Xna Enum touchState差异 Xna Enum touchState
【发布时间】:2013-11-14 22:09:33
【问题描述】:

我正在使用 XNA 开发一个 Windows 应用程序。

实际上我成功移动了我的精灵,但我想在用户触摸精灵但不移动它时添加不同的动作。我知道TouchlocationState Enum exist,但我不明白MovedPressed 之间的区别。
现在我使用Released 就足够了,我在精灵位置未释放时更新它,然后检查碰撞。 那么如何在单击时仅添加一种触摸方法?我的意思是当用户点击精灵但不移动它时。 部分代码:

TouchPanelCapabilities touchCap = TouchPanel.GetCapabilities();
if (touchCap.IsConnected)
{
    TouchCollection touches = TouchPanel.GetState();
    if (touches.Count >= 1)
        {
        Vector2 PositionTouch = touches[0].Position;

        if (touches[0].State == TouchLocationState.Released)
        {
            // Pause button click and others buttons
            Mouseclik((int)PositionTouch.X, (int)PositionTouch.Y);       
        }

        if (!PausePopUp)
        {
            CheckMoove(PositionTouch);
            if (touches[touches.Count - 1].State == TouchLocationState.Released)
            {
            // this is where i try to add/check if its only "click" on my sprite
                    if (touches[0].Position == touches[touches.Count - 1].Postion)
                    {
                        TempoRectangle = ListSprite[save].ShapeViser;
                        isclicked = true;
                    }

我的目标是在精灵上方添加一个图片框以显示信息,然后如果在显示图片框时触摸另一个精灵,我想在这两个精灵之间画一条线。

【问题讨论】:

    标签: c# xna xna-4.0 touchscreen


    【解决方案1】:

    区别很简单:

    • TouchLocationState.Pressed 表示检测到新位置。
    • TouchLocationState.Moved 表示位置位置被更新或按下在同一位置

    这意味着对于每个触摸动作,您只会获得一个Pressed 状态,在按下触摸时每个循环都会获得一系列Moved,当您释放它时,您将获得一个Released

    这在您提供的链接中也有说明。

    【讨论】:

    • 感谢您的解释,我在查找信息时发现了 GestureSample。我想我会改变我所有的运动方式
    • 这可能是一个解决方案,但给你一个小提示,如果你需要使用FreeDrag 手势,你最好知道程序只会在你开始拖动触摸时检测到它,而不是只按它。当您使用Hold 时会发生类似的事情,它只会在几秒钟后触发。而DoubleTap 很难被发现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多