Hero
Animation
Engine\Native\Hero est l'équivalent natif d'Engine\Hero : la même idée de $tag partagé, mais sans DOM/CSS à qui déléguer la transition. La boîte englobante de l'enfant (le Size retourné par layout(), à la position x/y passée à paint()) est enregistrée comme heroRegion sous $tag. Il n'y a pas de Navigator dans ce moteur : ce qui déclenche le vol n'est pas un push/pop d'écran, mais simplement le fait que le même tag apparaisse à un rect différent d'un rendu au suivant — NativeCanvasView.kt détecte cet écart et fait voler le sous-arbre taggé de son ancien rect vers le nouveau (une vraie transition FLIP via une Matrix, voir drawHeroTransition()) plutôt que de simplement le faire réapparaître en fondu à sa nouvelle place.
Exemple
<?php
use Engine\Native\Hero;
use Engine\Native\ImageCircle;
use Engine\Native\Curve;
$avatar = new Hero(
child: new ImageCircle('https://cdn.example.com/avatar.jpg', diameter: 56.0),
tag: 'user-avatar-42',
curve: Curve::EASE_OUT,
);Si cet avatar apparaît petit dans une liste puis, au rendu suivant du même écran, en grand dans un en-tête de profil — toujours sous le tag user-avatar-42 — le client anime son déplacement/redimensionnement au lieu de le faire réapparaître brutalement à sa nouvelle position.
Constructeur
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| child | Widget | — | Le sous-arbre dont le rect est suivi d'un rendu à l'autre. |
| tag | string | — | Identifiant partagé entre les deux occurrences du même élément visuel. |
| curve | ?Curve | null | Courbe d'interpolation appliquée au vol. |
À savoir. Toutes les transitions Hero d'une même passe tournent sur un seul
ValueAnimatorlinéaire partagé côté Kotlin — une courbe par tag est obtenue en reformant cette même progression 0..1 au moment du dessin, pas en lançant un animateur séparé par tag.