我试图使用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存储库中遵循自述文件,但是没有任何运气。
答案 0 :(得分:0)
免责声明:在回答问题和Flutter时都是新手并且没有经验,但是我遇到了这个问题,并且我已经(解决了)。
您正在渲染圆,但它不在视线范围内。您可以通过将圆的半径设置为可笑的巨大(1000+)来看到这一点。屏幕上应该有一个大的黄色斑点。
这似乎是因为SpriteWidget将节点渲染到了左上角1000英里处。您可以通过将根节点的位置设置为节点大小的一半来使其居中。
rootNode = new NodeWithSize(const Size(1024.0, 1024.0));
rootNode.position = Offset(512, 512);
我相当确定这只是一种解决方法,并且有解决此问题的正确方法,但我希望它会有所帮助。