mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
38 lines
1.5 KiB
Dart
38 lines
1.5 KiB
Dart
part of skysprites;
|
|
|
|
/// A widget that uses a [SpriteBox] to render a sprite node tree to the screen.
|
|
class SpriteWidget extends OneChildRenderObjectWrapper {
|
|
|
|
/// The rootNode of the sprite node tree.
|
|
///
|
|
/// var node = mySpriteWidget.rootNode;
|
|
final NodeWithSize rootNode;
|
|
|
|
/// The transform mode used to fit the sprite node tree to the size of the widget.
|
|
final SpriteBoxTransformMode transformMode;
|
|
|
|
/// Creates a new sprite widget with [rootNode] as its content.
|
|
///
|
|
/// The widget will setup the coordinate space for the sprite node tree using the size of the [rootNode] in
|
|
/// combination with the supplied [transformMode]. By default the letterbox transform mode is used. See
|
|
/// [SpriteBoxTransformMode] for more details on the different modes.
|
|
///
|
|
/// The most common way to setup the sprite node graph is to subclass [NodeWithSize] and pass it to the sprite widget.
|
|
/// In the custom subclass it's possible to build the node graph, do animations and handle user events.
|
|
///
|
|
/// var mySpriteTree = new MyCustomNodeWithSize();
|
|
/// var mySpriteWidget = new SpriteWidget(mySpriteTree, SpriteBoxTransformMode.fixedHeight);
|
|
SpriteWidget(this.rootNode, [this.transformMode = SpriteBoxTransformMode.letterbox]);
|
|
|
|
SpriteBox get renderObject => super.renderObject;
|
|
|
|
SpriteBox createNode() => new SpriteBox(rootNode, transformMode);
|
|
|
|
void syncRenderObject(SpriteWidget old) {
|
|
super.syncRenderObject(old);
|
|
|
|
renderObject.rootNode = rootNode;
|
|
renderObject.transformMode = transformMode;
|
|
}
|
|
}
|