Documentation Flash CS3 |
|||
| Programmation avec ActionScript 3.0 > Utilisation de la géométrie > Exemple : Application d'une transformation de matrice à un objet d'affichage | |||
L'exemple d'application DisplayObjectTransformer présente de nombreuses fonctions permettant d'utiliser la classe Matrix pour transformer un objet d'affichage, notamment :
L'application fournit une interface permettant d'ajuster les paramètres de la transformation de matrice, comme suit :
Lorsque l'utilisateur clique sur le bouton de transformation, l'application applique la transformation appropriée.
L'objet d'affichage original et l'objet d'affichage pivoté de -45˚ et redimensionné de 50 %
Pour obtenir les fichiers d'application pour cet exemple, voir www.adobe.com/go/learn_programmingAS3samples_flash_fr. Les fichiers d'application DisplayObjectTransformer se trouvent dans le dossier Samples/DisplayObjectTransformer. Cette application se compose des fichiers suivants :
|
Fichier |
Description |
|---|---|
|
DisplayObjectTransformer.mxml ou DisplayObjectTransformer.fla |
Le fichier d'application principal dans Flash (FLA) ou Flex (MXML) |
|
com/example/programmingas3/geometry/MatrixTransformer.as |
Une classe qui contient des méthodes permettant d'appliquer des transformations de matrice. |
|
img/ |
Un répertoire contenant des exemples de fichiers image utilisés par l'application. |
La classe MatrixTransformer comprend des méthodes statiques qui appliquent des transformations géométriques d'objets Matrix.
La méthode transform() comprend des paramètres pour chaque élément suivant :
sourceMatrix--La matrice d'entrée, que la méthode transformexScale et yScale--Le facteur de redimensionnement x et ydx et dy--Les montants de translation x et y, en pixelsrotation--Le montant de rotation, en degrésskew--Le facteur d'inclinaison, en pourcentageskewType--Le sens d'inclinaison ("right" ou "left")La valeur renvoyée est la matrice résultante.
La méthode transform() appelle les méthodes statiques suivantes de la classe :
skew() scale() translate() rotate() Chacune renvoie la matrice source avec la transformation appliquée.
La méthode skew() incline la matrice en ajustant les propriétés b et c de la matrice. Un paramètre facultatif, unit, détermine les unités utilisées pour définir l'angle d'inclinaison et, le cas échéant, la méthode convertit la valeur angle en radians :
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
Un objet Matrix skewMatrix est créé et ajusté pour appliquer la transformation par inclinaison. Au départ, il s'agit de la matrice d'identité, comme suit :
var skewMatrix:Matrix = new Matrix();
Le paramètre skewSide détermine le côté auquel l'inclinaison est appliquée. S'il est défini sur "right", le code suivant définit la propriété b de la matrice :
skewMatrix.b = Math.tan(angle);
Autrement, le côté inférieur est incliné en ajustant la propriété c de la matrice, comme suit :
skewMatrix.c = Math.tan(angle);
L'inclinaison résultante est ensuite appliquée à la matrice existante en concaténant les deux matrices, comme indiqué dans l'exemple suivant :
sourceMatrix.concat(skewMatrix); return sourceMatrix;
Comme le montre l'exemple suivant, la méthode scale() ajuste d'abord le facteur de redimensionnement s'il est fourni sous la forme d'un pourcentage puis utilise la méthode scale() de l'objet matrix :
if (percent)
{
xScale = xScale / 100;
yScale = yScale / 100;
}
sourceMatrix.scale(xScale, yScale);
return sourceMatrix;
La méthode translate() applique simplement les facteurs de translation dx et dy en appelant la méthode translate() de l'objet matrix, comme suit :
sourceMatrix.translate(dx, dy); return sourceMatrix;
La méthode rotate() convertit le facteur de rotation d'entrée en radians (s'il est fourni en degrés ou dégradés) puis appelle la méthode rotate() de l'objet matrix :
if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
sourceMatrix.rotate(angle);
return sourceMatrix;
L'application contient une interface utilisateur permettant d'obtenir les paramètres de transformation de l'utilisateur. Elle les transmet ensuite, avec la propriété matrix de la propriété transform de l'objet d'affichage, à la méthode Matrix.transform(), comme suit :
tempMatrix = MatrixTransformer.transform(tempMatrix,
xScaleSlider.value,
yScaleSlider.value,
dxSlider.value,
dySlider.value,
rotationSlider.value,
skewSlider.value,
skewSide );
L'application applique ensuite la valeur renvoyée à la propriété matrix de la propriété transform de l'objet d'affichage. Ainsi, la transformation est déclenchée :
img.content.transform.matrix = tempMatrix;
Flash CS3
M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire
Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000189.html