【问题标题】:UnfoldingMap busy looping on draw()UnfoldingMap忙循环绘制()
【发布时间】:2016-11-27 17:06:55
【问题描述】:

在经历了一些最初的麻烦之后,我现在已经让UnfoldingMap 在 Eclipse 中工作,如the tutorial 中所述。这似乎工作得很好,但是draw() 方法被高频重复调用,导致 CPU 达到 100%。即使在绘制了整个地图之后,这种情况也会无限期地继续下去。这是非常简单的测试应用程序的代码:

public class SimpleMapApp extends PApplet {

    UnfoldingMap map;

    public void setup() {
        size(800, 600);
        map = new UnfoldingMap(this, new Microsoft.AerialProvider());
    }

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

    public static void main(String[] args) {
        PApplet.main("SimpleMapApp");
    }
}

通过在 draw 方法中添加 sleep(),我可以看到它与绘制瓷砖有关,每次调用 draw() 都会绘制几个瓷砖。我认为它还可以保持从服务器高速加载地图图块;在我一开始使用他们的服务器之后,至少谷歌地图似乎已经禁止了我的 IP 地址。

绘制完所有内容后如何停止对draw() 的重复调用?

【问题讨论】:

    标签: java eclipse processing unfoldingmap


    【解决方案1】:

    有几个选项可以控制调用 draw 方法的打开方式:

    1. 使用frameRate()
    2. 使用noLoop() 手动暂停执行并使用loop() 继续执行

    【讨论】:

    • 您是否暗示重复调用 draw() 函数是设计使然?我什么时候调用 noLoop() ——也就是说,我怎么知道所有的东西都已经画好了?
    • 是的:draw() 是 Processing 的“无限循环”,每秒被调用大约 60 次。我建议先尝试frameRate(1)。我没有使用展开地图,所以不确定行为是什么(它是在后台线程中加载图块还是依赖于处理的动画线程)
    • 啊,谢谢,我不熟悉处理,所以不知道。我认为它是用于动画的,但它仍然是一种特殊的方法。
    • 不用担心。处理更适合艺术家和设计师进入编程作为他们实践的不同工具,因此它试图尽可能简单/容易上手。 (例如,在 setup() 中初始化东西,在 draw() 中更新/渲染,就是这样!)。使用 Processing javadocs 将 PApplet 集成到您的 eclipse 项目中,您可能会感觉更自在,因为它最适合您
    猜你喜欢
    • 2017-05-10
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多