将SpriteWidget框架用于Flutter

时间:2019-01-04 04:14:10

标签: dart flutter sprite

我试图使用Flutter的SpriteWidget框架显示一个圆圈,但除了黑屏外什么都没有。

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,
    );
  }
}

我正在尝试在SpriteWidget存储库中遵循自述文件,但是没有任何运气。

1 个答案:

答案 0 :(得分:0)

免责声明:在回答问题和Flutter时都是新手并且没有经验,但是我遇到了这个问题,并且我已经(解决了)。

正在渲染圆,但它不在视线范围内。您可以通过将圆的半径设置为可笑的巨大(1000+)来看到这一点。屏幕上应该有一个大的黄色斑点。

这似乎是因为SpriteWidget将节点渲染到了左上角1000英里处。您可以通过将根节点的位置设置为节点大小的一半来使其居中。

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

我相当确定这只是一种解决方法,并且有解决此问题的正确方法,但我希望它会有所帮助。