2015-06-22 120 views
1

我正在制作一个服务器菜单系统,但是当我从sfgui系统中删除所有项并移动到另一个游戏状态时,前面游戏状态的标签在我将解释的情况下可见一分钟,首先让我告诉你这个问题。SFGUI渲染问题C++

服务器菜单: Server Menu.

在这里你可以看到这个问题: Here you can see the issue

去除的代码如下。

void S_ServerMenu::Exit() { 
    ServerSelectWindow->Show(false); 
    desktop.RemoveAll(); 
    desktop.Refresh(); 
} 

但是,这个问题只发生在刷新服务器这里是刷新代码。

void S_ServerMenu::RefreshServers() { 
    Document d; 
    d.Parse<0>(LoadInServers().c_str()); 
    servers = ServerParser(d); 
    ServerListTable->RemoveAll(); 
    ServerListTable->RefreshAll(); 
    for(int i = 0; i < servers.size(); i++) { 
    auto label = sfg::Label::Create(); 

    label->SetText(servers[i].Name); 

    MenuItem utm; 
    utm.lbl = label; 
    utm.index = i; 
    utm.owner = this; 
    label->SetAlignment(sf::Vector2f(0, 0)); 
    label->FontSize = 16; 
    label->SetParent(ServerListTable); 
    label->cont = ServerSelectWindowContainer; 
    ServerListTable->Attach(label, sf::Rect<sf::Uint32>(1, i, 1, 1), sfg::Table::FILL | sfg::Table::EXPAND); 

    label->GetSignal(sfg::Label::OnLeftClick).Connect(std::bind(&MenuItem::Clicked, utm)); 
    } 
    ServerSelectWindow->RefreshAll(); 
} 

你们有没有人知道如何解决这个问题,如果这样做会很好。

+0

我只能说,你使用SFGUI是错误的。我应该看看SFGUI存储库中提供的示例代码。你还编辑过图书馆吗?因为'label-> cont'不存在。只要你运行你自己的任何库的修改版本,你基本上都是你自己的。 – Lukas

+0

Cont只是字面上指向表的共享指针。这不应该影响它。 – user2437820

+0

所以你编辑过图书馆?如果你开始编辑图书馆,没人会知道你是否因意外而摔坏了某些东西。但正如我所说,对于这个问题,你应该看看提供的例子,并调整你的代码,而不是尝试随机的东西,希望它会工作... – Lukas

回答

0

我通过为每个屏幕创建一个单独的桌面来解决此问题。