使用P5.js和D3.js进行映射,我在画布上的setup()
中加载了特定县的美国地图。这需要大约1/2-1秒来加载,因为shapefile相当大
在draw()
中,我创建了一些文本、椭圆等,我希望使用滑块进行更新,并可能创建一些额外的动画。
通常在p5.js中,您只需在draw()
之后使用background(255)
来清除所有内容,并使过渡平滑,这样就不会有任何重叠,旧的椭圆和文本会被清除,等等。
我的问题是我的初始地图是如此昂贵的加载,我不能抹去它和重新绘制它每一帧,它落后于所有。我需要绘制一次地图,然后在地图之外的所有其他元素上做一个背景(255),或者基本上清除每一帧在draw()中创建的所有内容,同时将在setup()中创建的地图留在画布上。或者只清除地图以外的所有元素。
下面是我在p5编辑器中所做的假设代码。背景中的rect是地图的占位符。您可以看到,因为文本和椭圆没有被删除,它们重叠,一旦椭圆达到一定的大小,您就不能减小它们的大小,因为大的椭圆仍然存在。
https://editor.p5js.org/dfeusse/sketches/hkje2kj9m
您有几个选择:
>
如果地图始终相同,则可以将其保存到图像文件中。将它加载到setup()
函数中的变量中,然后在draw()
函数中绘制它。
如果映射在程序运行期间可能发生变化,那么可以在setup()
中将映射绘制到缓冲区,然后在draw()
中绘制该缓冲区。creategraphics()
函数将在这里派上用场。
var pg;
function setup() {
createCanvas(100, 100);
pg = createGraphics(100, 100);
pg.background(100);
pg.noStroke();
pg.ellipse(pg.width / 2, pg.height / 2, 50, 50);
}
function draw() {
background(200);
image(pg, 50, 50);
image(pg, 0, 0, 50, 50);
}
我正在尝试将一个类添加到一个特定的元素中。用户单击remove按钮,在将“remove”类添加到包含行DIV之后,表中包含该按钮的整行应显示为禁用。使用Array.Map创建了多行。我试了一下:如何使用refs访问/重写元素的className?但是useRef只针对迭代中创建的div的最后一个版本,而useState for conditional className则更改该div的所有迭代。
问题内容: 我有这个arraylist: 如何构造语句,以便每500帧删除arraylist 中的最后一个元素?是否需要某种循环? 问题答案: 如果您已经有了一个变量,可以跟踪您所处的帧,则可以使用以下if语句: 由于您将其用作ArrayList的remove方法的参数,因此我也这样做了,但请注意,由于arrayList索引从0开始计数,因此它将始终删除arrayList中的第二个对象。 仅在帧数
问题内容: 我有一个非常大的.xml文件,我正在尝试制作一个新的.xml文件,该文件只包含了该较大文件内容的一小部分。我想指定一个属性(在我的情况下为itemID),并为其指定一些特定的值,然后它将除去所有具有那些itemID及其子元素的元素。 我的大型.xml文件如下所示: 该文件大约有9万行,大约9兆字节。 注意如何有itemID,某些项目类型可以(但不总是)在其中包含更多项目,并且这些子项也
问题内容: 我想创建一个2d numpy数组,其中每个元素都是其索引的元组。 范例(4x5): 我将创建具有以下列表理解的python : 是否有更快的方法可以达到相同的效果,也许使用numpy方法? 问题答案: 这是一个基于初始化的方法- 样品运行- 到目前为止针对网格化和更大尺寸发布的所有方法的运行时测试-
我被分配了一项编程任务,但我被卡住了。其说明如下: 有一个名为“秘密圣诞老人”(给他们礼物)的游戏,有很多孩子参加。对于每个参与的孩子,都有一个来自参与孩子的秘密圣诞朋友。我必须编写一个程序,为每个参与的孩子挑选一个秘密的圣诞老人朋友。 示例:如果Bob,Alice,John和George是参与的孩子,在随机选择之后, 输出可能看起来像 具有相同输入的连续两次程序运行不应有相同的结果。 我的想法是
给定下面的代码: HTML: 断续器 我必须使用此代码才能删除元素吗?它似乎太冗长了。