如何在imageViews数组中的每个imageView周围绘制一个矩形?

时间:2016-11-14 22:56:31

标签: java android android-studio imageview collision-detection

我在Android Studio中制作游戏。

我有一系列鱼(imageViews)。

我需要在数组中的每条鱼周围放一个矩形,以开始实现鱼类的碰撞检测。

在下面的函数中,我创建了imageView,将其添加到我的布局,然后在屏幕上移动imageView。

如何在数组中的每条鱼周围画一个矩形?

我每隔两秒就在一次运行中调用此函数。

public void spawnFish(){

        Random r = new Random();

        int low = 170;
        int high = 500;

        int start = r.nextInt(high - low) + low;
        int end = r.nextInt(high - low) + low;

        myImage = new ImageView(getContext());
        myImage.setImageBitmap(resizedFish);
        //drawRectangle around myImage for collision detection
        fragment_main.addView(myImage);
        arrayOfEnemies.add(myImage);

        myImage.setX(950);
        myImage.setY(start);


        TranslateAnimation moveLefttoRight = new TranslateAnimation(myImage.getX(), -width, myImage.getY(), end);
        moveLefttoRight.setDuration(12000);
        moveLefttoRight.setFillAfter(true);
        myImage.startAnimation(moveLefttoRight);

        Log.d("fishArraySize", Integer.toString(arrayOfEnemies.size()));

    }

这是可运行的

    public HUDDrawView(Context context){super(context);
    initMyView();
    }

    public void initMyView(){

        spawnHandler = new Handler();
        SpawnEnemies = new Runnable(){
            public void run(){
                //Log.d("2seconds", "spawnfish");
                spawnFish();
                spawnHandler.postDelayed(this, 2000);

            }
        };

        spawnHandler.post(SpawnEnemies);

}

1 个答案:

答案 0 :(得分:2)

如果你介意我这样说,在Android中使用你的游戏的图像视图可能是一个坏主意,原因不同,包括:

  1. 无障碍环境。
  2. 性能。
  3. 可扩展性。
  4. 如果您想开发一款小型Android游戏,我建议您使用SurfaceView和一个管理所有逻辑和绘图的辅助线程。

    尽管如此,如果您仍然想要使用它,您应该查看方法getDrawable(),您可以从中获取图像的边界框以实现碰撞。

    最后如果你仍然让我想尝试另一种方法,我会鼓励你去看看任何游戏框架,比如Cocos2dx,Starling或Monogame,你不会后悔!