2015-12-28 67 views
-1

我使用SFML在C++中製作了一個小項目。我添加了精靈(一個角色)。我組織了像Assets/Player/Idle/Idle1.jpg然後Idle2.jpg等精靈。通過循環加載精靈

我初始化精靈這樣的:

texture = new Texture[116]; 
sprite = new Sprite[116]; 
texture[0].loadFromFile("Assests/Iori/Ready1.png"); 
sprite[0].setTexture(texture[0]); 
texture[1].loadFromFile("Assests/Iori/Ready2.png"); 
sprite[1].setTexture(texture[1]); 
texture[2].loadFromFile("Assests/Iori/Ready3.png"); 
sprite[2].setTexture(texture[2]); 
texture[3].loadFromFile("Assests/Iori/Ready4.png"); 
sprite[3].setTexture(texture[3]); 
texture[4].loadFromFile("Assests/Iori/Ready5.png"); 
sprite[4].setTexture(texture[4]); 
texture[5].loadFromFile("Assests/Iori/Ready6.png"); 
sprite[5].setTexture(texture[5]); 
texture[6].loadFromFile("Assests/Iori/Ready7.png"); 

等。現在這個方法工作正常,完全加載我的精靈。但我不認爲這是有效或正確的方法。我必須加載100多個精靈,這對程序員來說只會是一團糟。

我想知道你能否通過循環(for/while)初始化這些精靈來減少代碼。

+3

那麼,你應該使用循環。但問題是什麼? – soon

+0

@soon如何用循環初始化它們? – hassanyf

+0

您應該在每次迭代中生成一個文件路徑,並將其傳遞給'loadFromFile'函數。 – soon

回答

2

使用基本for循環並構造紋理動態名稱。
根據loadFromFile方法的不同,您可能需要使用顯式轉換爲std::stringchar*

static const int count = 116; 
texture = new Texture[count]; 
sprite = new Sprite[count]; 

for (int i = 0; i < count; ++i) 
{ 
    texture[i].loadFromFile("Assests/Iori/Ready" + std::to_string(i + 1) + ".png"); 
    sprite[i].setTexture(texture[i]); 
} 
+0

我只需要知道如何在路徑中追加一個變量。這非常有幫助! – hassanyf