簡體   English   中英

Android 游戲 - 當實體從列表中移除時屏幕閃爍

[英]Android Game - Screen Flickers When an Entity Removed From The List

我在 android 游戲中使用 Canvas。 當我在我的實體列表中刪除一個不再顯示的實體時,所有其他實體都會短暫閃爍。 如果不刪除,則不會出現此問題。 但由於我不是 memory 泄漏的忠實粉絲,所以這不是一個選擇。

canvas 渲染系統已經設計為雙緩沖,我完全不知道如何解決這個問題。 我想可能是因為列表在刪除項目后自行排序並嘗試將其更改為集合,但這也不起作用。

有誰知道為什么會發生這種情況以及如何解決?

代碼結構:

private val gameObjects: List<GameObject> = mutableListOf()
    
    fun update(deltaTime: Long)
    {
        gameObjects.forEach {
            it.update(deltaTime)
    }

 fun render(canvas: Canvas)
    {
      gameObjects.forEach {
         when (getVisibilityStatus(it.virtualY))
         {
            VisibilityStatus.VISIBLE -> it.render(canvas, virtualToPhysicalY(it.virtualY))

            VisibilityStatus.BELOW_SCREEN ->
            {
              if (virtualToPhysicalY(it.virtualY) > screenSizePairXY.second)
                gameObjects.remove(it)
            
            }
         }
    }

從列表中刪除元素是一種不安全的做法。 在單獨的循環中繪制循環之前進行剔除(刪除不可見元素)會更好。 這是一些解釋:

迭代時從集合中移除元素

暫無
暫無

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

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