如何在imageView数组中的每个imageView周围画一个矩形



我正在Android Studio制作一款游戏。

我有一个fish(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);

}

如果你不介意我这么说,在android游戏中使用imageviews可能是一个坏主意,原因有很多,包括:

  1. Accesibility。
  2. 性能。
  3. 可伸缩性。

如果你想开发一款小型Android游戏,我建议你使用SurfaceView和一个二级线程来管理所有的逻辑和绘图。

尽管如此,如果你仍然想要这样做,你应该看看方法getDrawable(),从中你可以获得图像的边界框来实现碰撞。

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

相关内容

最新更新