点击雪碧不注册



我有SFML。NET工作很好,并且自己写了一个小场景管理器。在场景界面中,我有一个名为"更新"的方法。我试图查看用户是否点击了播放按钮或退出按钮,但我什么也没得到。

    public void Update(RenderWindow window)
    {
        if (Mouse.IsButtonPressed(Mouse.Button.Left))
        {
            Program.WriteDebug("Mouse was clicked.");
            Vector2i mousePosition = Mouse.GetPosition(window);
            if (play.TextureRect.Contains(mousePosition.X, mousePosition.Y))
            {
                // Not displaying text.
                Program.WriteDebug("Play button pressed.");
            }
            else if (quit.TextureRect.Contains(mousePosition.X, mousePosition.Y))
            {
                // Not displaying text.
                Program.WriteDebug("Quit button pressed");
            }
        }
    }

编辑:我将项目设置为控制台应用程序,因此我可以看到控制台和应用程序。

您正在使用 textur竖立作为全局点击区域:

if (play.TextureRect.Contains(mousePosition.X, mousePosition.Y))
{
    // Not displaying text, because the texture rect can be something like:
    // width: 100 height: 30 top: 0 left: 0
    // or you don't use it at all and it's all zero (impossible to click)
    Program.WriteDebug("Play button pressed.");
}

这是因为textur竖立是来自纹理的局部坐标,表示纹理的哪个部分正在显示。您需要使用按钮的全局边界:

if (play.getGlobalBounds.Contains(mousePosition.X, mousePosition.Y))
{
    // should displaying text.
    Program.WriteDebug("Play button pressed.");
}

全局边界是实体的大小和位置,包括旋转和缩放等所有转换。

相关内容

  • 没有找到相关文章

最新更新