AnimationComponent class

Constructors

AnimationComponent(String src, {String? state, String? prefix, AssetsCache? cache, CaseSensitivity stateNameSensitivity = CaseSensitivity.insensitive, Mode mode = Mode.forward})
For frame-perfect animations, use AnimationComponent.framebased. The underlining document structure of Boomsheets uses integer frames and hertz (frames per second) to determine the time that each frame needs in order to advance. Components using this constructor rely on elapsed Duration delta-time (dt) in update which may exhibit occasional frame-skips due to floating point precision drift. src is the path of the document without prefix. state is the inital Anim state to set if provided. If state is null, there is no animation data to play from. cache uses Flame.assets by default or a different one if provided. stateNameSensitivity is used when fetching Anim states by their name. mode dictates how an animation plays. Default is Mode.forward.
AnimationComponent.framebased(String src, {String? state, String? prefix, AssetsCache? cache, CaseSensitivity stateNameSensitivity = CaseSensitivity.insensitive, Mode mode = Mode.forward})
This named constructor is best for applications which need frame-perfect animation behavior. For example deterministic fighting games. Otherwise see the default constructor AnimationComponent. src is the path of the document without prefix. state is the inital Anim state to set if provided. If state is null, there is no animation data to play from. cache uses Flame.assets by default or a different one if provided. stateNameSensitivity is used when fetching Anim states by their name. mode dictates how an animation plays. Default is Mode.forward.

Properties

attrs List<Attribute>?
Fetch currAnim animation attributes or null if not state is set.
no setter
children → ReadOnlyOrderedSet<Component>
The children components of this component.
no setterinherited
completedThisFrame bool
Returns true if currAnim has finished the last frame of its state. If currKeyframe is null, the result is always false.
no setter
currAnim Anim?
If non-null, this is the currently playing animation state.
getter/setter pair
currentStateName String
If currAnim is null, then the result is the empty String. Otherwise, this returns the current state name.
no setter
currKeyframe IndexedKeyframe?
If non-null, this is the frame data that will display on draw.
getter/setter pair
debugColor Color
The color that the debug output should be rendered with.
getter/setter pairinherited
debugCoordinatesPrecision int?
How many decimal digits to print when displaying coordinates in the debug mode. Setting this to null will suppress all coordinates from the output.
getter/setter pairinherited
debugMode bool
Returns whether this Component is in debug mode or not. When a child is added to the Component it gets the same debugMode as its parent has when it is prepared.
getter/setter pairinherited
debugPaint Paint
The debugColor represented as a Paint object.
no setterinherited
debugTextPaint → TextPaint
Returns a TextPaint object with the debugColor set as color for the text.
no setterinherited
doc Document?
Upon success, doc contains all well-formed Anim state objects.
getter/setter pair
elapsedTime Duration
Elapsed seconds
getter/setter pair
frame Frametime
Elapsed ticks
getter/setter pair
framebased bool
This is true when constructed by AnimationComponent.framebased.
final
hasChildren bool
Whether this component has any children. Avoids the creation of the children container if not necessary.
no setterinherited
hashCode int
The hash code for this object.
no setterinherited
isLoaded bool
Whether this component has completed its onLoad step.
no setterinherited
isLoading bool
Whether the component is currently executing its onLoad step.
no setterinherited
isMounted bool
Whether this component is currently added to a component tree.
no setterinherited
isRemoved bool
Whether the component has been removed. Originally this flag is false, but it becomes true after the component was mounted and then removed from its parent. The flag becomes false again when the component is mounted to a new parent.
no setterinherited
isRemoving bool
Whether the component is scheduled to be removed.
no setterinherited
isStateNameInsensitive bool
Query if this can fetch Anim state data with case-insensitivity.
no setter
key → ComponentKey?
A key that can be used to identify this component in the tree.
finalinherited
loaded Future<void>
A future that completes when this component finishes loading.
no setterinherited
mode Mode
Each flag in Mode describes how to animate currAnim.
getter/setter pair
mounted Future<void>
A future that will complete once the component is mounted on its parent.
no setterinherited
parent ↔ SpriteComponent
Who owns this component in the component tree.
getter/setter pairinherited
priority int
Render priority of this component. This allows you to control the order in which your components are rendered.
getter/setter pairinherited
removed Future<void>
A future that completes when this component is removed from its parent.
no setterinherited
renderContext → ComponentRenderContext?
Override this method if you want your component to provide a custom render context to all its children (recursively).
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
src String
src is the path to the document.
final
stateNames List<String>
Returns a list of all state names parsed by doc in onLoad. If doc is null, returns an empty list.
no setter
stateNameSensitivity CaseSensitivity
By default, state names are CaseSensitivity.insensitive.
final

Methods

add(Component component) FutureOr<void>
Schedules component to be added as a child to this component.
inherited
addAll(Iterable<Component> components) Future<void>
A convenience method to add multiple children at once.
inherited
addToParent(Component parent) FutureOr<void>
Adds this component as a child of parent (see add for details).
inherited
afterChildrenRendered(Canvas canvas) → void
Called once after all children have been rendered in renderTree.
inherited
ancestors({bool includeSelf = false}) Iterable<Component>
An iterator producing this component's parent, then its parent's parent, then the great-grand-parent, and so on, until it reaches a component without a parent.
inherited
componentsAtLocation<T>(T locationContext, List<T>? nestedContexts, T? transformContext(CoordinateTransform, T), bool checkContains(Component, T)) Iterable<Component>
This is a generic implementation of componentsAtPoint; refer to those docs for context.
inherited
componentsAtPoint(Vector2 point, [List<Vector2>? nestedPoints]) Iterable<Component>
An iterable of descendant components intersecting the given point. The point is in the local coordinate space.
inherited
contains(Component c) bool
Whether the children list contains the given component.
inherited
containsLocalPoint(Vector2 point) bool
Checks whether the point is within this component's bounds.
inherited
containsPoint(Vector2 point) bool
Same as containsLocalPoint, but for a "global" point.
inherited
createComponentSet() → OrderedSet<Component>
This method creates the children container for the current component. Override this method if you need to have a custom OrderedSet within a particular class.
inherited
descendants({bool includeSelf = false, bool reversed = false}) Iterable<Component>
Recursively enumerates all nested children.
inherited
elapse(double dt) → void
Advances elapsedTime by dt first by converting dt to Duration while preserving both seconds and milliseconds granularity. Then it determines the frame data, calls refresh and synchronizes frame with elapsedTime.
findGame() → FlameGame<World>?
Fetches the nearest FlameGame ancestor to the component.
inherited
findParent<T extends Component>({bool includeSelf = false}) → T?
Returns the closest parent further up the hierarchy that satisfies type=T, or null if no such parent can be found.
inherited
findRenderContext<T extends ComponentRenderContext>() → T?
inherited
findRootGame() → FlameGame<World>?
Fetches the root FlameGame ancestor to the component.
inherited
firstChild<T extends Component>() → T?
Returns the first child that matches the given type T, or null if there are no such children.
inherited
hasState(String state) bool
Queries whether or not doc contains the animation state.
lastChild<T extends Component>() → T?
Returns the last child that matches the given type T, or null if there are no such children.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onChildrenChanged(Component child, ChildrenChangeType type) → void
This method will be invoked from lifecycle if child has been added to or removed from its parent children list.
inherited
onGameResize(Vector2 size) → void
Called whenever the size of the top-level Canvas changes.
inherited
onHotReload() → void
Called when Flutter's hot reload is triggered.
inherited
onLoad() → void
This routine concatonates prefix with src before calling _load. To actually load, AssetsCache.readFile is used to retrieve the bundled document's contents and parse via DocumentReader.fromString. If successfully parsed, all Anim state objects are hashed by their Anim.name value. If is CaseSensitivity.insensitive is desired, all state names are converted to lowercase.
onMount() → void
Called when the component is added to its parent.
inherited
onParentResize(Vector2 maxSize) → void
Called whenever the parent of this component changes size; and also once before onMount.
inherited
onRemove() → void
Called right before the component is removed from its parent and also before it changes parents (and is thus temporarily removed from the component tree).
inherited
pointOffset(String name, {bool considerFlip = false}) → Vector2?
Given a point name, returns the offset from the currKeyframe's origin to the matched point as identified in the animation document. This offset can be used attach Components to a SpriteComponent for complex animations or special effects.
propagateToChildren<T extends Component>(bool handler(T), {bool includeSelf = false}) bool
This method first calls the passed handler on the leaves in the tree, the children without any children of their own. Then it continues through all other children. The propagation continues until the handler returns false, which means "do not continue", or when the handler has been called with all children.
inherited
rebalanceChildren() → void
inherited
refresh({SpriteComponent? target}) → void
This updates target's spritesheet visible area to currKeyframe. If currKeyframe is null, then this routine aborts. If target is not provided, it defaults to parent.
remove(Component component) → void
Removes a component from the component tree.
inherited
removeAll(Iterable<Component> components) → void
Removes all the children in the list and calls onRemove for all of them and their children.
inherited
removeFromParent() → void
Remove the component from its parent in the next tick.
inherited
removeSyncPoint(AnimationComponent anim) → void
Removes the child AnimationComponent from its own update list.
removeWhere(bool test(Component c)) → void
Removes all the children for which the test function returns true.
inherited
render(Canvas canvas) → void
inherited
renderChild(Canvas canvas, Component child) → void
Renders a single child component onto canvas.
inherited
renderDebugMode(Canvas canvas) → void
inherited
renderTree(Canvas canvas) → void
inherited
setState(String state, {int? frame, Mode? mode, bool refresh = false}) → void
On success, sets the currAnim animation state. Optionally set frame to jump to a keyframe in that state. Default mode is Mode.forward and overwrites the previous value. If refresh param is true, AnimationComponent.refresh will run after.
syncFrametime(Frametime time) → void
Sets frame and sets the equivalent Duration value for elapsedTime. If this is constructed with AnimationComponent.framebased, then this is the routine you want, in order to change the elapsed time. Otherwise see syncTime.
syncPoint(String label, AnimationComponent anim) → void
This routine will add anim as a child animation at a point label. That is to say, every update to this, every child will have their frame index set to their parent's value, which will fetch currKeyframe via a subsequent call to refresh.
syncTime(Duration time) → void
Sets elapsedTime and sets the equivalent Frametime value for frame. If this is constructed with default constructor AnimationComponent, then this is the routine you want, in order to change the elapsed time. For frame-perfect games, see syncFrametime.
tick() → void
Advances frame by one, determines the frame data, calls refresh and synchronizes elapsedTime with frame.
toString() String
A string representation of this object.
inherited
update(double dt) → void
If dt is zero, this routine aborts. If there is a currKeyframe set, it will have its IndexedKeyframe.newThisFrame flag changed to false. If mode is Mode.stop, only refresh is called.
updateTree(double dt) → void
This method traverses the component tree and calls update on all its children according to their priority order, relative to the priority of the direct siblings, not the children or the ancestors.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Properties

prefix String
onLoad looks for anim documents under prefix directory. Change the value if you want to load from a different directory. By default the primary directory is under "anims/".
getter/setter pair
xtends List<Extensions>
Supported animation extensions to use for all components.
getter/setter pair