dart - 如何不使用线程

标签 dart stagexl

这是有关如何在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/

相关文章:

flutter - 如何将 Flutters ListView.builder 与 DataTable 结合使用,或者是否还有另一个 Widget?

dart - 如何从 Dart 中的列表中获取随机元素?

android - 如何从存储在 Assets 中的本地文件夹添加抖动图像

api - 使用 Flutter 和 Dart 进行翻译

canvas - 如何在Dart中使用StageXL绘制虚线圆

android - 使用本地移动库调用 Dart

dart - 使用StageXL的饼图?

dart - 如何每秒随机绘制贝塞尔曲线?也使用transition.dart

dart - StageXL GraphicsGradient

flutter - 如何在 textField 中允许正负双倍 - Flutter