Effect class abstract

An Effect is a component that changes properties or appearance of another component over time.

For example, suppose you have an object "Goo", and you want to move it to some other point on the screen. Directly changing that object's position will cause it to teleport to the new location, which is likely undesired. A second approach that you can take is to modify Goo's update() method to implement the logic that will move Goo to the new position smoothly. However, implementing such logic for every component that you may need to move is cumbersome. A better approach then is to implement that logic as a separate "movement" component that can attach to Foo or to any other suitable object and cause them to move to the desired location. Such a separate component responsible for changing other components is an Effect.

Every Effect has a controller, which describes how this effect evolves over time. The effect also expects to be mounted into the game tree as a regular component, in order to be able to use its controller.

This class describes an abstract effect. Concrete implementations are expected to define the apply() method, which facilitates the necessary changes in the effect's target; and also the reset() method if they have non-trivial internal state.

Inheritance
Implementers

Constructors

Effect(EffectController controller, {void onComplete()?})

Properties

children ComponentSet
The children components of this component.
no setterinherited
controller EffectController
An object that describes how the effect should evolve over time.
final
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
hasChildren bool
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
isMounting bool
no setterinherited
isPaused bool
Whether the effect is paused or not.
no setter
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
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
mounted Future<void>
A future that will complete once the component is mounted on its parent.
no setterinherited
onComplete ↔ (void Function()?)
Optional callback function to be invoked once the effect completes.
getter/setter pair
parent Component?
Who owns this component in the component tree.
getter/setter pairinherited
previousProgress double
The effect's progress variable as it was the last time that the apply() method was called. Mostly used by the derived classes.
no setter
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
removeOnFinish bool
Whether the effect should be removed from its parent once it is completed, true by default.
getter/setter pair
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

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
advance(double dt) double
Used for SequenceEffect. This is similar to update(), but cannot be paused, does not obey removeOnFinish, and returns the "leftover time" similar to EffectController.advance.
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
apply(double progress) → void
Apply the given progress level to the effect's target.
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() ComponentSet
This method creates the children container for the current component. Override this method if you need to have a custom ComponentSet within a particular class.
inherited
descendants({bool includeSelf = false, bool reversed = false}) Iterable<Component>
Recursively enumerates all nested children.
inherited
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
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
handleLifecycleEventAdd(Component parent) → LifecycleEventStatus
inherited
handleLifecycleEventMove(Component newParent) → LifecycleEventStatus
inherited
handleLifecycleEventRemove(Component parent) → LifecycleEventStatus
inherited
handleResize(Vector2 size) → void
inherited
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
onFinish() → void
This method is called once when the effect is about to finish, but before it is removed from its parent. The notion of "about to finish" is defined by the controller: this method is called when controller.completed property first becomes true.
onGameResize(Vector2 size) → void
Called whenever the size of the top-level Canvas changes.
inherited
onLoad() FutureOr<void>
Late initialization method for Component.
inherited
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 the game.
inherited
onStart() → void
This method is called once when the effect is about to start, but before the first call to apply(). The notion of "about to start" is defined by the controller: this method is called when controller.started property first becomes true.
pause() → void
Pause the effect. The effect will not respond to updates while it is paused. Calling resume() or reset() will un-pause it. Pausing an already paused effect is a no-op.
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
recede(double dt) double
Used for SequenceEffect. This is similar to update(), but the effect is moved back in time. The callbacks onStart/onFinish will not be called. This method returns the "leftover time" similar to EffectController.recede.
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
removeWhere(bool test(Component component)) → void
Removes all the children for which the test function returns true.
inherited
render(Canvas canvas) → void
inherited
renderDebugMode(Canvas canvas) → void
inherited
renderTree(Canvas canvas) → void
inherited
reset() → void
Restore the effect to its original state as it was when the effect was just created.
resetToEnd() → void
resume() → void
Resume updates in a previously paused effect. If the effect is not currently paused, this call is a no-op.
setLoaded() → void
Used by the FlameGame to set the loaded state of the component, since the game isn't going through the whole normal component life cycle.
inherited
setMounted() → void
Used by the FlameGame to set the mounted state of the component, since the game isn't going through the whole normal component life cycle.
inherited
setRemoved() → void
Used by the FlameGame to set the removed state of the component, since the game isn't going through the whole normal component life cycle.
inherited
toString() String
A string representation of this object.
inherited
update(double dt) → void
Implementation of Component's update() method. Derived classes are not expected to redefine this.
override
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