【问题标题】:arraylist android tutorial?arraylist 安卓教程?
【发布时间】:2011-11-03 01:23:30
【问题描述】:

所以我创建了一个名为 Sprite 的类。我希望能够轻松控制许多 Sprite 类,但不知道如何。我听说过arraylist,但我不知道如何使用它。我用谷歌搜索了很多次,几天来我找不到一个好的简单教程。基本上我希望能够创建大约 5 个精灵并能够检查它的碰撞。我正在使用 Rect 来检查碰撞。 这就是我检查碰撞的方式:

if(Rect.intersects(sprite.dst, floor))

它可以工作,但我想控制多个精灵并检查它们的碰撞并在它们碰撞时删除它们。有什么好的教程或想法吗?请帮忙。我希望我对我的问题足够清楚.. 谢谢!

我找到了一种方法,但现在我在为精灵制作随机 y 位置时遇到了问题:

  public void rockUpdate(Canvas canvas){
    int y = rand.nextInt(canvas.getHeight()-doodle.getHeight()) + 1;
            int x =canvas.getWidth();

        rockSprites.add(new Sprite(GameSurface.this, doodle, 4, 1, x, y));
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        el++;

    }

【问题讨论】:

    标签: android arraylist sprite rect


    【解决方案1】:

    你的意思是这样的?

    List<Sprite> spriteList = new ArrayList<Sprite>();
    
    spriteList.add(new Sprite());
    
    // (etc)
    
    List<Sprite> spriteListForLoop = new ArrayList<Sprite>(spriteList);
    for (Sprite sprite: spriteListForLoop)
    {
        if (Rect.intersects(sprite.dst, floor))
        {
            spriteList.remove(sprite);
        }
    }
    

    类似的东西是非常基本的Java...你应该能够在任何基本的Java教程中找到它。如果这是针对游戏的,那么您最好还是找到更复杂的东西 - 例如在 sprite 对象上的一个方法,该方法在每次 Sprite 移动时检查该特定 Sprite 的交集。

    【讨论】:

    • 这行得通,但我有一些问题......我试图让它在随机 y 位置但没有成功,我在我的问题中更新了一个新代码
    • 我有 spriteList.remove(sprite); 的问题它每次都强制关闭
    • 查看 LogCat 并找到异常 - 我想这可能是因为我的代码错误(哎呀) - 应该是 List&lt;Sprite&gt; spriteListForLoop = new ArrayList&lt;Sprite&gt;(spriteList); for (Sprite sprite: spriteListForLoop) { if (Rect.intersects(sprite.dst, floor)) { spriteList.remove(sprite); } } 抱歉
    • 还是不行。这是我问的一个问题,也许你可以回答它stackoverflow.com/questions/7989806/erase-an-object-from-canvas
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多