Не удается отобразить основные фигуры при использовании платформы SpriteWidget для Flutter - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь показать только круг, используя инфраструктуру SpriteWidget для Flutter, но у меня нет ничего, кроме черного экрана.

class SpriteWidgetTest extends StatefulWidget {
  @override
  SpriteWidgetTestState createState() => SpriteWidgetTestState();
}

class SpriteWidgetTestState extends State<SpriteWidgetTest> {
  var rootNode = NodeWithSize(const Size(1024.0, 2048.0));

  @override
  void initState() {
    var circ = CircleNode(radius: 50, color: Colors.yellow);
    rootNode.addChild(circ);
    super.initState();
  }

  @override
  Widget build(BuildContext context) => SpriteWidget(rootNode);
}

class CircleNode extends Node {
  @required
  double radius;
  Color color = Colors.black;
  CircleNode({this.radius, this.color});

  @override
  void paint(Canvas canvas) {
    canvas.drawCircle(
      Offset.zero,
      radius,
      Paint()..color = color,
    );
  }
}

Я пытаюсь следовать вместе с README врепозиторий SpriteWidget, но безуспешно.

1 Ответ

0 голосов
/ 26 января 2019

Отказ от ответственности: новый и неопытный как в ответах на вопросы, так и во Флаттере, но у меня была эта проблема, и я (вроде) понял ее.

Вы визуализируете круг, но он вне поля зрения.Вы можете увидеть это в действии, сделав радиус круга смехотворно огромным (1000+).Вы должны иметь большой желтый шарик поглотить ваш экран.

Это происходит потому, что SpriteWidget отображает узел за тысячу миль в верхнем левом углу.Вы можете отцентрировать его, установив положение корневого узла равным половине размера узла.

rootNode = new NodeWithSize(const Size(1024.0, 1024.0));
rootNode.position = Offset(512, 512);

Я вполне уверен, что это просто обходной путь, и есть правильный способ решить эту проблему, но я надеюсь, что это поможет.

...