Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在整个贴图由所有平铺组成的情况下移动贴图时设置贴图动画_Java - Fatal编程技术网

Java 如何在整个贴图由所有平铺组成的情况下移动贴图时设置贴图动画

Java 如何在整个贴图由所有平铺组成的情况下移动贴图时设置贴图动画,java,Java,我有一张地图,比如说200x100的大小。这意味着有200x100种不同的瓷砖。我有一个角色,他向右移动。贴图也会移动,但不会设置动画。它只是在地图上绘制新位置,如下所示: g.drawImage(grass, x, y, 40, 40, null); 我想弄清楚如何在角色移动的同时制作地图滑动的动画。我想到了一个解决方案,我只需要一张巨大的地图图片,但我认为这会导致我重写游戏的整个结构 可以用定时器来完成吗?我想象着瓷砖一块一块地滑过,而不是一下子滑过 谢谢 您需要维护“虚拟世界”(整个地图

我有一张地图,比如说200x100的大小。这意味着有200x100种不同的瓷砖。我有一个角色,他向右移动。贴图也会移动,但不会设置动画。它只是在地图上绘制新位置,如下所示:

g.drawImage(grass, x, y, 40, 40, null);
我想弄清楚如何在角色移动的同时制作地图滑动的动画。我想到了一个解决方案,我只需要一张巨大的地图图片,但我认为这会导致我重写游戏的整个结构

可以用定时器来完成吗?我想象着瓷砖一块一块地滑过,而不是一下子滑过


谢谢

您需要维护“虚拟世界”(整个地图)和“真实世界”(显示内容)的基本概念。您需要根据“真实世界”的x/y偏移和宽度/高度确定哪些瓷砖是可见的。然后,您需要决定如何最好地更新它。有时,你会想重新绘制整个“真实世界”视图,有时,你可以将缓冲区移到另一个位置,只绘制新的瓷砖。我现在看一个例子,我会让你知道它是如何运行的谢谢:)@MadProgrammer我成功了谢谢!但有一个问题,我怎么知道它打印了整个地图?我注意到我把游戏高度乘以128,但如果我用更小的数字,比如游戏高度乘以12,那么一切都是一团糟。你能解释一下吗:)这要看情况而定。例如,您可以选择只绘制全瓷砖的算法。因此,对于指定的分幅,左上角必须从
0x0
开始,并且您只能以整个分幅的增量移动地图,这样,您就知道您可以拥有完整的玩家视图。另一种方法是“过度绘制”,通过计算将出现在左上角的标题,但在标题上方绘制一行,在标题之前绘制一列(如果可用),在预期的最后一个标题右侧绘制一行,实际上“过度绘制”超出了玩家可查看区域的边界