2013-04-28 29 views
2

這是一個關於如何在飛鏢中執行「多線程」的飛鏢新手問題。如何不使用線程

(打擾一下,我是一個老Java開發者...)

所以我有這樣的代碼(參見下文),但由於重新創建GUI是昂貴的,我想推遲它,這樣,而不是重建_onWindowResize()中的gui我想開始一個線程,在大小穩定一段時間時執行此操作。例如。一秒鐘。

如果一個線程已經啓動,則什麼也不做。 (順便說一句,StageXL涼爽....)

(這也將修復_onWindowResize()是由飛鏢打了兩次錯誤:HTML ...)

... 
    html.window.onResize.listen((e) => _onWindowResize()); 
} 

_createGui() { 
    var shape = new Shape(); 
    shape.graphics.ellipse(html.window.innerWidth/2, html.window.innerHeight/2, html.window.innerWidth/4, html.window.innerHeight/4); 
    shape.graphics.fillColor(Color.Red); 
    stage.addChild(shape); 
} 

void _onWindowResize() { 
    print("New window size ${html.window.innerWidth}x${html.window.innerHeight}"); 

    stage = new Stage('stage', canvas); 
    stage.scaleMode = StageScaleMode.NO_SCALE; 
    stage.align = StageAlign.TOP_LEFT; 

    renderLoop = new RenderLoop(); 
    renderLoop.addStage(stage); 
    juggler = renderLoop.juggler; 

    _createGui(); 
} 
+0

注意:這是一個糟糕的例子,因爲我發現stagexl對我來說或多或少地做了這些......但無論如何這個問題是通用的。 – 2013-04-28 08:23:51

回答

1

一次可發送工作Dart中的其他線程通過Isolates,但這不適用於您的場景,因爲它主要是關於修改應用的UI。

一個不能在Dart中的分離物之間共享對象(或者通常使用WebWorkers)。所以你不能通過畫布到一個孤立來創建你的舞臺,renderloop等

如果你正在做複雜的計算(例如物理),它可能是有道理的發送到一個孤立,並使用結果更新用戶界面。