【问题标题】:Render each object in an iterator?在迭代器中渲染每个对象?
【发布时间】:2014-04-03 03:55:28
【问题描述】:

我的 Android 应用有点问题。我有一个 while 循环,它应该循环遍历迭代器中的每个对象并渲染它们。问题是 while 循环不会渲染所有对象。它比我指定的数量少一。例如,如果迭代器中有 5 个对象,则只渲染 4 个,并且迭代器中的最后一个对象是不可见的(但仍然存在)。这是代码。

enemyIterator = enemies.iterator();
while (enemyIterator.hasNext())
{
    Enemy zombie = enemyIterator.next();
    zombie.update();
    batch.draw(zombie.getCurrentFrame(), zombie.getPosition().x, 
            zombie.getPosition().y);
}

我怀疑它与“hasNext()”方法有关;一旦迭代器循环到最后一个对象,hasNext() 方法将返回“false”,因此即使最后一个对象存在,它也不会被渲染。

如果这不是问题,我不确定是什么问题,因为我知道我的应用程序只渲染了迭代器中除一个对象之外的所有对象。

谁能帮我找到解决这个问题的方法?

提前致谢

【问题讨论】:

    标签: android iterator return render


    【解决方案1】:

    您已经知道 - 最后一个对象没有“下一个”,因此它不会进入循环。

    您可以更改它,或者我建议使用 for each 循环。

    for(Enemy enemy: enemies){
    //do your update inside
    }  
    

    更多信息:
    http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html
    How does the Java 'for each' loop work?

    我认为 for each 循环是非常可靠的,并且没有被大量使用。在您的情况下,这可能是一个更好的选择。

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 2016-10-29
      • 2022-01-02
      • 2011-12-01
      • 2011-05-08
      • 2018-04-05
      • 1970-01-01
      • 2019-07-31
      • 2012-01-22
      相关资源
      最近更新 更多