位图显示在屏幕外

时间:2019-05-22 13:39:49

标签: java 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);
}

1 个答案:

答案 0 :(得分:1)

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

blobs.get(j)

看来,您唯一知道“斑点”的数据结构是某种列表。因此,您始终必须迭代所有 ,然后确定当前在可见屏幕中的那些。

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

  • 以某种方式排序该列表中的斑点(例如“地理上”),这样,当您找到第一个“屏幕外”时,您便知道不必处理任何后续的
  • 使用多个列表,以使您的Blob以某种方式“分组”,以便您仅需循环一小组较小的Blob。
  • 使用不同的数据结构,例如地图。关键可能是某种坐标,值可能是该坐标上存在的斑点列表,以便您可以快速找到受影响的斑点。

但是,由于您的问题很广泛且笼统,所以不要要求更具体的答案。