Il est possible d'utiliser la molette de la souris (en anglais,
mouse wheel) depuis la dernière incarnation de Flash Player,
en version 7. Dans les versions précédentes, manipuler
la molette signifiait agir sur la barre de défilement de la
fenêtre du navigateur, mais désormais il est possible d'agir directement
sur un champ textuel, et sur d'autres éléments avec un peu de
travail.
Par défaut, le Flash Player autorise le défilement vertical
des champs textuels pour toutes les animations Flash (toutes
versions, pas seulement celles construites avec MX 2004).
En revanche, la version 7 offre
au développeur la possibilité d'accéder à un nouvel
écouteur pour la classe Mouse,
onMouseWheel, et une nouvelle
propriété pour la classe Textfield,
mouseWheelEnabled.
Utilisation
Le défilement vertical (de haut en bas) dans un champ texte
est donc activé. Spécifier l'option Textfield.mouseWheelEnabled
= false permet d'annuler ce défilement, mais dans la
plupart des cas ce ne sera pas nécessaire, et cette propriété
reste cantonnée à quelques projets spécifiques où l'on souhaite
gérer le défilement soi-même
L'écouteur Mouse.onMouseWheel
est déjà une option plus intéressante : elle nous permet de
capturer l'événement de mouvement de la molette, et de l'appliquer
à d'autres mouvements au sein du champ texte, voire à d'autres
éléments que le champ texte.
Typiquement, la molette peut être utilisée pour modifier
une valeur autre que celle de la barre de défilement. Le plus
rapide à mettre en place est le changement de position de
n'importe quel élément. Dans l'exemple qui suit, la valeur
renvoyée par la molette déplace non plus le texte à l'intérieur
du champ, mais le champ lui-même, de gauche à droite.
field.mouseWheelEnabled = false;
souris = new Object();
souris.onMouseWheel = function(valeur) {
field._height += valeur;
}
Mouse.addListener(souris);
On peut ici inverser la direction en utilisant l'opérateur
-= au lieu de +=.
La molette peut également servir pour faire évoluer les valeurs
d'autres composants, par exemple NumericStepper.
Placer un NumericStepper sur
la scène, nommez-le "num",
et modifier le code ci-dessus comme suit :
field.mouseWheelEnabled = false;
souris = new Object();
souris.onMouseWheel = function(valeur) {
field._height += valeur;
num.value =+ valeur;
}
Mouse.addListener(souris);
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
Désormais, le mouvement de la souris provoquera à la fois
le mouvement horizontal du champ texte (et non de sa barre
de defilement), ainse que l'évolution du chiffre affiché par
le NumericStepper.
Malheureusement, la valeur renvoyée n'est pas toujours égale
à 1, mais plus souvent à 3 - sans compter que le fait de baisser
la molette renvoie la valeur 0
Pour parer à cela, il suffit
de placer des gardes-fou dans le code :
souris.onMouseWheel = function(valeur)
{
field._x += valeur;
if (valeur > 0) {
num.value += valeur-2;
}
if (valeur < 0) {
num.value += valeur+2;
}
}
Vous pouvez ainsi agir sur les valeurs de nombreux composants
et éléments Flash par le biais de la molette, ce qui peut
rendre une application Flash beaucoup plus intuitive et ergonomique
|