id: keyboard
}
Ensuite, le traitement des informations en provenance du clavier n'est pas très différent
d'une interface Qt Quick traditionnelle : les mêmes gestionnaires d'événements sont
présents, mais pas au même endroit. Avec Qt 3D, tout se fait au niveau de
KeyboardHandler, ajouté comme composant à l'entité qui doit réagir. Par exemple,
pour que le tore réagisse à l'appui sur la touche Tabulation pour passer le focus à la
sphère (cette notion est la même que pour une application Qt Quick traditionnelle) :
Entity {
components: [
TorusMesh { … },
PhongMaterial { … },
Transform { … },
KeyboardHandler {
id: torusKeyboard
sourceDevice: keyboard
onTabPressed: sphereKeyboard.focus = true
}
]
// …
}
La sphère est modifiée de la même manière, mais en faisant passer le focus au tore.
Pour que l'impact soit bien visible à l'utilisateur, les deux entités (tore et sphère) auront
une taille qui augmentera quand ils auront le focus (par exemple, elle doublera). Pour
ce faire, la mise à l'échelle de leur transformation (scale) dépendra de cette condition.
Ainsi, pour le tore :
Transform {
scale3D: // …
rotation: // …
scale: torusKeyboard.focus ? 1 : 2
Behavior on scale {
NumberAnimation {
duration: 250
}
}
}
L'instruction Behavior on scale adoucit la transition entre les deux tailles (voir
Section 5, Transition lors d'un changement de valeur).
Côté sphère, l'implémentation est légèrement différente, puisqu'on utilise une matrice
464
Précédent

- 465/494

Suivant