如何在JavaFX / ScalaFX中实现可滚动,可缩放的映射?

时间:2015-07-13 20:00:34

标签: java javafx maps tile scalafx

我正在将地图作为电脑游戏配件实施;它应该用一些信息叠加显示计算机游戏的地理位置。我想知道在JavaFX中实现这一目标的最佳方式是什么,或者更确切地说是ScalaFX。

现在,我有一个非常天真的实现:

  • 我有不同缩放级别的地图图块。对于每个缩放级别,我在ImageView中安排Group并转换该组,以便所有缩放级别使用相同的坐标。
  • 我的叠加层使用具有相同坐标的单独组。
  • 我使用鼠标滚轮进行缩放,只能看到一个缩放级别,具体取决于当前缩放。
  • 我将所有这些打包成ScrollPane

这有一些限制:

  • 所有缩放级别的所有切片都在启动时加载。这很丑陋,但适用于我的特定用例。
  • 仅当地图的边界有限时,才能使用ScrollPane。再次,这里很好,但不适用于一般的地图。
  • 用户体验很奇怪:ScrollPane滚动鼠标滚轮,而大多数地图按拖放滚动;大多数地图用鼠标滚轮缩放或捏缩放。缩放保留"锚点"是至关重要的。手势期间(鼠标/触摸位置)。 (开箱即用的移动设备也很不错,但现在只是做梦......)
  • 叠加层中的不同细节级别(取决于当前缩放)是可能的,但可能不是非常有效或方便。

显然,这是我尝试过的方法之一。 This question提到了某个图书馆的图书馆,但它似乎没有得到维护,用于描述图书馆的博客不再存在。此外,它似乎专注于提供一个游戏引擎,其中一块瓷砖对游戏有意义;地图中的图块只是一个图像,而叠加图并不关心一个图块的开始或结束位置。

用一个具体的问题来完成这个问题:是否有任何我可以使用的库或技术来满足我的需求?我对我的第三个要点(UX)特别感兴趣,但我想如果有合适的方法,它将覆盖第1点到第3点。

0 个答案:

没有答案