java - 位图出现在屏幕外

标签 java bitmap

我有一个游戏,用户必须收集向他们袭来的 Blob 。这些 Blob 是位图。我遇到的问题是一些 Blob 来自屏幕边界之外。因此,例如, Blob 的底部将出现在屏幕的最顶部,因此我无法看到完整的位图。我希望它位于屏幕顶部和底部之间而不是外部的位置。我的问题是,有人可以帮助我让 Blob 只出现在屏幕上吗?任何帮助将不胜感激!

请注意: blobOffsetY = blob 的底边坐标。

我的代码:

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);
}

最佳答案

您没有显示相关代码,但我想您的问题从这里开始:

blobs.get(j)

看来您唯一的“知道”blob 的数据结构是某种列表。因此,您总是必须迭代所有它们,然后决定哪些当前位于您的可见屏幕中。

答案:想出一种更合适的方式来存储数据。例如,您可以:

  • 以某种方式对该列表中的 blob 进行排序(例如“按地理位置”),这样当您在“屏幕外”找到第一个 blob 时,您就知道不必处理任何后续内容
  • 使用多个列表,以便您的 blob 以某种方式“分组”,以便您立即只需循环较小的 blob 组
  • 使用不同的数据结构,例如 map 。键可以是某种坐标,值可以是该坐标上存在的 Blob 列表,以便您可以快速找到受影响的 Blob

但由于您的问题相当广泛和笼统,因此不要要求更具体的答案。

关于java - 位图出现在屏幕外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56258229/

相关文章:

java - 如何获取在 CentOS Wildfly 服务器上运行的 Spring 应用程序的完整基本路径?

java - 在 Java 8 中使用 Group By 和属性

android - ScriptIntrinsicBlur 生成不适当的模糊

java - 我在将可绘制资源 ID 从类型化数组添加到自定义 ArrayAdapter 时遇到问题。它们都以 "0"的形式出现

Java - 通过 TCP 连接发送无符号字节

java - 如何使用Java通过删除重复数据从列表中写入现有文件?

android - Android中如何设置imageView的背景避免OutOfMemoryError?

android - 如何在 Android 中延迟 onSensorChange

路径中的 Android 位图

Android:如何用相机拍照并将位图转换为字节数组并保存到sqlite db?