我剛剛發佈了一款應用程序,避免尖峯!在Android市場上。 我的一些朋友已經下載了他們的手機/平板電腦上的應用程序,並且我被告知它運行得太快。它在我的機器人(HTC Dream)上運行得很好。有什麼方法可以告訴它在某些機器人上運行得多快,以及如何相應地調整它?我已經搜索到了很高和尚未找到答案。我的應用程序在某些Android設備上運行得太快
回答
聽起來像你的應用程序是一個遊戲?如果是這樣,你可能有一個遊戲循環,儘可能快地運行遊戲。我發現這篇文章關於實現遊戲循環非常有用:Game Loops,當時我創建了我的遊戲,其中涉及時間。
謝謝。這正是我需要的。 – Mike
不客氣。 – C0deAttack
我已經在Android Market上看到您的遊戲並試用過它。
你不能真正確定最小和最大速度,你會獲得現有的各種硬件,如:
- 新的硬件每天
- 出現在市場上在一個給定的硬件,其他因素也可能影響你的應用的執行速度。
你應該做的是讓你的遊戲獨立於幀速率。爲此,請避免每次更新位置時使對象移動一段固定的距離。優先讓他們移動固定距離一段時間。
爲此,請測量每次更新對象位置後自上次更新以來所經過的時間,並計算相應移動的距離。
這樣,根據硬件的質量,這些物體會跳起或移動很好,但至少他們會以相同的速度這樣做,並且這個速度將由您決定。當你在一臺全新的機器或舊機器上玩FPS遊戲時,這有點相同:運動的速度是恆定的,只有幀率不是。在舊機器上,你會有物體跳躍的印象,而在新的機器上它們會優雅地移動,但它在兩種情況下都能正常工作(當然,對於舊機器,當然也有一定的限制)。一臺機器永遠不會這麼快。
給你一些僞代碼,用於傘兵從上方落下到屏幕的底部:
這是環路避免:
while (playing) { update_positions(); display(); } update_positions() { paratrooper.y -= 10; // the paratrooper's altitude decreases of 10 at each update }
在慢速硬件上,需要花費數小時才能穿越屏幕。在一個快速的硬件上,這將會太快,你甚至不會看到傘兵下降。
這是應該做的正確方法:
while (playing) { update_positions(); display(); } update_positions() { time_elapsed = getSystemTimeInMS() - lastUpdateTimeInMS(); paratrooper.y -= 0.01 * time_elapsed; // the paratrooper's altitude decreases of 10 per second setLastUpdateTimeMS(getSystemTimeInMS()); // This way it includes the calculation time }
一個緩慢的硬件,跨越整個屏幕可能需要15個顯示器,而在快速的硬件,將採取45個上顯示,但在每個情況下你的傘兵以每秒10次的速度下降。
- 1. 某些設備上的Android應用程序UI太小
- 2. 通過以太網在設備上運行Android應用程序
- 3. Android應用程序某些設備上的奇怪行爲
- 4. 如何在Android設備上運行我的Android應用程序?
- 5. 爲什麼我的程序在我的CPU設備上運行得比在我的GPU設備上快得多?
- 6. 在某些設備上崩潰的Android應用程序
- 7. 我的Android應用程序是否在根設備上運行?
- 8. 無法在我的設備上運行OpenCV android應用程序
- 9. 如何在我的設備上運行Android應用程序?
- 10. 只允許在某些設備上安裝Android應用程序
- 11. 在Android上使用Dagger2在某些設備上運行VerifyError
- 12. 某些設備上缺失的Android應用程序圖標
- 13. 我的Android應用程序在java.lang.RuntimeException的某些設備上崩潰了?
- 14. 在某些設備上運行但未在其他設備上找到Android類
- 15. iPad應用程序可以在大多數設備上運行,在某些設備上獲取EXC_CRASH(SIGABRT)
- 16. 在Android設備上運行C++程序
- 17. 我的Android應用程序在模擬器上運行,但無法在我的Android設備上運行
- 18. LinearLayoutManager在某些設備上被凍結的應用程序
- 19. 如何在運行常規Android的設備上運行Android Wear應用程序?
- 20. 在所有可用設備上運行應用程序(Android Studio)
- 21. Appcelerator Android 6 - 我的應用程序無法在Android 6設備上運行
- 22. Phonegap應用程序不在某些Android設備中滾動
- 23. 無法在我的設備上運行「HelloWorld」monodroid應用程序
- 24. 我的應用程序未在其他設備上運行
- 25. 應用程序適用於某些設備,但在其他設備上崩潰
- 26. 更新後應用程序在某些設備上崩潰
- 27. 應用程序未在某些設備上工作
- 28. 在真實設備上運行Android + Opencv + NDK應用程序
- 29. Cocos2d-Android在很多設備上運行應用程序
- 30. windows-7:無法在設備上運行android應用程序
我有點困惑:定義*運行速度太快*更好的細節。幀頻是否不正確?計時器是否比它應該更早結束?算法花費的時間比他們應該少嗎?什麼運行得太快? – Femi