2016-11-27 3 views
0

最初に問題が発生した後、UnfoldingMapthe tutorialで説明したようにEclipseから使用できるようになりました。これはうまくいくようですが、draw()メソッドが頻繁に高い頻度で呼び出され、CPUが100%になる原因となります。これは、マップ全体が描画された後でも、無期限に続きます。ここでは非常に簡単なテストアプリケーションのコードは次のとおりです。unfoldingMapはdraw()でループしています

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()。私はそれがサーバーから地図タイルを高速でロードし続けると思います。私の最初のサーバーを使った後、少なくともGoogle Mapsは私のIPアドレスを禁止しているようだ。

すべてが引き出された後に、draw()への繰り返し呼び出しを停止するにはどうすればよいですか?

答えて

1

drawメソッドが呼び出される方法を開いて制御するオプションがいくつかあります:

  1. 使用frameRate()
  2. 手動noLoop()を使用して実行を一時停止し、loop()
+0

を使用して、それを再開するには、あなたがいることを暗示していますdraw()関数が繰り返し呼び出されるのは設計上のことですか?いつnoLoop()を呼び出すのですか?つまり、すべてが描画されたことをどのように知っていますか? – fishinear

+0

はい:draw()は、処理の「無限ループ」が約60回/秒呼び出されています。最初に '' frameRate(1) ''を試してみることをお勧めします。私はアンパッディングマップを使用していないので、動作が何であるかはわかりません(バックグラウンドスレッドでタイルをロードするか、Processingのアニメーションスレッドに依存しますか?) –

+0

Processingには馴染みがありません。 。私はそれがアニメーション用であると仮定しますが、それはまだまだ独特のアプローチです。 – fishinear

関連する問題