当前位置: 首页 > 知识库问答 >
问题:

使用平铺贴图无限滚动画布,无需重新绘制

阎德辉
2023-03-14

我已经连续6天在一个游戏引擎中工作了,重温了我在旧DOS时代制作游戏所学到的一切。然而,当时有双缓冲,您可以简单地以极快的速度重新绘制所有内容。唉,在HTML5中,这是另一个故事。

到目前为止,我的引擎有“图层”,它们是在0,0位置一个接一个地放置的画布,我在屏幕坐标0,0处一个接一个地绘制它们的上下文。这意味着,您绘制一个图层,该图层在渲染阶段被绘制(当然,如果它满足一些条件)。

我已经制作了一个在画布上绘制平铺地图的例程,并使用-

所以我想出了这个主意(为了这个例子,只有水平滚动),通过使用稍微大一点的画布:

  1. 用所有瓷砖绘制画布,并用相机的x位置偏移其x位置。

这样,每次出现滚动时,我只会重新绘制画布,通过一些优化,我甚至可以只重新绘制边缘平铺,而不是整个画布(这是我的想法)。

所以我的问题是:我该如何在代码中实现这一点?!可能是因为我已经连续六天在这台发动机上工作累了,但我就是看不出来。还有,是什么让我更加困惑:如何在不影响画布其余部分的情况下绘制边缘瓷砖(

我可以展示一些代码,但我想我可以通过一个小的JSFIDLE示例来适应我自己的代码。然而,如果您真的需要查看代码,我可能会为此制作一个小示例。请注意,我的绘图代码只是文章代码的一个改编副本(用于测试滚动),因此您可以假设我没有编写平铺映射代码。我有,但我打赌我需要为这个案例重写xD。

提前感谢!-DARKGuy

共有1个答案

国跃
2023-03-14

好吧,我终于设法做到了,解决了我自己的问题——然而,它比我之前的尝试更快,但仍然很紧张。如果有人感兴趣,请问——但是因为我甚至没有得到一个评论,我想无论如何都没有人。

这是GameDev的最终工作解决方案

 类似资料:
  • 我想让我的libgdx地图滚动,但我不知道代码使地图滚动,请大家帮助我,我想让地图滚动像flappy bird游戏,这是我的代码,显示在屏幕上的地图 }

  • 问题内容: 我正在编写一个页面,其中我只想将原始JavaScript代码用于UI,而不会受到插件或框架的干扰。 现在,我正在努力寻找一种无需使用jQuery即可平滑滚动页面的方法。 问题答案: 尝试使用此平滑滚动演示或类似的算法: 使用获取当前的最佳位置 获取元素的位置,直到要滚动到的位置: 进行for循环到达该位置,这将非常快,或者使用计时器进行平滑滚动,直到使用 安德鲁·约翰逊的原始代码:

  • 问题内容: 如Google所记录,Gallery类在API级别16中已弃用。不再支持此小部件。其他水平滚动小部件包括支持库中的Horizo​​ntalScrollView和ViewPager。因此,我使用ViewPager作为Gallery类的替代方法。 我的目标是最终实现 带有文本描述 的 无限滚动图像ViewPager 。我使用以下代码实现了具有描述每个图像的文本的图像ViewPager,但是

  • 我编写了这段代码,可以在JavaFX画布上绘制。它可以很好地工作,但我不知道如何重新绘制画布(比如在Swing中),以便在新画布上重新开始绘制。这是我的代码,非常感谢你的帮助!马里奥

  • 无限滚动用来在页面滚动到接近底部时加载新内容或进行其他操作。 在底部的无限滚动 你只需在可滚动的容器上添加“infinite-scroll”类,一般是页面滚动区域 - div.content <style type="text/css"> .infinite-scroll-preloader { margin-top:-20px; } </style> <heade

  • 无限滚动用来在页面滚动到接近底部时加载新内容或进行其他操作。 无限滚动HTML结构 你只需在可滚动的容器上添加“infinite-scroll”类,一般是页面滚动区域 - <div class="page-content">: <div class="page"> <div class="page-content infinite-scroll" data-distance="100">