Bitmap отображается за пределами экрана

У меня есть игра, в которой пользователь должен собирать падающие на него капли. Блобы — это растровые изображения. Проблема, с которой я сталкиваюсь, заключается в том, что некоторые капли поступают из-за пределов экрана. Так, например, нижняя часть блоба будет отображаться в самом верху экрана, поэтому я не смогу увидеть полное растровое изображение. Я хочу, чтобы они просто появлялись между верхней и нижней частью экрана, а не за его пределами. Мой вопрос: может ли кто-нибудь помочь мне сделать так, чтобы капли появлялись только на экране? Любая помощь будет принята с благодарностью!

Просто отметить: blobOffsetY = координата нижнего края капли.

Мой код:

for (int j = 0; j < AppConstants.numberOfBlobs; j++) {
    if (blobs.get(j).getBlobX() < -AppConstants.getBitmapBank().getBlobWidth()) {
        blobs.get(j).setBlobX(blobs.get(j).getBlobX() +
                              AppConstants.numberOfBlobs * AppConstants.distanceBetweenBlob);
        int blobOffSetY = AppConstants.minBlobOffsetY +
                          random.nextInt(AppConstants.maxBlobOffsetY - AppConstants.minBlobOffsetY + 1);
        blobs.get(j).setBlobOffsetY(blobOffSetY);
        blobs.get(j).newScore = true;
    }
    blobs.get(j).setBlobX(blobs.get(j).getBlobX() - AppConstants.blobVelocity);
}

На всякий случай, если вы хотите попрактиковаться в голосовании... получайте от этого удовольствие.

GhostCat 22.05.2019 16:31
Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
1
1
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не показываете соответствующий код, но я думаю, ваша проблема начинается здесь:

blobs.get(j)

Кажется, что ваша единственная структура данных, которая «знает» большие двоичные объекты, представляет собой своего рода список. Как следствие, вам всегда нужно повторять все из них, чтобы затем решить, какие из них в настоящее время находятся на вашем видимом экране.

Ответ: придумайте более подходящий способ хранения этих данных. Например, вы можете:

  • как-то Сортировать капли в этом списке (например, «географически»), так что, когда вы найдете первый «за кадром», вы знаете, что вам не нужно обрабатывать какие-либо из последующих.
  • используйте несколько списков, чтобы ваши капли были как-то «сгруппированы», так что вам сразу нужно зациклить только меньшую группу BLOB-объектов
  • использовать различные структуры данных, такие как карты. Ключом может быть какая-то координата, значением может быть список BLOB-объектов, присутствующих в этой координате, чтобы вы могли быстро добраться до затронутых BLOB-объектов.

Но поскольку ваш вопрос довольно широкий и общий, не просите более конкретного ответа.

Другие вопросы по теме