是會出現這種情況。
這是因爲libgdx的getRawDelta時間方法返回浮點數值。當你從櫃檯扣除它們時,你可能永遠不會得到完全取整的數字,比如1,2,3.
所以,舉個例子,假設你的計數器是3.29,getRawDeltaTime返回了0.30。
如果你從3.29中扣除它,你將以2.99結束,因此你將永遠不會碰到你的if語句。
我會做到這一點的方式是
counter -= Gdx.graphics.getDeltaTime();
if(counter <= 3 && counter > 2) {
stage.addActor(oneImg);
} else if(counter <= 2 && counter > 1) {
stage.addActor(twoImg);
} else if(counter <= 1 && counter > 0) {
stage.addActor(splashImg);
}
我希望上面的解決方案是有道理的。
還有一件事要說明我在解決方案中留下了什麼。每個條件都會在我的解決方案中執行多次,而不僅僅是一次。
這是因爲當你可以說,計數器將具有值2.9一樣,2.87,即....直到時間的2和3之間 要解決這個問題,你需要使用一些布爾值。
定義一流水平boolean condition1, condition2, condition3;
修改if語句要像
if(counter <= 3 && counter > 2 && !condition1) {
stage.addActor(oneImg);
condition1 = true;
} else if(counter <= 2 && counter > 1 && !condition2) {
stage.addActor(twoImg);
condition2 = true;
} else if(counter <= 1 && counter > 0 && !condition3) {
stage.addActor(splashImg);
condition3 = true;
}
切勿使用''==用浮動或雙的恆定除了0。 – Tenfour04