Android Rect相交不在列表中的所有对象中

时间:2014-10-13 04:03:40

标签: java android

我有一个对象列表,我需要迭代来检测碰撞,但方法Rect.intersects(Rect a,Rect b)或任何检测到碰撞的人,只检查列表中的第一个对象,我甚至试图建立我自己的交叉方法,它可以更好地满足我的需求,它是:

public boolean intersect(Tile tile)
{
    boolean interTB = bounds.top <= tile.getBottom();
    boolean interLR = bounds.left <= tile.getRight() && interTB;

    if (interTB || interLR) {
        return true;
    } else {
        return false;
    }
}

这里我称之为交叉,请注意我将此方法包装在 for(Tile tile:tiles)中并且我已经尝试了 Rect。相交

public void collision(Tile tile)
{   
    if (playerTouch.intersect(tile)) {

        //if player touched a tile turn tile to cyan
        if (tile.isCorrupt()) {
            gameOver();
        } else {
            tile.setColor(Color.argb(233, 73, 106, 175));
            playerScore++;
        }
    }

    try {
        Thread.sleep(100);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    playerTouch.clear();
}

列表是我的私人列表&lt;瓷砖&gt; tiles; ,以及我初始化它并添加对象的地方:

protected void init()
{
    //...some code before this
    tiles = new ArrayList<Tile>();
    //...more code...
}

protected void loadTiles()
{
    tiles.add(new Tile(newTileLeft, newTileTop, newTileRight, newTileBottom, corrupt));
}

感谢您的建议

0 个答案:

没有答案