gpt4 book ai didi

java - 如果我在Processing的设置方法中绘制 map 并完全停止draw()运行,那么我的 map 不应该至少绘制一次吗?

转载 作者:行者123 更新时间:2023-11-30 05:49:47 40 4
gpt4 key购买 nike

我有一个旧项目,涉及使用展开 map 和处理来绘制,嗯...... map 哈哈。该项目运行良好,但我正在检查一些内容以帮助同事,并遇到了一些我不太明白的事情。

我的问题如下:如果我在Processing的draw()中调用Unfolding Map的draw()方法(map.draw()) > 方法,一切正常,一切都会不断重绘,我可以正确地与应用程序交互等等。但是,如果我在处理的 setup() 方法中执行 map.draw() ,然后避免运行处理的 draw() 方法,应该 map 不是绘制一次之后就全部关闭了吗?

相反,当我在 setup() 中运行 map.draw() 然后强制所有内容停止时,它不会绘制任何东西,甚至一次都没有。

此外,我尝试仅运行一次Processing的draw()方法,并在Processing的draw()中仅调用一次map.draw() code> 方法,通过在 setup() 末尾使用 noLoop() 来实现。我的项目真的很长,所以我只会发布一些代码,只是为了测试我的这个小问题。

private static final boolean offline = false;
public static String mbTilesString = "/Users/roy/IdeaProjects/UnfoldingMaps/data/blankLight-1-3.mbtiles"
private UnfoldingMap map;

public void setup() {
size(900, 700, OPENGL);

if (offline) {
this.map = new UnfoldingMap(this, 200, 50, 650, 600, new MBTilesMapProvider(mbTilesString));
} else {
this.map = new UnfoldingMap(this, 200, 50, 650, 600, new Microsoft.RoadProvider());
}

MapUtils.createDefaultEventDispatcher(this, this.map);

noLoop(); // draw() gets called only once
}

public void draw() {
this.map.draw();
}

我希望 map 绘制一次,然后一切都会停止。相反,我得到以下信息:

blank window

最佳答案

你说的一切都有道理,你的期望也有道理。您可以通过绘制矩形而不是 map 来确认该行为。

我最好的猜测是展开 map 与 noLoop() 函数不兼容。我假设展开 map 有一些依赖于绘制循环的内部逻辑:异步加载 map 图 block 、响应用户输入等。

您可以通过在 setup() 函数中执行类似的操作来探索该行为:

noLoop();

for(int i = 0; i < 100; i++){
draw();
}

这是一个旨在探索该行为的黑客。我不建议这是一个修复。如果我这样做,我会看到 map 已部分加载:

partially loaded map

这告诉我,展开 map 在某种程度上依赖于多次调用 draw() 来处理加载。这是有道理的,因为加载是异步的,并且随着时间的推移在后台发生。它可能与加载图像后需要在处理的主线程上绘制有关。如果你想确定的话,你可以看看 the source展开 map 以了解其内部行为。

如果您确实需要在展开 map 中使用 noLoop(),您可以使用 delay() 函数进行修改。或者你可以看看the documentation用于展开 map ;也许我们错过了一个有用的功能。或者您可以修改源代码以获得您想要的行为。或者也许您可以使用 PGraphics 或其他东西将一些东西组合在一起。

但最重要的是,我认为您应该避免将 noLoop() 与展开 map 一起使用。

关于java - 如果我在Processing的设置方法中绘制 map 并完全停止draw()运行,那么我的 map 不应该至少绘制一次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54133756/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com