2014-05-24 66 views
1

我動畫我的子畫面,看起來像這樣:期間精靈表動畫閃爍

enter image description here

我製成,其通過64每次我按W的時間增量,因爲每個子畫面是64×64的變量,它工作但是有閃爍,這是我的代碼。順便提一下,在畫的方法。

if (sf::Keyboard::isKeyPressed(sf::Keyboard::W)){ 
    animator += 64; 
} 
else{ 
    animator = 0; 
} 


if (animator > 512){ 
    animator = 0; 
} 
playerSprite.setTextureRect(sf::IntRect(0, animator, 64, 64)); 
window.draw(playerSprite); 

任何幫助,將不勝感激,謝謝。

+0

不幸的是,我不知道那個圖書館,但我想這個眨眼問題可能與某種程度上缺乏緩衝或雙緩衝有關。這幾乎是所有圖書館都很常見的問題,特別是當您試圖在繪製細節的階段沒有太多的「畫畫」時。無論如何,我看了一下,發現了許多關於「SFML精靈表動畫」的資源[即。這裏](http://en.sfml-dev.org/forums/index.php?topic=6102.0) - 我認爲這是你正在追求的。 – quetzalcoatl

+0

在一些論壇上,人們甚至放棄了一些準備好使用像「AnimatedSprite」這樣的類。我不建議你去使用它們 - 但你可以看看它們,並檢查它們是如何預加載圖像並在幀之間切換的。順便說一句。如果我對於後臺緩衝是正確的,那麼原因可能是set-and-draw,這可能會導致與屏幕緩衝區不同步,尤其值得檢查是否在同一邏輯中有'isKeyPressed'部分代碼。在按鍵上重繪的案例有99%不是一個好主意。但是,再次,這是猜測,我對這個圖書館一無所知。 – quetzalcoatl

+0

順便說一句。歡迎來到StackOverflow! :)我沒有看到你在2K偶然?你可能會認識到'que':) – quetzalcoatl

回答

1

你不應該這樣實現框架的改變:這裏的改變取決於幀速率而不是時間的經過。

您應該有一個計時器並更改幀,每個[FRAME_DELAY]時間。例如,每200毫秒。