我有一个功能,在我的班加载2图像,但只显示一次基于一定的条件。如何提高我的功能
问题是我必须先加载图像之前的条件,这是发生在我的主循环。而且我不知道这是明智的做法,以便在想我能做些什么,使之稍微优雅....
这是我有:
Main Loop
:
btn_quit.RenderBttn(window,mouseX,mouseY);
Class function
void RenderBttn(sf::RenderWindow &destination,int mouseX, int mouseY)
{
std::string img = "button.png";
sf::Texture button;
if (!button.loadFromFile(img)){
exit(4);
}
std::string img_on = "button_on.png";
sf::Texture button_on;
if (!button_on.loadFromFile(img_on)){
exit(5);
}
sf::Sprite sprite(button);
m_w = sprite.getLocalBounds().width; //get dimensions
m_h = sprite.getLocalBounds().height; //get dimensions
sf::Sprite result(IsIn(mouseX,mouseY) ? button_on : button); //check if mouse is over the button
result.setPosition(m_x,m_y);
destination.draw(result);
}
我遇到的一个解决方案是使用固定数量的按钮大小,但这限制了以后更改图像大小的能力。
但是我也每次都在我的主循环中加载2张图片,这对于表现来说肯定是不好的?
希望你能帮助:)
因为我需要知道图像的尺寸,以便知道鼠标是否处于或超过“按钮”的位置。所以我必须先得到它的局部范围。 – Sir