我有一個功能,在我的班加載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