这是有关如何在dart中执行“多线程”的dart新手问题。
(对不起,我是一个老Java开发人员...)
因此,我有这种代码(如下所述),但是由于重新创建gui的成本很高,所以我想推迟它,以便代替在_onWindowResize()中重新创建gui的情况下,我想启动一个线程,当大小为稳定了一段时间。例如。一秒钟。
如果一个线程已经启动,则什么也不做。 (顺便说一句,StageXL很酷.....)
(这还将修复dart:html两次调用_onWindowResize()的错误。)
...
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();
}
最佳答案
可以通过Isolates将工作发送到Dart中的其他线程,但这不适用于您的情况,因为它主要是关于修改应用程序的UI的。
一个人不能在Dart中的隔离之间共享对象(或通常使用WebWorkers)。因此,您无法将 Canvas 传递到隔离中以创建舞台,renderloop等。
如果您要进行复杂的计算(例如,物理),则可以将其发送给隔离并使用结果来更新UI。
关于dart - 如何不使用线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16260356/