簡體   English   中英

向左移動太快,根本不向右移動

[英]Moves left too fast, Doesn't move right at all

這個讓我難過。 我不知道實際上是什么導致了問題,但是我將盡力提供盡可能多的相關信息。 請詢問您是否有任何疑問。

大約每0.0025秒調用一次advance()方法,這也是elapsedTime的值。

private int speed = 1;

public void advance(float elapsedTime) {
    rectangle.x = (int) (rectangle.x - speed * elapsedTime);
}

即使我將速度設置為0.0000001,它的x坐標也會向左快速移動。 但是,無論何時我嘗試將其向右移動:

public void advance(float elapsedTime) {
    rectangle.x = (int) (rectangle.x + speed * elapsedTime);
}

它根本不動。

有任何想法嗎? 我很沮喪!

這是因為矩形坐標存儲為整數,因此它們一次只能更改至少1。 由於繪圖運行的頻率很高,因此向左移動時,它仍然會非常快地移動,因為它一次不能移動少於1個像素。

它根本沒有向右移動的原因是由於舍入。 轉換為int時,雙精度舍入。 因此,如果您的頭寸是5,並且嘗試加0.00001,然后將其轉換為整數,則最終頭寸仍然為5。如果要減去0.000001,則將其舍入為4,這就是為什么移動左邊的作品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM