flash.geomUtils3D La classe Utils3D contient des méthodes statiques qui simplifient l’implémentation de certaines opérations de matrices tridimensionnelles.Classe d’utilitaires avec méthodes statiques qui simplifient l’implémentation de certaines opérations tridimensionnelles. Object La classe Utils3D contient des méthodes statiques qui simplifient l’implémentation de certaines opérations de matrices tridimensionnelles. flash.geom.Matrix3Dflash.geom.Vector3Dflash.geom.Transformflash.geom.PerspectiveProjectionflash.display.Graphicsflash.display.GraphicsTrianglePathVectorpointTowards Interpole l’orientation d’un objet par rapport à une position.Version modifiée de l’objet Matrix3D spécifié dans le second paramètre. Pour transformer l’objet d’affichage à l’aide de la méthode pointTowards(), définissez la propriété Matrix3D de l’objet d’affichage sur l’objet Matrix3D renvoyé. flash.geom:Matrix3DpercentNumberNombre compris entre 0 et 1 qui tourne progressivement (par incrément) l’objet vers la cible. matflash.geom:Matrix3DPropriété Matrix3D de l’objet transformé. posflash.geom:Vector3DPosition par rapport au monde de l’objet cible. Le terme « par rapport au monde » définit la transformation de l’objet par rapport à l’espace monde et aux coordonnées, dans lequel tous les objets sont positionnés. atflash.geom:Vector3DnullVecteur relatif à l’objet qui définit l’endroit vers lequel pointe l’objet d’affichage. Le terme « relatif à l’objet » définit la transformation de l’objet par rapport à l’espace objet, la propre image de référence de l’objet et son propre système de coordonnées. La valeur par défaut est (0,0,-1). upflash.geom:Vector3DnullVecteur relatif à l’objet qui définit « up » pour l’objet d’affichage. Si l’objet est dessiné tel que regardant vers le bas à partir du point ci-dessus, l’axe +z est son vecteur « up ». Le terme « relatif à l’objet » définit la transformation de l’objet par rapport à l’espace objet, la propre image de référence de l’objet et son propre système de coordonnées. La valeur par défaut est (0,-1,0). Interpole l’orientation d’un objet par rapport à une position. La méthode pointTowards() combine les fonctionnalités des méthodes Matrix3D.pointAt() et Matrix3D.interpolateTo().

La méthode pointTowards() autorise des modifications en place de l’orientation. Elle décompose la Matrix3D de l’objet d’affichage et remplace les éléments de rotation par ceux qui entraînent une rotation en pourcentage vers la position de la cible. L’objet peut se tourner progressivement vers la cible tout en continuant à se déplacer dans sa propre direction. Les appels consécutifs à la méthode pointTowards() suivis d’une méthode de translation peuvent produire l’animation d’un objet poursuivant une cible en déplacement. Commencez par faire pointer l’objet d’un pour cent vers la cible, puis déplacez progressivement (par incrément) l’objet le long d’un axe.

flash.geom.Matrix3D.pointAt()flash.geom.Matrix3D.interpolateTo()flash.geom.Matrix3D.interpolate()
projectVectors A l’aide d’un objet de projection Matrix3D, projette un vecteur de coordonnées tridimensionnelles (verts) sur un vecteur de coordonnées bidimensionnelles (projectedVerts).mflash.geom:Matrix3DObjet de projection Matrix3D qui implémente la transformation de la projection. Vous pouvez produire un objet de projection Matrix3D à l’aide de la propriété Matrix3D.rawData. vertsVecteur de nombres, où chaque triplet de nombres représentent les coordonnées x, y et z d’un espace tridimensionnel, tel que Vector3D(x,y,z). projectedVertsVecteur de nombres, où chaque paire de nombres représente une coordonnée bidimensionnelle projetée, telle que Point(x,y). Il est préférable de préaffecter l’objet Vector. La méthode projectVectors() remplit les valeurs de chaque point projeté. uvtsVecteur de nombres, où chaque triplet de nombres représente les éléments u, v et t des données uvt. Les valeurs u et v représentent la coordonnée de texture de chaque point projeté. La valeur t est la valeur de profondeur de la projection, ou distance entre l’oeil et l’objet Vector3D dans l’espace d’affichage ou visuel. Il est préférable de préaffecter le vecteur et de spécifier les valeurs u et v. La méthode projectVectors() renseigne la valeur t de chaque point projeté. Projette un vecteur de coordonnées tridimensionnelles sur un vecteur de coordonnées bidimensionnelles. A l’aide d’un objet de projection Matrix3D, projette un vecteur de coordonnées tridimensionnelles (verts) sur un vecteur de coordonnées bidimensionnelles (projectedVerts). L’objet Vector projeté doit être préaffecté avant d’être utilisé comme paramètre.

La méthode projectVectors() définit également la valeur t des données uvt. Il est préférable de préaffecter l’objet Vector détenant les données uvts de chaque jeu de coordonnées d’un objet Vector projeté. De la même façon, spécifiez les valeurs u et v des données uvt. Les données uvt représentent un vecteur de coordonnées normalisées utilisé pour le mappage de la texture. Dans coordonnées UV, (0,0) est le coin supérieur gauche de l’image bitmap et (1,1) le coin inférieur droit.

Cette méthode peut être utilisée en combinaison avec la méthode Graphics.drawTriangles() et la classe GraphicsTrianglePath.

flash.display.Graphics.drawTriangles()flash.display.GraphicsTrianglePathflash.geom.Matrix3DprojectVector()Vector
projectVector A l’aide d’un objet de projection Matrix3D, projette un objet Vector3D d’une coordonnée spatiale vers une autre.Nouveau Vector3D avec une coordonnée spatiale transformée. flash.geom:Vector3Dmflash.geom:Matrix3DObjet de projection Matrix3D qui implémente la transformation de la projection. Si un objet d’affichage dispose d’un objet PerspectiveProjection, vous pouvez utiliser la méthode perspectiveProjection.toMatrix() pour produire un objet de projection Matrix3D s’appliquant aux enfants de l’objet d’affichage. Pour des projections plus avancées, utilisez la propriété matrix3D.rawData pour créer une matrice de projection personnalisée. Aucune méthode Matrix3D intégrée ne permet de créer un objet de projection Matrix3D. vflash.geom:Vector3DObjet Vector3D projeté vers une nouvelle coordonnée spatiale. A l’aide d’un objet de projection Matrix3D, projette un objet Vector3D d’une coordonnée spatiale vers une autre. La méthode projectVector() est identique à la méthode Matrix3D.transformVector() si ce n’est que la méthode projectVector() divise les éléments x, y et z de l’objet Vector3D d’origine par la valeur de profondeur de la projection. La valeur de profondeur est la distance qui sépare l’oeil de l’objet Vector3D dans l’espace visuel ou d’affichage. La valeur par défaut de cette distance est celle de l’élément z. flash.geom.Matrix3D.transformVector()projectVectors()
Vector3D La classe Vector3D représente un point ou un emplacement dans l’espace tridimensionnel à l’aide de coordonnées cartésiennes (x,y,z).Object La classe Vector3D représente un point ou un emplacement dans l’espace tridimensionnel à l’aide de coordonnées cartésiennes (x,y,z). Comme dans un espace à deux dimensions, la propriété x représente l’axe horizontal et la propriété y l’axe vertical. Dans l’espace à trois dimensions, la propriété z représente la profondeur. La valeur de la propriété x augmente lorsque l’objet se déplace vers la droite. La valeur de la propriété y augmente lorsque l’objet se déplace vers le bas. La valeur de la propriété z augmente lorsque l’objet s’éloigne du point de vue. Avec une projection de perspective et une mise à l’échelle, l’objet semble grossir lorsqu’il est proche et diminuer lorsqu’il s’éloigne de l’écran. Comme dans un système tridimensionnel dirigé vers la droite, l’axe z positif s’éloigne de l’observateur et la valeur de la propriété z augmente au fur et à mesure que l’objet s’éloigne de l’oeil de l’observateur. Le point d’origine (0,0,0) de l’espace global est le coin supérieur gauche de la scène.

La classe Vector3D peut également représenter une direction, une flèche pointant de l’origine des coordonnées, par exemple (0,0,0), vers un point de fin ; ou un composant à virgule flottante du modèle de couleur RVB (Rouge, Vert, Bleu).

La notation quaternion introduit un quatrième élément, la propriété w, qui donne des informations supplémentaires sur l’orientation. Par exemple, la propriété w peut définir l’angle de rotation d’un objet Vector3D. La combinaison de l’angle de rotation et des coordonnées x, y et z peut déterminer l’orientation de l’objet d’affichage. Voici une représentation d’éléments Vector3D dans une notation matricielle :

flash.display.DisplayObjectflash.geom.Pointflash.geom.Matrix3Dflash.geom.Utils3DVectorVector3D Crée une occurrence d’objet Vector3D.xNumber0.Premier élément, par exemple la coordonnée x. yNumber0.Deuxième élément, par exemple la coordonnée y. zNumber0.Troisième élément, par exemple la coordonnée z. wNumber0.Elément facultatif pour des données supplémentaires telles que l’angle de rotation. Crée une occurrence d’objet Vector3D. Si vous ne spécifiez pas de paramètre pour le constructeur, un objet Vector3D est créé avec les éléments (0,0,0,0). add Ajoute la valeur des éléments x, y et z de l’objet Vector3D actuel aux valeurs des éléments x, y et z d’un autre objet Vector3D.Objet Vector3D résultant de l’ajout de l’objet Vector3D actuel à un autre objet Vector3D. flash.geom:Vector3Daflash.geom:Vector3DObjet Vector3D à ajouter à l’objet Vector3D actuel. Ajoute l’objet Vector3D actuel à un autre pour créer un nouvel objet Vector3D. Ajoute la valeur des éléments x, y et z de l’objet Vector3D actuel aux valeurs des éléments x, y et z d’un autre objet Vector3D. La méthode add() ne change pas l’objet Vector3D actuel, mais renvoie un nouvel objet Vector3D avec les nouvelles valeurs.

L’addition des deux vecteurs résulte en un autre vecteur. Pour visualiser le résultat, il suffit de tracer un vecteur de l’origine ou la queue du premier vecteur jusqu’à la fin ou la tête du second vecteur. Le vecteur résultant est la distance entre le point d’origine du premier vecteur et le point de fin du second.

incrementBy()
angleBetween Renvoie l’angle entre deux vecteurs, en radians.Angle entre deux objets Vector3D. Numberaflash.geom:Vector3DPremier objet Vector3D. bflash.geom:Vector3DDeuxième objet Vector3D. Renvoie l’angle entre deux vecteurs, en radians. L’angle renvoyé est le plus petit radian selon lequel le premier objet Vector3D pivote jusqu’à ce qu’il soit aligné sur le deuxième objet Vector3D.

La méthode angleBetween() est une méthode statique. Vous pouvez l’utiliser directement en tant que méthode de la classe Vector3D.

Pour convertir un degré en radian, vous pouvez utiliser la formule suivante :

radian = Math.PI/180 ~~ degré

clone Renvoie un nouvel objet Vector3D qui est une copie exacte de l’objet Vector3D actuel.Nouvel objet Vector3D qui est une copie de l’objet Vector3D actuel. flash.geom:Vector3D Renvoie un nouvel objet Vector3D qui est une copie exacte de l’objet Vector3D actuel. crossProduct Renvoie un nouvel objet Vector3D perpendiculaire (à angle droit) à l’objet Vector3D actuel et à un autre objet Vector3D.Nouvel objet Vector3D perpendiculaire à l’objet Vector3D actuel et à l’objet Vector3D spécifié sous forme de paramètre. flash.geom:Vector3Daflash.geom:Vector3DDeuxième objet Vector3D. Renvoie un nouvel objet Vector3D perpendiculaire (à angle droit) à l’objet Vector3D actuel et à un autre objet Vector3D. Si les coordonnées de l’objet Vector3D renvoyé sont (0,0,0), les deux objets Vector3D sont perpendiculaires entre eux.

Vous pouvez utiliser le produit vectoriel normalisé de deux sommets d’une surface polygonale par le vecteur normalisé du point de vue de la caméra ou de l’oeil pour obtenir un produit scalaire. La valeur du produit scalaire indique si la surface d’un objet tridimensionnel est invisible pour le point de vue.

dotProduct()normalize()
decrementBy Décrémente la valeur des éléments x, y et z de l’objet Vector3D actuel par les valeurs des éléments x, y et z de l’objet Vector3D spécifié.aflash.geom:Vector3DObjet Vector3D contenant les valeurs à soustraire de l’objet Vector3D actuel. Décrémente l’objet Vector3D actuel par un autre objet Vector3D. Décrémente la valeur des éléments x, y et z de l’objet Vector3D actuel par les valeurs des éléments x, y et z de l’objet Vector3D spécifié. Contrairement à la méthode Vector3D.subtract(), la méthode decrementBy() change l’objet Vector3D actuel et ne renvoie pas de nouvel objet Vector3D. subtract()distance Renvoie la distance entre deux objets Vector3D.Distance entre deux objets Vector3D. Numberpt1flash.geom:Vector3DObjet Vector3D en tant que premier point tridimensionnel. pt2flash.geom:Vector3DObjet Vector3D en tant que second point tridimensionnel. Renvoie la distance entre deux objets Vector3D. La méthode distance() est une méthode statique. Vous pouvez l’utiliser directement en tant que méthode de la classe Vector3D pour obtenir la distance euclidienne entre deux points tridimensionnels. dotProduct Si l’objet Vector3D actif et celui spécifié en tant que paramètre sont des sommets unitaires, cette méthode renvoie le cosinus de l’angle séparant les deux sommets.Scalaire correspondant au produit scalaire de l’objet Vector3D actuel et de l’objet Vector3D spécifié. Numberaflash.geom:Vector3DDeuxième objet Vector3D. Renvoie le produit scalaire de l’objet actuel avec un autre objet Vector3D. Si l’objet Vector3D actif et celui spécifié en tant que paramètre sont des sommets unitaires, cette méthode renvoie le cosinus de l’angle séparant les deux sommets. Les sommets unitaires sont des sommets qui pointent dans la même direction mais dont la longueur est égale à un. Ils retirent la longueur du vecteur en tant que facteur dans le résultat. Vous pouvez utiliser la méthode normalize() pour convertir un vecteur en vecteur unitaire.

La méthode dotProduct() recherche l’angle séparant deux sommets. Elle est également utilisée pour le calcul du backface culling (élimination des faces cachées) ou de l’éclairage. Le backface culling est une procédure qui consiste à identifier les surfaces invisibles à partir du point de vue. Vous pouvez utiliser les sommets normalisés du point de vue de l’appareil photo, ou de l’oeil, et le produit vectoriel des sommets d’une surface polygonale pour obtenir le produit scalaire. Si le produit scalaire est inférieur à zéro, la surface fait face à l’objectif ou à l’observateur. Si les deux sommets unitaires sont perpendiculaires entre eux, ils sont orthogonaux et le produit scalaire est égal à zéro. Si les deux sommets sont parallèles entre eux, le produit scalaire est égal à un.

crossProduct()normalize()
equals Détermine si deux objets Vector3D sont égaux en comparant les éléments x, y et z de l’objet Vector3D actuel à un objet Vector3D spécifié.La valeur est true si l’objet Vector3D spécifié est égal à l’objet Vector3D actuel ; false s’ils ne sont pas égaux. BooleantoCompareflash.geom:Vector3DObjet Vector3D à comparer à l’objet Vector3D actuel. allFourBooleanfalseParamètre facultatif qui spécifie si la propriété w des objets Vector3D est utilisée dans la comparaison. Détermine si deux objets Vector3D sont égaux en comparant les éléments x, y et z de l’objet Vector3D actuel à un objet Vector3D spécifié. Si les valeurs de ces éléments sont identiques, les deux objets Vector3D sont égaux. Si le second paramètre est défini sur true, les quatre éléments des objets Vector3D, y compris la propriété w, sont comparés. nearEquals()incrementBy Incrémente la valeur des éléments x, y et z de l’objet Vector3D actuel en fonction des valeurs des éléments x, y et z d’un objet Vector3D spécifié.aflash.geom:Vector3DObjet Vector3D à ajouter à l’objet Vector3D actuel. Incrémente l’objet Vector3D actuel par un autre objet Vector3D. Incrémente la valeur des éléments x, y et z de l’objet Vector3D actuel en fonction des valeurs des éléments x, y et z d’un objet Vector3D spécifié. Contrairement à la méthode Vector3D.add(), la méthode incrementBy() change l’objet Vector3D actuel et ne renvoie pas de nouvel objet Vector3D. add()nearEquals Compare les éléments de l’objet Vector3D actuel et ceux d’un objet Vector3D spécifié afin de déterminer s’ils sont à peu près égaux.La valeur est true si l’objet Vector3D spécifié est à peu près égal à l’objet Vector3D actuel ; false dans le cas contraire. BooleantoCompareflash.geom:Vector3DObjet Vector3D à comparer à l’objet Vector3D actuel. toleranceNumberNombre déterminant le facteur de tolérance. Si la différence entre les valeurs de l’élément Vector3D spécifié dans le paramètre toCompare et l’élément Vector3D actuel est inférieure au nombre de tolérance, les deux valeurs sont considérées comme quasiment égales. allFourBooleanfalseParamètre facultatif qui spécifie si la propriété w des objets Vector3D est utilisée dans la comparaison. Compare les éléments de l’objet Vector3D actuel et ceux d’un objet Vector3D spécifié afin de déterminer s’ils sont à peu près égaux. Les deux objets Vector3D sont à peu près égaux si la valeur de tous les éléments des deux sommets sont égaux, ou si le résultat de la comparaison est comprise dans la plage de tolérance. La différence entre deux éléments doit être inférieure au nombre spécifié en tant que paramètre tolerance. Si le troisième paramètre facultatif est défini sur true, les quatre éléments des objets Vector3D, y compris la propriété w, sont comparés. Dans le cas contraire, seuls les éléments x, y et z sont inclus dans la comparaison. equals()negate Définit l’objet Vector3D actuel sur son inverse. Définit l’objet Vector3D actuel sur son inverse. L’objet inverse est également considéré comme l’opposé de l’objet d’origine. La valeur des propriétés x, y et z de l’objet Vector3D actuel est modifiée en -x, -y et -z. normalize Convertit un objet Vector3D en vecteur unitaire en divisant les trois premiers éléments (x, y, z) par la longueur du vecteur.Longueur de l’objet Vector3D actuel. Number Convertit un objet Vector3D en vecteur unitaire en divisant les trois premiers éléments (x, y, z) par la longueur du vecteur. Les sommets unitaires sont des sommets qui ont une direction mais dont la longueur est égale à un. Ils simplifient les calculs de vecteur en supprimant la longueur en tant que facteur. project Divise la valeur des propriétés x, y et z de l’objet Vector3D actuel par la valeur de sa propriété w. Divise la valeur des propriétés x, y et z de l’objet Vector3D actuel par la valeur de sa propriété w.

Si l’objet Vector3D actuel résulte de la multiplication d’un objet Vector3D par un objet Matrix3D de projection, la propriété w peut détenir la valeur de transformation. La méthode project() peut alors compléter la projection en divisant les éléments par la propriété w. Utilisez la propriété Matrix3D.rawData pour créer un objet de Matrix3D de projection.

scaleBy Met à l’échelle l’objet Vector3D actuel en multipliant par un nombre scalaire, une amplitude.sNumberMultiplicateur (scalaire) utilisé pour mettre un objet Vector3D à l’échelle. Met à l’échelle l’objet Vector3D actuel en multipliant par un nombre scalaire, une amplitude. Les éléments x, y et z de l’objet Vector3D sont multipliés par le nombre scalaire spécifié dans le paramètre. Par exemple, si le vecteur est mis à l’échelle par une multiplication par 10, le résultat est un vecteur 10 fois plus grand. Le nombre scalaire peut également changer la direction du vecteur. La multiplication du vecteur par un nombre négatif inverse sa direction. subtract Soustrait la valeur des éléments x, y et z de l’objet Vector3D actuel des valeurs des éléments x, y et z d’un autre objet Vector3D.Nouvel objet Vector3D correspondant à la différence entre l’objet Vector3D actuel et l’objet Vector3D spécifié. flash.geom:Vector3Daflash.geom:Vector3DObjet Vector3D à soustraire de l’objet Vector3D actuel. Soustrait l’objet Vector3D actuel d’un autre objet Vector3D pour créer un nouvel objet Vector3D. Soustrait la valeur des éléments x, y et z de l’objet Vector3D actuel des valeurs des éléments x, y et z d’un autre objet Vector3D. La méthode subtract() ne change pas l’objet Vector3D actuel, mais renvoie un nouvel objet Vector3D avec les nouvelles valeurs. decrementBy()toString Renvoie une représentation sous forme de chaîne de l’objet Vector3D actuel.Chaîne contenant les valeurs des propriétés x, y et z. String Renvoie une représentation sous forme de chaîne de l’objet Vector3D actuel. Chaîne contenant les valeurs des propriétés x, y et z. X_AXIS Axe x défini en tant qu’objet Vector3D avec les coordonnées (1,0,0).unknownflash.geom:Vector3D Axe x défini en tant qu’objet Vector3D avec les coordonnées (1,0,0). Y_AXIS Axe y défini en tant qu’objet Vector3D avec les coordonnées (0,1,0).unknownflash.geom:Vector3D Axe y défini en tant qu’objet Vector3D avec les coordonnées (0,1,0). Z_AXIS Axe z défini en tant qu’objet Vector3D avec les coordonnées (0,0,1).unknownflash.geom:Vector3D Axe z défini en tant qu’objet Vector3D avec les coordonnées (0,0,1). w Le quatrième élément d’un objet Vector3D (en plus des propriétés x, y et z) peut détenir des données telles que l’angle de rotation.Number Le quatrième élément d’un objet Vector3D (en plus des propriétés x, y et z) peut détenir des données telles que l’angle de rotation. La valeur par défaut est 0.

La notation quaternion emploie un angle comme quatrième élément dans son calcul de la rotation tridimensionnelle. La propriété w peut être utilisée pour définir l’angle de rotation autour de l’objet Vector3D. La combinaison de l’angle de rotation et des coordonnées (x,y,z) détermine l’orientation de l’objet d’affichage.

De plus, la propriété w peut être utilisée en tant que facteur de déformation de la perspective pour une position tridimensionnelle projetée, ou en tant que valeur de transformation de la projection lors de la représentation d’une coordonnée tridimensionnelle projetée dans un espace à deux dimensions. Par exemple, vous pouvez créer une matrice de projection à l’aide de la propriété Matrix3D.rawData, qui, une fois appliquée à un objet Vector3D, produit une valeur de transformation dans le quatrième élément de l’objet Vector3D (la propriété w). La division des autres éléments de l’objet Vector3D par la valeur de transformation produit alors un objet Vector3D projeté. Vous pouvez utiliser la méthode Vector3D.project() pour diviser les trois premiers éléments d’un objet Vector3D par son quatrième élément.

project()
x Premier élément d’un objet Vector3D, par exemple la coordonnée x d’un point dans l’espace tridimensionnel.Number Premier élément d’un objet Vector3D, par exemple la coordonnée x d’un point dans l’espace tridimensionnel. La valeur par défaut est 0. y Second élément d’un objet Vector3D, par exemple la coordonnée y d’un point dans l’espace tridimensionnel.Number Second élément d’un objet Vector3D, par exemple la coordonnée y d’un point dans l’espace tridimensionnel. La valeur par défaut est 0. z Troisième élément d’un objet Vector3D, par exemple la coordonnée z d’un point dans l’espace tridimensionnel.Number Troisième élément d’un objet Vector3D, par exemple la coordonnée z d’un point dans l’espace tridimensionnel. La valeur par défaut est 0. lengthSquared Carré de la longueur de l’objet Vector3D actuel, calculé à l’aide des propriétés x, y, et z.NumberCarré de la longueur de l’objet Vector3D actuel. Carré de la longueur de l’objet Vector3D actuel, calculé à l’aide des propriétés x, y et z. La propriété w est ignorée. Utilisez la méthode lengthSquared() chaque fois que possible à la place de l’appel à la méthode Math.sqrt(), plus lent, de la méthode Vector3D.length(). lengthlength Longueur, amplitude, de l’objet Vector3D actuel depuis l’origine (0,0,0) jusqu’aux coordonnées x, y et z de l’objet.NumberLongueur de l’objet Vector3D actuel. Longueur, amplitude, de l’objet Vector3D actuel depuis l’origine (0,0,0) jusqu’aux coordonnées x, y et z de l’objet. La propriété w est ignorée. Le vecteur unitaire a une longueur ou une amplitude égale à un. lengthSquared
Matrix3D La classe Matrix3D représente une matrice de transformation qui détermine la position et l’orientation d’un l’objet d’affichage tridimensionnel (3D).Object La classe Matrix3D représente une matrice de transformation qui détermine la position et l’orientation d’un l’objet d’affichage tridimensionnel (3D). La matrice peut exécuter des fonctions de transformation : translation (repositionnement le long des axes x, y et z), rotation et mise à l’échelle (redimensionnement), entre autres. La classe Matrix3D peut également exécuter une projection en perspective, qui mappe des points de l’espace de coordonnées 3D sur un affichage bidimensionnel (2D).

Une seule matrice peut combiner plusieurs transformations et les appliquer simultanément à un objet d’affichage 3D. Par exemple, une matrice peut être appliquée à des coordonnées 3D et effectuer une rotation, puis une translation.

Lorsque vous définissez de façon explicite la propriété z ou l’une des propriétés de rotation ou de mise à l’échelle d’un objet d’affichage, un objet Matrix3D correspondant est automatiquement créé.

Vous pouvez accéder à l’objet Matrix3D d’un objet d’affichage 3D par le biais de la propriété transform.matrix3d. Les objets 2D ne possèdent pas d’objet Matrix3D.

La valeur de la propriété z d’un objet 2D est zéro et la valeur de sa propriété matrix 3D est null.

Remarque : si le même objet Matrix3D est attribué à deux objets d’affichage distincts, une erreur d’exécution est renvoyée.

La classe Matrix3D utilise une matrice carrée 4x4 : une table de quatre lignes et colonnes de nombres qui contiennent les données de la transformation. Les trois premières lignes de la matrice contiennent les données de chaque axe 3D (x,y,z). Les informations de translation sont dans la dernière colonne. Les données d’orientation et de mise à l’échelle sont dans les trois premières colonnes. Les facteurs de mise à l’échelle sont les nombres situés dans les diagonales des trois premières colonnes. Voici une représentation d’éléments Matrix3D :

Il n’est pas nécessaire de comprendre les mathématiques matricielles pour pouvoir utiliser la classe Matrix3D. Elle offre des méthodes spécifiques qui simplifient la tâche de la transformation et de la projection : appendTranslation(), appendRotation() et interpolateTo(). Vous pouvez également utiliser les méthodes decompose() et recompose() ou la propriété rawData pour accéder aux éléments de la matrice sous-jacente.

Les objets d’affichage mettent en cache les propriétés de rotation de leurs axes pour obtenir une rotation distincte pour chaque axe et gérer les différentes combinaisons de rotation. Lorsqu’une méthode d’un objet Matrix3D est appelée pour transformer un objet d’affichage, le cache de la rotation de l’objet est invalidé.

flash.display.DisplayObjectflash.geom.Transformflash.geom.PerspectiveProjectionflash.geom.Vector3Dflash.geom.Orientation3Dflash.geom.Utils3Dflash.geom.MatrixMatrix3D Crée un objet Matrix3D.vnullObjet Vector de seize nombres, dans lequel chaque groupe de quatre éléments peut être une ligne ou une colonne d’une matrice 4x4. Crée un objet Matrix3D. Les objets Matrix3D peuvent être initialisés avec un objet Vector de 16 nombres, où chaque groupe de quatre éléments peut être une ligne ou une colonne. Après la création de l’objet Matrix3D, vous pouvez accéder aux éléments de sa matrice par la propriété rawData.

Si aucun paramètre n’est défini, le constructeur produit un objet Matrix3D d’identité ou unitaire. Dans la notation des matrices, une matrice d’identité a une valeur de un pour tous les éléments situés sur la diagonale principale et une valeur de zéro pour tous les autres éléments. La valeur de la propriété rawData d’une matrice d’identité est : 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1. La position ou la valeur de translation de la matrice d’identité est Vector3D(0,0,0), le paramètre de rotation est Vector3D(0,0,0) et la valeur de mise à l’échelle est Vector3D(1,1,1).

identity()Vector
appendRotation Ajoute une rotation incrémentielle à la fin d’un objet Matrix3D.degreesNumberDegré de la rotation. axisflash.geom:Vector3DAxe ou direction de la rotation. Les axes habituels sont X_AXIS (Vector3D(1,0,0)), Y_AXIS (Vector3D(0,1,0)) et Z_AXIS (Vector3D(0,0,1)). pivotPointflash.geom:Vector3DnullPoint qui détermine le centre de la rotation d’un objet. Le point de pivot par défaut d’un objet est son point d’alignement. Ajoute une rotation incrémentielle à la fin d’un objet Matrix3D. Lorsque l’objet Matrix3D est appliqué à un objet d’affichage, la matrice exécute la rotation après les autres transformations dans l’objet Matrix3D.

La rotation de l’objet d’affichage est définie par un axe, un degré incrémentiel de rotation autour de l’axe et un point de pivot facultatif pour le centre de la rotation de l’objet. L’axe peut être toute direction générale. Les axes courants sont X_AXIS (Vector3D(1,0,0)), Y_AXIS (Vector3D(0,1,0)) et Z_AXIS (Vector3D(0,0,1)). Dans la terminologie de l’aviation, la rotation autour de l’axe y est appelée lacet. La rotation autour de l’axe x est appelée tangage ou pas. La rotation autour de l’axe z est appelée roulis.

L’ordre des transformations a son importance. Une rotation suivie d’une transformation de translation n’a pas le même effet qu’une translation suivie d’une transformation de rotation.

L’effet de la rotation n’est pas absolu. Il est relatif à la position et à l’orientation actuelles. Pour apporter une modification absolue à la matrice de transformation, utilisez la méthode recompose(). La méthode appendRotation() diffère également de la propriété rotation de l’axe de l’objet d’affichage, telle que la propriété rotationX. La propriété rotation est toujours exécutée avant toute translation, puisque la méthode appendRotation() est exécutée par rapport à tout élément déjà présent dans la matrice. Pour être certain d’obtenir un effet similaire à la propriété rotation de l’axe de l’objet d’affichage, utilisez la méthode prependRotation(), qui exécute la rotation avant les autres transformations dans la matrice.

Lorsque la transformation de la méthode appendRotation() est appliquée à un objet Matrix3D d’un objet d’affichage, les valeurs mises en cache de la propriété rotation de l’objet d’affichage sont invalidées.

Pour qu’un objet d’affichage pivote autour d’un point spécifique par rapport à son emplacement, une méthode consiste à définir la translation de l’objet sur le point spécifié, à faire pivoter l’objet avec la méthode appendRotation() et à lui appliquer une translation pour le ramener dans sa position d’origine. Dans l’exemple suivant, l’objet d’affichage 3D myObject effectue une rotation sur l’axe y autour de la coordonnée (10,10,0).

myObject.z = 1; myObject.transform.matrix3D.appendTranslation(10,10,0); myObject.transform.matrix3D.appendRotation(1, Vector3D.Y_AXIS); myObject.transform.matrix3D.appendTranslation(-10,-10,0);
prependRotation()
appendScale Ajoute un changement d’échelle incrémentiel le long des axes x, y et z à la fin d’un objet Matrix3D.xScaleNumberMultiplicateur utilisé pour redimensionner l’objet le long de l’axe x. yScaleNumberMultiplicateur utilisé pour redimensionner l’objet le long de l’axe y. zScaleNumberMultiplicateur utilisé pour redimensionner l’objet le long de l’axe z. Ajoute un changement d’échelle incrémentiel le long des axes x, y et z à la fin d’un objet Matrix3D. Lorsque l’objet Matrix3D est appliqué à un objet d’affichage, la matrice exécute les changements d’échelle après les autres transformations dans l’objet Matrix3D. Le facteur d’échelle par défaut est (1.0, 1.0, 1.0).

L’échelle est définie comme un ensemble de trois modifications incrémentielles le long des trois axes (x,y,z). Vous pouvez multiplier chaque axe par un nombre différent. Lorsque des modifications d’échelle sont appliquées à un objet d’affichage, la taille de l’objet augmente ou diminue. Par exemple, définir les axes x, y et z sur deux double la taille de l’objet, alors que définir les axes sur 0.5 réduit la taille de moitié. Pour être certain que la transformation d’échelle n’affecte qu’un axe spécifique, définissez les autres paramètres sur un. Un paramètre de un signifie qu’aucune modification d’échelle n’est apportée le long de l’axe spécifique.

La méthode appendScale() peut être utilisée pour le redimensionnement mais aussi pour la gestion des distorsions, par exemple pour étirer ou rétrécir un objet d’affichage, ou pour faire un zoom avant ou arrière sur un emplacement. Les transformations d’échelle sont exécutées automatiquement pendant la rotation et la translation d’un objet d’affichage.

L’ordre des transformations a son importance. Un redimensionnement suivi d’une transformation de translation n’a pas le même effet qu’une translation suivie d’une transformation de redimensionnement.

prependScale()
appendTranslation Ajoute une translation incrémentielle, repositionnement le long des axes x, y et z, à la fin d’un objet Matrix3D.xNumberTranslation incrémentielle le long de l’axe x. yNumberTranslation incrémentielle le long de l’axe y. zNumberTranslation incrémentielle le long de l’axe z. Ajoute une translation incrémentielle, repositionnement le long des axes x, y et z, à la fin d’un objet Matrix3D. Lorsque l’objet Matrix3D est appliqué à un objet d’affichage, la matrice effectue les modifications de translation après les autres transformations dans l’objet Matrix3D.

La translation est définie comme un ensemble de trois modifications incrémentielles le long des trois axes (x,y,z). Lorsque la transformation est appliquée à un objet d’affichage, celui-ci se déplace de son point d’origine le long des axes x, y et z, tel que spécifié par les paramètres. Pour être certain que la translation n’affecte qu’un axe spécifique, définissez les autres paramètres sur zéro. Un paramètre de valeur zéro signifie qu’aucune modification n’a lieu le long de l’axe spécifique.

Les modifications de translation ne sont pas absolues. Elles sont relatives à la position et à l’orientation actuelles de la matrice. Pour apporter une modification absolue à la matrice de transformation, utilisez la méthode recompose(). L’ordre des transformations a aussi son importance. Une translation suivie d’une transformation de rotation n’a pas le même effet qu’une rotation suivie d’une translation.

prependTranslation()position
append Ajoute la matrice en multipliant un autre objet Matrix3D par l’objet Matrix3D actuel.lhsflash.geom:Matrix3DMatrice gauche multipliée par l’objet Matrix3D actuel. Ajoute la matrice en multipliant un autre objet Matrix3D par l’objet Matrix3D actuel. Le résultat combine les deux transformations de matrice. Vous pouvez multiplier un objet Matrix3D par de nombreuses matrices. L’objet Matrix3D final contient le résultat de toutes les transformations.

Les multiplications de matrices diffèrent des additions de matrices. La multiplication de matrices n’est pas commutative. En d’autres termes, A fois B n’est pas égal à B fois A. Avec la méthode append(), la multiplication s’effectue à partir du côté gauche, ce qui signifie que l’objet Matrix3D lhs est situé à gauche de l’opérateur de la multiplication.

thisMatrix = lhs ~~ thisMatrix;

La première fois que la méthode append() est appelée, elle effectue une modification par rapport à l’espace parent. Les appels suivants sont relatifs à l’image de référence de l’objet Matrix3D ajouté.

La méthode append() remplace la matrice actuelle par la matrice ajoutée. Si vous souhaitez ajouter deux matrices sans modifier la matrice actuelle, copiez cette dernière à l’aide de la méthode clone() et appliquez la méthode append() à la copie.

flash.geom.Matrix3D.prepend()
clone Renvoie un nouvel objet Matrix3D qui est une copie exacte de l’objet Matrix3D actuel.Nouvel objet Matrix3D qui est une copie exacte de l’objet Matrix3D actuel. flash.geom:Matrix3D Renvoie un nouvel objet Matrix3D qui est une copie exacte de l’objet Matrix3D actuel. decompose Renvoie les paramètres de translation, de rotation et d’échelle de la matrice de transformation, sous forme de vecteur de trois objets Vector3D.Vecteur de trois objets Vector3D, contenant chacun les paramètres de translation, de rotation et de mise à l’échelle, respectivement. orientationStyleStringeulerAnglesParamètre facultatif qui détermine le style d’orientation utilisé pour la transformation de la matrice. Les trois types de style d’orientation sont eulerAngles (EULER_ANGLES constants), axisAngle (AXIS_ANGLE constant) et quaternion (QUATERNION constant). Pour plus d’informations sur les différents styles d’orientation, voir la classe geom.Orientation3D. Renvoie les paramètres de translation, de rotation et d’échelle de la matrice de transformation, sous forme de vecteur de trois objets Vector3D. Le premier objet Vector3D détient les éléments de translation. Le deuxième objet Vector3D détient les éléments de rotation. Le troisième objet Vector3D détient les éléments d’échelle.

Certaines méthodes Matrix3D, par exemple interpolateTo(), décomposent et recomposent automatiquement la matrice pour effectuer leur transformation.

Pour modifier la transformation de la matrice avec une image de référence de parent absolu, récupérez les paramètres avec la méthode decompose() et apportez les modifications appropriées. Vous pouvez alors définir l’objet Matrix3D sur la transformation modifiée à l’aide de la méthode recompose().

Le paramètre de la méthode decompose() définit le style d’orientation à utiliser pour la transformation. L’orientation par défaut est eulerAngles, qui définit l’orientation avec trois angles de rotation distincts pour chaque axe. Les rotations s’effectuent consécutivement et ne modifient pas l’axe des autres rotations. Les propriétés de rotation de l’axe de l’objet d’affichage effectuent une transformation de style d’orientation Angles d’Euler. Les autres options de style d’orientation sont axisAngle et quaternion. L’orientation Angle des axes utilise une combinaison d’un axe et d’un angle pour déterminer l’orientation. L’axe autour duquel l’objet pivote est un vecteur unitaire qui représente une direction. L’angle représente l’amplitude de la rotation autour du vecteur. La direction détermine également l’endroit qui fait face à l’objet d’affichage et l’angle détermine la direction du haut. Les méthodes appendRotation() et prependRotation() utilisent l’orientation Angle des axes. L’orientation quaternion utilise des nombres complexes et le quatrième élément d’un vecteur. Les trois axes de rotation (x,y,z) et un angle de rotation (w) représentent l’orientation. La méthode interpolate() utilise l’orientation quaternion.

Cet exemple utilise les méthodes decompose() et recompose() pour étirer horizontalement une ellipse lorsqu’elle va vers le point de fuite. Le premier objet Vector3D renvoyé par la méthode decompose() contient les coordonnées de translation. Le troisième objet Vector3D détient les paramètres d’échelle. La méthode incrementBy() de l’objet Vector3D incrémente les paramètres d’échelle et la translation absolue de la matrice. package { import flash.display.MovieClip; import flash.display.Shape; import flash.geom.*; import flash.events.Event; public class Matrix3DdecomposeExample extends MovieClip { private var ellipse:Shape = new Shape(); public function Matrix3DdecomposeExample():void { ellipse.x = (this.stage.stageWidth / 2); ellipse.y = (this.stage.stageHeight - 40); ellipse.z = 1; ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(0, 0, 50, 40); ellipse.graphics.endFill(); addChild(ellipse); ellipse.addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(e:Event):void { var v3:Vector.<Vector3D> = new Vector.<Vector3D>(3); v3 = ellipse.transform.matrix3D.decompose(); v3[0].incrementBy(new Vector3D(0,0,1)); v3[2].incrementBy(new Vector3D(0.01,0,0)); ellipse.transform.matrix3D.recompose(v3); } } }
flash.geom.Orientation3Drecompose()Vector
deltaTransformVector Utilise une matrice de transformation sans ses éléments de translation pour transformer un objet Vector3D d’une coordonnée spatiale en une autre.Objet Vector3D avec les coordonnées transformées. flash.geom:Vector3Dvflash.geom:Vector3DObjet Vector3D contenant les coordonnées à transformer. Utilise une matrice de transformation sans ses éléments de translation pour transformer un objet Vector3D d’une coordonnée spatiale en une autre. L’objet Vector3D renvoyé contient les nouvelles coordonnées après que les transformations de rotation et de mise à l’échelle aient été appliquées. Si la méthode deltaTransformVector() applique une matrice qui ne contient qu’une transformation de translation, l’objet Vector3D renvoyé correspond à l’objet Vector3D d’origine.

Vous pouvez utiliser la méthode deltaTransformVector() pour qu’un objet d’affichage d’un espace de coordonnées réponde à la transformation de rotation d’un deuxième objet d’affichage. L’objet ne copie pas la rotation, mais modifie sa position pour refléter les modifications de la rotation. Par exemple pour utiliser l’API display.Graphics en vue de dessiner un objet 3D en rotation, vous devez mapper les coordonnées de rotation de cet objet sur un point 2D. A l’aide de la méthode deltaTransformVector(), récupérez tout d’abord les coordonnées 3D de l’objet après chaque rotation. Ensuite, appliquez la méthode local3DToGlobal() de l’objet d’affichage pour convertir les coordonnées 3D en points 2D. Vous pouvez alors utiliser les points 2D pour dessiner l’objet 3D en rotation.

transformVectors()transformVector()
identity Convertit la matrice actuelle en matrice d’identité ou unitaire. Convertit la matrice actuelle en matrice d’identité ou unitaire. Une matrice d’identité a une valeur de un pour les éléments situés sur la diagonale principale et une valeur de zéro pour tous les autres éléments. Le résultat est une matrice dont la valeur rawData est 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1 et le paramètre de rotation est défini sur Vector3D(0,0,0), le paramètre de position ou de translation est défini sur Vector3D(0,0,0) et l’échelle est définie sur Vector3D(1,1,1). Voici une représentation de matrice d’identité.

Un objet transformé par l’application d’une matrice d’identité n’effectue aucune transformation. En d’autres termes, lorsqu’une matrice est multipliée par une matrice d’identité, le résultat est une matrice identique à la matrice d’origine.

interpolateTo Interpole la matrice de l’objet d’affichage un pour cent plus près de la matrice de la cible.toMatflash.geom:Matrix3DObjet Matrix3D cible. percentNumberValeur comprise entre 0 et 1 qui détermine l’emplacement de l’objet d’affichage par rapport à la cible. Plus la valeur est proche de 1.0, plus l’objet d’affichage est proche de sa position actuelle. Plus la valeur est proche de 0, plus l’objet d’affichage est proche de la cible. Interpole la matrice de l’objet d’affichage un pour cent plus près de la matrice de la cible. Tous les éléments de translation, de rotation et d’échelle de l’objet d’affichage sont interpolés sur des valeurs comprises entre la matrice des objets d’affichage actuel et cible.

La méthode interpolateTo() permet d’éviter des résultats non désirés pouvant survenir lors de l’utilisation de méthodes telles que les propriétés de rotation de l’axe de l’objet d’affichage. La méthode interpolateTo() invalide la valeur mise en cache de la propriété rotation de l’objet d’affichage et convertit les éléments d’orientation de la matrice de l’objet d’affichage en quaternion avant l’interpolation. Un quaternion garantit le chemin le plus efficace et le plus court pour la rotation. Il permet également d’obtenir une rotation sans gimbal lock. Un gimbal lock peut se produire lorsque les angles d’Euler sont utilisés et que chaque axe est traité indépendamment. Lors d’une rotation autour de plusieurs axes, les axes peuvent s’aligner et entraîner des résultats inattendus. La rotation quaternion permet d’éviter le gimbal lock.

Les prochains appels à la méthode interpolateTo() peuvent produire un effet tel qu’un objet d’affichage démarrant rapidement, puis s’approchant lentement d’un autre objet d’affichage. Par exemple, si le paramètre percent est défini sur 0.1, l’objet d’affichage se déplace de 10 % vers l’objet cible spécifié par le paramètre toMat. Lors des prochains appels ou dans les images suivantes, l’objet parcourt dix pour cent des 90 pour cent restants, dix pour cent des 80 pour cent restants, jusqu’à atteindre la cible.

Dans cet exemple, un objet d’affichage tridimensionnel nommé ellipse2 s’avance vers ellipse1, un autre objet d’affichage tridimensionnel. ellipse2 suit ellipse1 en essayant de l’attraper. Si ellipse1 ne pivote pas autour de son axe y, ellipse2 va atteindre et se poser sur ellipse1. Les deux ellipses sont dessinées de la même façon mais sont placées dans différents espaces monde tridimensionnels. package { import flash.display.MovieClip; import flash.display.Shape; import flash.display.Graphics; import flash.geom.*; import flash.events.Event; public class InterpolateToExample extends MovieClip { private var ellipse1:Shape = new Shape(); private var ellipse2:Shape = new Shape(); public function InterpolateToExample():void { ellipse1 = myEllipses(250, 100, 500, 0xFF0000); addChild(ellipse1); ellipse2 = myEllipses(-30, 120, 1, 0x00FF00); addChild(ellipse2); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function myEllipses(x:Number, y:Number, z:Number, c:Number):Shape { var s:Shape = new Shape(); s.x = x; s.y = y; s.z = z; s.graphics.beginFill(c); s.graphics.lineStyle(2); s.graphics.drawEllipse(100, 50, 100, 80); s.graphics.endFill(); return s; } private function enterFrameHandler(e:Event) { ellipse1.rotationY += 1; ellipse2.transform.matrix3D.interpolateTo(ellipse1.transform.matrix3D, 0.1); } } }
interpolate()
interpolate Simplifie l’interpolation entre une image de référence et une autre, en interpolant un objet d’affichage un pour cent plus près d’un objet d’affichage cible.Objet Matrix3D avec des éléments qui placent les valeurs de la matrice entre la matrice d’origine et la matrice cible. Lorsque la matrice renvoyée est appliquée à l’objet d’affichage this, l’objet se rapproche de l’objet cible en fonction du pourcentage spécifié. flash.geom:Matrix3DthisMatflash.geom:Matrix3DObjet Matrix3D qui doit être interpolé. toMatflash.geom:Matrix3DObjet Matrix3D cible. percentNumberValeur comprise entre 0 et 1 qui détermine le pourcentage d’interpolation de l’objet Matrix3D thisMat vers l’objet Matrix3D cible. Interpole un objet d’affichage un pour cent plus près d’un objet d’affichage cible. Simplifie l’interpolation entre une image de référence et une autre, en interpolant un objet d’affichage un pour cent plus près d’un objet d’affichage cible. Le résultat est un nouvel objet Matrix3D dans tous les éléments de translation, de rotation et d’échelle sont interpolés sur des valeurs comprises entre les objets d’affichage actuel et cible.

La méthode interpolate() évite certains des résultats non désirés pouvant survenir avec l’utilisation de méthodes telles que les propriétés de rotation de l’axe de l’objet d’affichage. La méthode interpolate() invalide la valeur mise en cache de la propriété rotation de l’objet d’affichage et convertit les éléments de rotation de la matrice de l’objet d’affichage en quaternion avant l’interpolation. Un quaternion garantit le chemin le plus efficace et le plus court pour la rotation. Il permet également d’obtenir une rotation sans gimbal lock. Un gimbal lock peut se produire lorsque les angles d’Euler sont utilisés et que chaque axe est traité indépendamment. Lors d’une rotation autour de plusieurs axes, les axes peuvent s’aligner et entraîner des résultats inattendus. La rotation quaternion permet d’éviter le gimbal lock.

Les prochains appels à la méthode interpolate() peuvent produire un effet tel qu’un objet d’affichage démarrant rapidement, puis s’approchant lentement d’un autre objet d’affichage. Par exemple, si vous définissez le paramètre thisMat sur l’objet Matrix3D renvoyé, le paramètre toMat sur l’objet Matrix3D associé de l’objet d’affichage cible et le paramètre percent sur 0.1, l’objet d’affichage se déplace de dix pour-cent vers l’objet cible. Lors des prochains appels ou dans les images suivantes, l’objet parcourt dix pour cent des 90 pour cent restants, dix pour cent des 80 pour cent restants, jusqu’à atteindre la cible.

interpolateTo()flash.geom.Utils3D.pointTowards()
invert Inverse la matrice actuelle.Renvoie true si la matrice a bien été inversée. Boolean Inverse la matrice actuelle. Une matrice inversée a la même taille que l’originale mais effectue la transformation opposée à la matrice originale. Par exemple, si un objet de la matrice d’origine pivote autour de l’axe x dans une direction, l’objet de la matrice inverse pivote autour de l’axe dans la direction opposée. L’application d’une matrice inversée à un objet annule la transformation effectuée par la matrice d’origine. Lorsqu’une matrice est multipliée par sa matrice inverse, le résultat est une matrice d’identité.

L’inverse d’une matrice peut être utilisé pour diviser une matrice par une autre. Une manière de diviser une matrice A par une matrice B consiste à multiplier la matrice A par l’inverse de la matrice B. La matrice inverse peut également être utilisée avec un espace de caméra. Lorsque la caméra se déplace dans l’espace monde, l’objet présent dans le monde doit se déplacer dans le sens opposé pour passer de l’espace monde à l’espace de la caméra ou à l’espace visuel. Par exemple, si la caméra se rapproche, les objets deviennent plus gros. En d’autres termes, si la caméra se déplace vers le bas de l’axe z du monde, l’objet se déplace vers le haut de ce même axe.

La méthode invert() remplace la matrice actuelle par une matrice inversée. Pour inverser une matrice sans modifier la matrice actuelle, commencez par copier la matrice actuelle à l’aide de la méthode clone(), puis appliquez la méthode invert() à la copie.

L’objet Matrix3D doit être réversible.

determinant
pointAt Fait pivoter l’objet d’affichage de sorte qu’il fasse face à une position spécifiée.posflash.geom:Vector3DPosition par rapport au monde de l’objet cible. Le terme « par rapport au monde » définit la transformation de l’objet par rapport aux coordonnées et à l’espace monde dans lequel tous les objets sont positionnés. atflash.geom:Vector3DnullVecteur relatif à l’objet qui définit l’endroit vers lequel pointe l’objet d’affichage. Le terme « relatif à l’objet » définit la transformation de l’objet par rapport à l’espace de l’objet, c’est-à-dire sa propre image de référence et son propre système de coordonnées. La valeur par défaut est l’axe +y (0,1,0). upflash.geom:Vector3DnullVecteur relatif à l’objet qui définit « up » pour l’objet d’affichage. Si l’objet est dessiné regardant vers le bas, l’axe +z est son vecteur « up ». Le terme « relatif à l’objet » définit la transformation de l’objet par rapport à l’espace de l’objet, c’est-à-dire sa propre image de référence et son propre système de coordonnées. La valeur par défaut est l’axe +z (0,0,1). Fait pivoter l’objet d’affichage de sorte qu’il fasse face à une position spécifiée. Cette méthode autorise une modification en place de l’orientation. Le vecteur de direction vers l’avant de l’objet d’affichage (objet Vector3D at) pointe vers la position relative au monde spécifiée. La direction vers le haut de l’objet d’affichage est spécifiée par l’objet Vector3D up.

La méthode pointAt() invalide la valeur mise en cache de la propriété rotation de l’objet d’affichage. La méthode décompose la matrice de l’objet d’affichage et modifie les éléments de rotation pour que l’objet tourne vers la position spécifiée. Elle recompose ensuite (met à jour) la matrice de l’objet d’affichage, qui effectue la transformation. Si l’objet pointe vers une cible en mouvement, par exemple vers la position d’un objet en mouvement, à chaque appel suivant, la méthode fait pivoter l’objet vers la cible en mouvement.

Remarque : si vous utilisez la méthode Matrix3D.pointAt() sans définir les paramètres facultatifs, un objet cible n’est pas face à la position par rapport au monde spécifiée par défaut. Vous devez définir les valeurs de at sur l’axe -y (0,-1,0) et up sur l’axe -z (0,0,-1).

Dans cet exemple, un triangle pointe et suit la trajectoire du mouvement de l’ellipse. L’ellipse et le triangle sont définis sur des emplacements différents. L’ellipse se déplace ensuite vers le haut et le coin de la scène. Le triangle suit les modifications de translation de l’ellipse. Vous pouvez modifier la forme du triangle et les paramètres « at » et « up » de pointAt() pour observer leur impact sur le mouvement du triangle. package { import flash.display.MovieClip; import flash.display.Shape; import flash.display.Graphics; import flash.geom.*; import flash.events.Event; public class PointAtExample extends MovieClip { private var ellipse:Shape = new Shape(); private var triangle:Shape = new Shape(); public function PointAtExample():void { ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(30, 40, 50, 40); ellipse.graphics.endFill(); ellipse.x = 100; ellipse.y = 150; ellipse.z = 1; triangle.graphics.beginFill(0x0000FF); triangle.graphics.moveTo(0, 0); triangle.graphics.lineTo(40, 40); triangle.graphics.lineTo(80, 0); triangle.graphics.lineTo(0, 0); triangle.graphics.endFill(); triangle.x = 200; triangle.y = 50; triangle.z = 1; addChild(ellipse); addChild(triangle); ellipse.addEventListener(Event.ENTER_FRAME, ellipseEnterFrameHandler); triangle.addEventListener(Event.ENTER_FRAME, triangleEnterFrameHandler); } private function ellipseEnterFrameHandler(e:Event) { if(e.target.y > 0) { e.target.y -= 1; e.target.x -= 1; } } private function triangleEnterFrameHandler(e:Event) { e.target.transform.matrix3D.pointAt(ellipse.transform.matrix3D.position, Vector3D.X_AXIS, Vector3D.Y_AXIS); } } }
flash.geom.Utils3D.pointTowards()
prependRotation Ajoute une rotation incrémentielle au début d’un objet Matrix3D.degreesNumberDegré de rotation. axisflash.geom:Vector3DAxe ou direction de la rotation. Les axes habituels sont X_AXIS (Vector3D(1,0,0)), Y_AXIS (Vector3D(0,1,0)) et Z_AXIS (Vector3D(0,0,1)). pivotPointflash.geom:Vector3DnullPoint qui détermine le centre de rotation. Le point de pivot par défaut d’un objet est son point d’alignement. Ajoute une rotation incrémentielle au début d’un objet Matrix3D. Lorsque l’objet Matrix3D est appliqué à un objet d’affichage, la matrice exécute la rotation avant les autres transformations dans l’objet Matrix3D.

La rotation de l’objet d’affichage est définie par un axe, un degré incrémentiel de rotation autour de l’axe et un point de pivot facultatif pour le centre de la rotation de l’objet. L’axe peut être toute direction générale. Les axes courants sont X_AXIS (Vector3D(1,0,0)), Y_AXIS (Vector3D(0,1,0)) et Z_AXIS (Vector3D(0,0,1)). Dans la terminologie de l’aviation, la rotation autour de l’axe y est appelée lacet. La rotation autour de l’axe x est appelée tangage ou pas. La rotation autour de l’axe z est appelée roulis.

L’ordre des transformations a son importance. Une rotation suivie d’une transformation de translation n’a pas le même effet qu’une translation suivie d’une rotation.

L’effet de la rotation n’est pas absolu. L’effet est relatif à l’objet, relatif à l’image de référence de la position et de l’orientation d’origine. Pour apporter une modification absolue à la transformation, utilisez la méthode recompose().

Lorsque la transformation de la méthode prependRotation() est appliquée à un objet Matrix3D, les valeurs mises en cache de la propriété rotation de l’objet d’affichage sont invalidées.

Pour qu’un objet d’affichage pivote autour d’un point spécifique par rapport à son emplacement, une méthode consiste à définir la translation de l’objet sur le point spécifié, à faire pivoter l’objet avec la méthode prependRotation() et à lui appliquer une translation pour le ramener dans sa position d’origine. Dans l’exemple suivant, l’objet d’affichage 3D myObject effectue une rotation sur l’axe y autour de la coordonnée (10,10,0).

myObject.z = 1; myObject.transform.matrix3D.prependTranslation(10,10,0); myObject.transform.matrix3D.prependRotation(1, Vector3D.Y_AXIS); myObject.transform.matrix3D.prependTranslation(-10,-10,0);
Dans cet exemple, l’utilisateur peut utiliser une souris pour faire pivoter une ellipse le long de ses axes x et y. L’ellipse est tracée avec son point d’alignement en son centre. Elle pivote autour de son axe y selon la coordonnée x de la souris. Elle pivote autour de son axe x selon la coordonnée y de la souris. package { import flash.display.MovieClip; import flash.display.Shape; import flash.geom.*; import flash.events.MouseEvent; public class Matrix3DprependRotationExample extends MovieClip { private var ellipse:Shape = new Shape(); public function Matrix3DprependRotationExample():void { ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(-50, -40, 100, 80); ellipse.graphics.endFill(); ellipse.x = (this.stage.stageWidth / 2); ellipse.y = (this.stage.stageHeight / 2); ellipse.z = 1; addChild(ellipse); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); } private function mouseMoveHandler(e:MouseEvent):void { var y:int; var x:int; if(e.localX > ellipse.x) { y = (Math.round(e.localX) / 100); } else { y = -(Math.round(e.localX) / 10); } if(e.localY > ellipse.y) { x = (Math.round(e.localY) / 100); } else { x = -(Math.round(e.localY) / 100); } ellipse.transform.matrix3D.prependRotation(y, Vector3D.Y_AXIS); ellipse.transform.matrix3D.prependRotation(x, Vector3D.X_AXIS); } } }
appendRotation()
prependScale Ajoute une modification d’échelle incrémentielle le long des axes x, y et z au début d’un objet Matrix3D.xScaleNumberMultiplicateur utilisé pour redimensionner l’objet le long de l’axe x. yScaleNumberMultiplicateur utilisé pour redimensionner l’objet le long de l’axe y. zScaleNumberMultiplicateur utilisé pour redimensionner l’objet le long de l’axe z. Ajoute une modification d’échelle incrémentielle le long des axes x, y et z au début d’un objet Matrix3D. Lorsque l’objet Matrix3D est appliqué à un objet d’affichage, la matrice exécute les changements d’échelle avant les autres transformations dans l’objet Matrix3D. Les changements sont relatifs à l’objet, relatifs à l’image de référence de la position et de l’orientation d’origine. Le facteur d’échelle par défaut est (1.0, 1.0, 1.0).

L’échelle est définie comme un ensemble de trois modifications incrémentielles le long des trois axes (x,y,z). Vous pouvez multiplier chaque axe par un nombre différent. Lorsque des modifications d’échelle sont appliquées à un objet d’affichage, la taille de l’objet augmente ou diminue. Par exemple, définir les axes x, y et z sur deux double la taille de l’objet, alors que définir les axes sur 0.5 réduit la taille de moitié. Pour être certain que la transformation d’échelle n’affecte qu’un axe spécifique, définissez les autres paramètres sur un. Un paramètre de un signifie qu’aucune modification d’échelle n’est apportée le long de l’axe spécifique.

La méthode prependScale() peut être utilisée pour un redimensionnement mais aussi pour la gestion des distorsions, par exemple pour étirer ou compacter un objet d’affichage. Elle peut également être utilisée pour faire un zoom avant et arrière sur un emplacement. Les transformations d’échelle sont exécutées automatiquement pendant la rotation et la translation d’un objet d’affichage.

L’ordre des transformations a son importance. Un redimensionnement suivi d’une transformation de translation n’a pas le même effet qu’une translation suivie d’une transformation de redimensionnement.

appendScale()
prependTranslation Ajoute une translation incrémentielle, repositionnement le long des axes x, y et z, au début d’un objet Matrix3D.xNumberTranslation incrémentielle le long de l’axe x. yNumberTranslation incrémentielle le long de l’axe y. zNumberTranslation incrémentielle le long de l’axe z. Ajoute une translation incrémentielle, repositionnement le long des axes x, y et z, au début d’un objet Matrix3D. Lorsque l’objet Matrix3D est appliqué à un objet d’affichage, la matrice exécute les modifications de translation avant les autres transformations dans l’objet Matrix3D.

La translation définit la distance sur laquelle l’objet d’affichage se déplace, depuis son emplacement actuel le long des axes x, y et z. La méthode prependTranslation() définit la translation comme un ensemble de trois modifications incrémentielles le long des trois axes (x,y,z). Pour que la translation n’affecte qu’un axe spécifique, définissez les autres paramètres sur zéro. Un paramètre de valeur zéro signifie qu’aucune modification n’a lieu le long de l’axe spécifique.

Les modifications de translation ne sont pas absolues. L’effet est relatif à l’objet, relatif à l’image de référence de la position et de l’orientation d’origine. Pour apporter une modification absolue à la matrice de transformation, utilisez la méthode recompose(). L’ordre des transformations a aussi son importance. Une translation suivie d’une transformation de rotation n’a pas le même effet qu’une rotation suivie d’une transformation de translation. Lorsque la méthode prependTranslation() est utilisée, l’objet d’affichage poursuit son déplacement dans la direction à laquelle il fait face, quelles que soient les autres transformations. Par exemple, si un objet d’affichage faisait face à l’axe x positif, il poursuit son déplacement dans le sens spécifié par la méthode prependTranslation(), quelle que soit la rotation ayant été appliquée à l’objet. Pour que les modifications de translation se produisent après les autres transformations, utilisez la méthode appendTranslation().

Dans cet exemple, l’utilisateur peut pousser une ellipse sur la scène le long de l’axe y avec une souris. Lorsque l’utilisateur survole l’ellipse avec sa souris, l’ellipse saute de dix coordonnées vers le haut de l’axe y. Lorsque la souris quitte l’ellipse, si celle-ci n’a pas atteint le bord supérieur, elle saute de nouveau de dix coordonnées vers le haut de l’axe y. Lorsque l’ellipse atteint le bord supérieur, elle est ramenée en bas de la scène. package { import flash.display.MovieClip; import flash.display.Sprite; import flash.geom.*; import flash.events.MouseEvent; public class Matrix3DprependTranslationExample extends MovieClip { private var ellipse:Sprite = new Sprite(); public function Matrix3DprependTranslationExample():void { ellipse.x = this.stage.stageWidth / 2; ellipse.y = this.stage.stageHeight - 100; ellipse.z = 1; ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(0, 0, 60, 50); ellipse.graphics.endFill(); addChild(ellipse); ellipse.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); ellipse.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } private function mouseOverHandler(e:MouseEvent):void { if(ellipse.y > 0) { ellipse.transform.matrix3D.prependTranslation(0, -10, 0); } } private function mouseOutHandler(e:MouseEvent):void { if(ellipse.y > 0) { ellipse.transform.matrix3D.prependTranslation(0, -10, 0); } else { ellipse.transform.matrix3D.prependTranslation(0, (this.stage.stageHeight - 100), 0); } } } }
appendTranslation()
prepend Ajoute une matrice au début en multipliant l’objet Matrix3D actuel par un autre objet Matrix3D.rhsflash.geom:Matrix3DCôté droit de la matrice par laquelle l’objet Matrix3D actuel est multiplié. Ajoute une matrice au début en multipliant l’objet Matrix3D actuel par un autre objet Matrix3D. Le résultat combine les deux transformations de matrice.

Les multiplications de matrices diffèrent des additions de matrices. La multiplication de matrices n’est pas commutative. En d’autres termes, A fois B n’est pas égal à B fois A. Avec la méthode prepend(), la multiplication s’effectue à partir du côté droit, ce qui signifie que l’objet Matrix3D rhs est situé à droite de l’opérateur de la multiplication.

thisMatrix = thisMatrix ~~ rhs

Les modifications apportées par la méthode prepend() sont relatives à l’espace de l’objet. En d’autres termes, elles sont toujours relatives à l’image de référence initiale de l’objet.

La méthode prepend() remplace la matrice actuelle par la matrice ajoutée. Si vous souhaitez ajouter deux matrices sans modifier la matrice actuelle, commencez par copier la matrice actuelle à l’aide de la méthode clone(), puis appliquez la méthode prepend() à la copie.

append()
recompose Définit les paramètres de translation, de rotation et d’échelle de la matrice de transformation.Renvoie false si l’un des éléments d’échelle est égal à zéro. BooleancomponentsVecteur de trois objets Vector3D qui remplace les éléments d’échelle, de translation et de rotation de l’objet Matrix3D. orientationStyleStringeulerAnglesParamètre facultatif qui détermine le style d’orientation utilisé pour la transformation de la matrice. Les trois types de styles d’orientation sont eulerAngles (EULER_ANGLES constants), axisAngle (AXIS_ANGLE constant) et quaternion (QUATERNION constant). Pour plus d’informations sur les différents styles d’orientation, voir la classe geom.Orientation3D. Définit les paramètres de translation, de rotation et d’échelle de la matrice de transformation. Contrairement aux modifications incrémentielles apportées par les propriétés de rotation de l’objet d’affichage ou les méthodes de rotation de l’objet Matrix3D, les modifications apportées par la méthode recompose() sont des modifications absolues. La méthode recompose() remplace la transformation de la matrice.

Pour modifier la transformation de la matrice avec une image de référence de parent absolu, récupérez les paramètres avec la méthode decompose() et apportez les modifications appropriées. Vous pouvez alors définir l’objet Matrix3D sur la transformation modifiée à l’aide de la méthode recompose().

Le paramètre de la méthode recompose() spécifie le style d’orientation utilisé pour la transformation. L’orientation par défaut est eulerAngles, qui définit l’orientation avec trois angles de rotation distincts pour chaque axe. Les rotations s’effectuent consécutivement et ne modifient pas l’axe des autres rotations. Les propriétés de rotation de l’axe de l’objet d’affichage effectuent une transformation de style d’orientation Angles d’Euler. Les autres options de style d’orientation sont axisAngle et quaternion. L’orientation Angle des axes détermine l’orientation en combinant un axe et un angle. L’axe autour duquel l’objet pivote est un vecteur unitaire qui représente une direction. L’angle représente l’amplitude de la rotation autour du vecteur. La direction détermine également l’endroit qui fait face à l’objet d’affichage et l’angle détermine la direction du haut. Les méthodes appendRotation() et prependRotation() utilisent l’orientation Angle des axes. L’orientation quaternion utilise des nombres complexes et le quatrième élément d’un vecteur. Une orientation est représentée par les trois axes de rotation (x,y,z) et un angle de rotation (w). La méthode interpolate() utilise l’orientation quaternion.

flash.geom.Orientation3Ddecompose()Vector
transformVector Utilise la matrice de transformation pour transformer un objet Vector3D d’une coordonnée spatiale en une autre.Objet Vector3D avec les coordonnées transformées. flash.geom:Vector3Dvflash.geom:Vector3DObjet Vector3D contenant les coordonnées à transformer. Utilise la matrice de transformation pour transformer un objet Vector3D d’une coordonnée spatiale en une autre. L’objet Vector3D renvoyé contient les nouvelles coordonnées après transformation. Toutes les transformations matricielles, y compris la translation, s’appliquent à l’objet Vector3D.

Si le résultat de la méthode transformVector() a été appliqué à la position d’un objet d’affichage, seule la position de cet objet change. Les éléments de rotation et d’échelle de l’objet d’affichage demeurent les mêmes.

transformVectors()deltaTransformVector()
transformVectors Utilise la matrice de transformation pour transformer un vecteur de nombres d’une coordonnée spatiale en une autre.vinVecteur de nombres, où chaque triplet de nombres est une coordonnée 3D (x,y,z) qui va être transformée. voutVecteur de nombres, où chaque triplet de nombres est une coordonnée 3D transformée (x,y,z). Utilise la matrice de transformation pour transformer un vecteur de nombres d’une coordonnée spatiale en une autre. La méthode tranformVectors() lit chaque groupe de trois nombres dans l’objet Vector vin comme une coordonnée 3D (x,y,z) et place une coordonnée 3D transformée dans l’objet Vector vout. Toutes les transformations matricielles, y compris la translation, sont appliquées à l’objet Vector vin. Vous pouvez utiliser la méthode transformVectors() pour restituer et transformer un objet 3D en tant que maillage. Un maillage est un ensemble de sommets ou points qui définissent la forme de l’objet. transformVector()deltaTransformVector()Vectortranspose Convertit l’objet Matrix3D en cours en une matrice dont les lignes et les colonnes sont permutées. Convertit l’objet Matrix3D en cours en une matrice dont les lignes et les colonnes sont permutées. Par exemple, si le paramètre rawData de l’objet Matrix3D actuel contient les 16 nombres suivants, 1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34, la méthode transpose() lit chaque ensemble de quatre éléments en tant que ligne et transforme ces lignes en colonnes. Le résultat est une matrice dont le paramètre rawData est : 1,11,21,31,2,12,22,32,3,13,23,33,4,14,24,34.

La méthode transpose() remplace la matrice actuelle par une matrice transposée. Pour transposer une matrice sans modifier la matrice actuelle, commencez par copier cette dernière à l’aide de la méthode clone(), puis appliquez la méthode transpose() à la copie.

Une matrice orthogonale est une matrice carrée dont la transposition est égale à son inverse.

determinant Objet Number qui détermine si une matrice est réversible.Number Objet Number qui détermine si une matrice est réversible.

Un objet Matrix3D doit être réversible. Pour être certain qu’un objet Matrix3D est réversible, vous pouvez utiliser la propriété determinant. Si la propriété determinant est zéro, il n’existe aucun inverse de la matrice. Par exemple, si une ligne ou une colonne entière d’une matrice est zéro ou si deux lignes ou deux colonnes sont égales, la propriété determinant est zéro. La propriété determinant permet également de résoudre une suite d’équations.

Seule une matrice carrée, telle que la classe Matrix3D, possède une propriété determinant.

invert()
position Objet Vector3D contenant la position, les coordonnées 3D (x,y,z) d’un objet d’affichage dans l’image de référence de la transformation.flash.geom:Vector3D Objet Vector3D contenant la position, les coordonnées 3D (x,y,z) d’un objet d’affichage dans l’image de référence de la transformation. La propriété position permet d’accéder immédiatement au vecteur de translation de la matrice de l’objet d’affichage sans qu’il soit nécessaire de décomposer et de recomposer la matrice.

La propriété position vous permet d’obtenir et de définir les éléments de translation de la matrice de transformation.

appendTranslation()prependTranslation()
rawData Vecteur de 16 nombres, dans lequel chaque groupe de quatre éléments peut être une ligne ou une colonne d’une matrice 4x4. Vecteur de 16 nombres, dans lequel chaque groupe de quatre éléments peut être une ligne ou une colonne d’une matrice 4x4.

Une exception est renvoyée si la propriété rawData est définie sur une matrice non réversible. L’objet Matrix3D doit être réversible. Si une matrice non réversible est nécessaire, créez une sous-classe de l’objet Matrix3D.

Vector
Transform La classe Transform permet d’accéder aux propriétés de réglage des couleurs et aux objets de transformation bi ou tridimensionnels pouvant s’appliquer à un objet d’affichage.Permet d’accéder aux couleurs, ainsi qu’aux matrices et aux objets de transformation bi et tridimensionnels pouvant s’appliquer à un objet d’affichage. Object La classe Transform permet d’accéder aux propriétés de réglage des couleurs et aux objets de transformation bi ou tridimensionnels pouvant s’appliquer à un objet d’affichage. Pendant la transformation, la couleur ou l’orientation et la position de l’objet d’affichage est ajustée (décalée) à partir des coordonnées ou des valeurs actuelles vers les nouvelles valeurs ou coordonnées. La classe Transform collecte également des données sur la couleur et les transformations de matrices bidimensionnelles appliquées à un objet d’affichage et à tous ses objets parent. Vous pouvez accéder à ces transformations combinées par le biais des propriétés concatenatedColorTransform et concatenatedMatrix.

Pour appliquer les transformations de couleur : créez un objet ColorTransform, définissez les réglages de couleur à l’aide des méthodes et des propriétés de l’objet, puis affectez la propriété colorTransformation de la propriété transform de l’objet d’affichage au nouvel objet ColorTransformation.

Pour appliquer des transformations bidimensionnelles : créez un objet Matrix, définissez la transformation bidimensionnelle de la matrice, puis affectez la propriété transform.matrix de l’objet d’affichage au nouvel objet Matrix.

Pour appliquer des transformations tridimensionnelles : partez d’un objet d’affichage tridimensionnel. Un objet d’affichage tridimensionnel a une propriété z dont la valeur est différente de zéro. Il n’est pas nécessaire de créer l’objet Matrix3D. Pour tous les objets tridimensionnels, un objet Matrix3D est créé automatiquement lorsque vous affectez une valeur z à un objet d’affichage. Vous pouvez accéder à l’objet Matrix3D de l’objet d’affichage par la propriété transform de l’objet d’affichage. A l’aide des méthodes de la classe Matrix3D, vous pouvez ajouter des paramètres de transformation ou modifier les existants. De même, vous pouvez créer un objet Matrix3D personnalisé, définir ses éléments de transformation, puis affecter le nouvel objet Matrix3D à l’objet d’affichage à l’aide de la propriété transform.matrix.

Pour modifier la projection de la perspective de la scène ou de l’objet racine : utilisez la propriété transform.matrix de l’objet d’affichage racine pour accéder à l’objet PerspectiveProjection. Ou, appliquez différentes propriétés de projection de perspective à un objet d’affichage en définissant les propriétés de projection de perspective de son parent. L’objet d’affichage enfant hérite alors des nouvelles propriétés. Plus précisément, créez un objet PerspectiveProjection et définissez ses propriétés, puis affectez l’objet PerspectiveProjection à la propriété perspectiveProjection de la propriété transform de l’objet d’affichage parent. La transformation de projection spécifiée s’applique alors à tous les enfants tridimensionnels de l’objet d’affichage.

Comme les objets PerspectiveProjection et Matrix3D transforment tous deux la perspective, ne les affectez pas ensemble à un objet d’affichage. Utilisez l’objet PerspectiveProjection pour les modifications de la longueur focale et du centre de projection. Pour contrôler encore davantage la transformation de la perspective, créez un objet de projection de perspective Matrix3D.

L’exemple suivant utilise la classe TransformExample pour incliner le côté inférieur d’une icône animée (sprite) de forme carrée dont le remplissage est dégradé. Chaque fois que l’utilisateur clique sur le carré, l’application transforme l’icône animée en l’inclinant, en passant par les étapes suivantes :
  1. Le constructeur TransformExample() crée un nouvel objet Sprite target.
  2. Le constructeur TransformExample() appelle la méthode draw() qui dessine un carré dégradé dans l’icône animée (sprite).
  3. Le constructeur TransformExample() ajoute un écouteur d’événement clic pour le sprite ; il est géré par le biais de la méthode clickHandler().
  4. La méthode clickHandler() crée un objet Matrix, skewMatrix, qui est défini pour appliquer un effet d’inclinaison. Une autre matrice, tempMatrix, est attribuée à la matrice de transformation actuelle de l’icône animée, puis elle est combinée avec l’objet skewMatrix par le biais de la méthode concat(). Cette matrice est affectée à la propriété transform.matrix de l’icône animée carrée. Chaque fois que l’utilisateur clique sur le carré, l’appel de la méthode clickHandler() modifie la forme du carré en l’inclinant.
  5. Par ailleurs, la méthode clickHandler() crée un objet ColorTransform. La propriété redOffset du nouvel objet ColorTransform est définie sur la valeur actuelle de redOffset et est incrémentée de 25. De même, la propriété blueOffset est réduite de 25. Les couleurs de l’icône animée changent à chaque clic.
package { import flash.display.Sprite; import flash.display.GradientType; import flash.geom.Matrix; import flash.geom.ColorTransform; import flash.events.MouseEvent; public class TransformExample extends Sprite { public function TransformExample() { var target:Sprite = new Sprite(); draw(target); addChild(target); target.useHandCursor = true; target.buttonMode = true; target.addEventListener(MouseEvent.CLICK, clickHandler) } public function draw(sprite:Sprite):void { var red:uint = 0xFF0000; var green:uint = 0x00FF00; var blue:uint = 0x0000FF; var size:Number = 100; sprite.graphics.beginGradientFill(GradientType.LINEAR, [red, blue, green], [1, 0.5, 1], [0, 200, 255]); sprite.graphics.drawRect(0, 0, 100, 100); } public function clickHandler(event:MouseEvent):void { var skewMatrix:Matrix = new Matrix(); skewMatrix.c = 0.25; var tempMatrix:Matrix = this.transform.matrix; tempMatrix.concat(skewMatrix); this.transform.matrix = tempMatrix; var rOffset:Number = this.transform.colorTransform.redOffset + 25; var bOffset:Number = this.transform.colorTransform.blueOffset - 25; this.transform.colorTransform = new ColorTransform(1, 1, 1, 1, rOffset, 0, bOffset, 0); } } }
flash.display.DisplayObject.transformflash.geom.ColorTransformflash.geom.Matrixflash.geom.Matrix3Dflash.geom.PerspectiveProjectiongetRelativeMatrix3D Renvoie un objet Matrix3D, capable de transformer l’espace de l’objet d’affichage spécifié par rapport à l’espace de l’objet d’affichage actif.Objet Matrix3D pouvant être utilisé pour transformer l’espace à partir de l’objet d’affichage relativeTo vers l’espace de l’objet d’affichage actif. flash.geom:Matrix3DrelativeToflash.display:DisplayObjectObjet d’affichage par rapport auquel la transformation se produit. Pour obtenir un objet Matrix3D relatif à la scène, définissez le paramètre sur l’objet root ou stage. Pour obtenir une matrice relative au monde de l’objet d’affichage, définissez le paramètre sur un objet d’affichage auquel est appliquée une transformation de perspective. Renvoie un objet Matrix3D, capable de transformer l’espace de l’objet d’affichage spécifié par rapport à l’espace de l’objet d’affichage actif. Vous pouvez utiliser la méthode getRelativeMatrix3D() pour déplacer un objet d’affichage tridimensionnel par rapport à un autre. flash.geom.Matrix3DcolorTransform Objet ColorTransform contenant des valeurs qui règlent de façon universelle les couleurs de l’objet d’affichage.flash.geom:ColorTransformL’objet colorTransform prend la valeur null lors de sa définition. TypeErrorTypeError Objet ColorTransform contenant des valeurs qui règlent de façon universelle les couleurs de l’objet d’affichage. flash.geom.ColorTransformconcatenatedColorTransform Objet ColorTransform représentant les transformations de couleur combinées qui s’appliquent à l’objet d’affichage et à l’ensemble de ses objets parent, jusqu’à la racine.flash.geom:ColorTransform Objet ColorTransform représentant les transformations de couleur combinées qui s’appliquent à l’objet d’affichage et à l’ensemble de ses objets parent, jusqu’à la racine. Si différentes transformations de couleur s’appliquent à différents niveaux, elles sont concaténées dans un objet ColorTransform unique pour cette propriété. flash.geom.ColorTransformconcatenatedMatrix Objet Matrix représentant les matrices de transformation combinées qui s’appliquent à l’objet d’affichage et à l’ensemble de ses objets parent, jusqu’à la racine.flash.geom:Matrix Objet Matrix représentant les matrices de transformation combinées qui s’appliquent à l’objet d’affichage et à l’ensemble de ses objets parent, jusqu’à la racine. Si différentes matrices de transformation s’appliquent à différents niveaux, elles sont concaténées en une seule matrice pour cette propriété. Par ailleurs, pour le contenu SWF redimensionnable exécuté dans le navigateur, cette propriété influe sur la différence entre les coordonnées de la scène et les coordonnées de la fenêtre à cause du redimensionnement de la fenêtre. Par conséquent, cette propriété convertit les coordonnées locales en coordonnées de fenêtre ; il est donc possible que l’espace de coordonnées ne soit pas le même que celui de la Scène. matrix3D Permet d’accéder à l’objet Matrix3D d’un objet d’affichage tridimensionnel.flash.geom:Matrix3D Permet d’accéder à l’objet Matrix3D d’un objet d’affichage tridimensionnel. L’objet Matrix3D représente une matrice de transformation qui détermine la position et l’orientation de l’objet d’affichage. Un objet Matrix3D peut également effectuer une projection de perspective.

Si la propriété matrix est définie sur une valeur (sauf sur null), la propriété matrix3D est null. Et si la propriété matrix3D est définie sur une valeur (sauf sur null), la propriété matrix est null.

flash.geom.Matrix3D
matrix Objet Matrix contenant des valeurs qui influent sur le redimensionnement, la rotation et la translation de l’objet d’affichage.flash.geom:MatrixLa matrice prend la valeur null lors de sa définition. TypeErrorTypeError Objet Matrix contenant des valeurs qui influent sur le redimensionnement, la rotation et la translation de l’objet d’affichage.

Si la propriété matrix est définie sur une valeur (sauf sur null), la propriété matrix3D est null. Et si la propriété matrix3D est définie sur une valeur (sauf sur null), la propriété matrix est null.

flash.geom.Matrix
perspectiveProjection Permet d’accéder à l’objet PerspectiveProjection d’un objet d’affichage tridimensionnel.flash.geom:PerspectiveProjection Permet d’accéder à l’objet PerspectiveProjection d’un objet d’affichage tridimensionnel. L’objet PerspectiveProjection peut être utilisé pour modifier la transformation de perspective de la scène ou pour affecter une transformation de perspective à tous les enfants tridimensionnels d’un objet d’affichage.

A partir du champ de vision et des proportions (dimensions) de la scène, un objet PerspectiveProjection est affecté par défaut à l’objet racine.

flash.geom.PerspectiveProjection
pixelBounds Objet Rectangle qui définit le rectangle de délimitation de l’objet d’affichage sur la scène.flash.geom:Rectangle Objet Rectangle qui définit le rectangle de délimitation de l’objet d’affichage sur la scène.
Matrix La classe Matrix représente une matrice de transformation qui détermine le mappage des points d’un espace de coordonnées à l’autre.Classe Matrix homogène à deux dimensions standard. Object La classe Matrix représente une matrice de transformation qui détermine le mappage des points d’un espace de coordonnées à l’autre. Pour appliquer diverses transformations graphiques à un objet d’affichage, vous pouvez définir les propriétés d’un objet Matrix, puis appliquer cet objet à la propriété matrix d’un objet Transform que vous appliquez ensuite comme propriété transform de l’objet d’affichage. Ces fonctions de transformation incluent la translation (repositionnement de x et y), la rotation, le redimensionnement et l’inclinaison.

Associés, ces types de transformations sont connus sous le nom de transformations affines. Les transformations affines préservent la rectitude des lignes au cours de la transformation, de sorte que les lignes parallèles restent parallèles.

Pour appliquer une matrice de transformation à un objet d’affichage, vous créez un objet Transform, réglez sa propriété matrix sur la matrice de transformation, puis réglez la propriété transform de l’objet d’affichage sur l’objet Transform. Les objets Matrix peuvent également être utilisés comme paramètres de certaines méthodes, indiquées ci-dessous :

  • la méthode draw() d’un objet BitmapData ;
  • les méthodes beginBitmapFill(), beginGradientFill() ou lineGradientStyle() d’un objet Graphics.

Un objet de matrice de transformation est considéré comme étant une matrice 3 x 3 comprenant le contenu suivant :

Dans le cas des matrices de transformation classiques, les propriétés u, v et w sont dotées de fonctionnalités supplémentaires. La classe Matrix fonctionne uniquement dans un espace bidimensionnel ; ainsi, elle suppose toujours que les valeurs des propriétés u et v sont 0,0, et que la valeur de la propriété w est 1,0. Les valeurs réelles de la matrice sont les suivantes :

Vous pouvez obtenir et définir les valeurs des six autres propriétés d’un objet Matrix : a, b, c, d, tx et ty.

La classe Matrix prend en charge les quatre principaux types de transformations : translation, redimensionnement, rotation et inclinaison. Vous pouvez définir trois de ces transformations à l’aide de méthodes spécialisées, tel que décrit dans le tableau ci-dessous.

TransformationMéthodeValeurs de matriceRésultat affichéDescriptionTranslation (déplacement)translate(tx, ty) Déplace les pixels tx de l’image vers la droite, et les pixels ty vers le bas.Redimensionnementscale(sx, sy)Redimensionne l’image en multipliant l’emplacement de chaque pixel par sx sur l’axe x et par sy sur l’axe y.Rotationrotate(q)Fait pivoter l’image selon un angle q, mesuré en radians.Inclinaison ou cisaillement Aucun ; il est nécessaire de définir les propriétés b et c.Fait glisser l’image progressivement dans une direction parallèle à l’axe x ou y. La propriété b de l’objet Matrix représente la tangente de l’angle d’inclinaison sur l’axe y, sa propriété c la tangente de l’angle d’inclinaison sur l’axe x.

Chaque fonction de transformation modifie les propriétés de matrice actuelles, ce qui vous permet d’associer plusieurs transformations. Pour ce faire, il vous suffit d’appeler plusieurs fonctions de transformation avant d’appliquer la matrice à son objet d’affichage cible (à l’aide de la propriété transform de celui-ci).

Utilisez le constructeur new Matrix() pour créer un objet Matrix afin de pouvoir appeler les méthodes connexes.

L’exemple suivant exploite la classe MatrixExample pour montrer comment générer un carré de grande taille avec une zone de remplissage dégradée. Cette opération s’accomplit de la façon suivante :
  1. L’application crée un nouvel objet Matrix myMatrix et utilise la méthode trace() pour produire les valeurs de propriété par défaut de l’objet myMatrix.
  2. L’application appelle createGradientBox() avec les paramètres width et height définis sur 200 pixels ; il n’y a pas de rotation et la distance à translater sur les axes x et y est définie sur 50 pixels.
  3. L’application imprime l’objet myMatrix une nouvelle fois pour signaler la modification après l’appel de createGradientBox().
  4. L’application utilise trois variables pour contrôler le remplissage de la zone de dégradé :
    • colors : définit les couleurs de dégradé allant du rouge au bleu unis.
    • alphas : définit l’opacité sur uni.
    • ratios : définit une répartition des couleurs égale pour le rouge et le bleu.
  5. L’application appelle la méthode Graphics beginGradientFill(), qui est active sur l’objet myMatrix, et la méthode lineTo(), qui se traduit par une zone de remplissage dégradée.
package { import flash.geom.Matrix; import flash.display.Sprite; import flash.display.GradientType; public class MatrixExample extends Sprite { public function MatrixExample() { var myMatrix:Matrix = new Matrix(); trace(myMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0) myMatrix.createGradientBox(200, 200, 0, 50, 50); trace(myMatrix.toString()); // (a=0.1220703125, b=0, c=0, d=0.1220703125, tx=150, ty=150) var colors:Array = [0xFF0000, 0x0000FF]; var alphas:Array = [1, 1]; var ratios:Array = [0, 0xFF]; graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, myMatrix); graphics.lineTo(0, 300); graphics.lineTo(300, 300); graphics.lineTo(300, 0); graphics.lineTo(0, 0); } } }
flash.display.DisplayObject.transformflash.geom.Transformflash.display.BitmapData.draw()flash.display.Graphics.beginBitmapFill()flash.display.Graphics.beginGradientFill()flash.display.Graphics.lineGradientStyle()Matrix Crée un objet Matrix avec les paramètres spécifiés.aNumber1Valeur qui affecte le positionnement des pixels sur l’axe x lors du redimensionnement ou de la rotation d’une image. bNumber0Valeur qui affecte le positionnement des pixels sur l’axe y lors de la rotation ou de l’inclinaison d’une image. cNumber0Valeur qui affecte le positionnement des pixels sur l’axe x lors de la rotation ou de l’inclinaison d’une image. dNumber1Valeur qui affecte le positionnement des pixels sur l’axe y lors du redimensionnement ou de la rotation d’une image. txNumber0Distance de translation de chaque point sur l’axe x. tyNumber0Distance de translation de chaque point sur l’axe y. Crée un objet de Matrix bidimensionnel. Crée un objet Matrix avec les paramètres spécifiés. Dans la notation des matrices, les propriétés sont organisées comme suit :

Si vous ne transmettez aucun paramètre au constructeur new Matrix(), celui-ci crée une matrice d’identité dotée des valeurs suivantes :

a = 1
b = 0
c = 0
d = 1
tx = 0
ty = 0

Dans la notation des matrices, la matrice d’identité a l’aspect suivant :

L’exemple suivant crée matrix_1 sans transmettre de paramètre au constructeur Matrix() et matrix_2 en lui transmettant des paramètres. Remarquez que matrix_1, créé sans paramètres, forme une matrice d’identité dotée des valeurs a=1, b=0, c=0, d=1, tx=0, ty=0. import flash.geom.Matrix; var matrix_1:Matrix = new Matrix(); trace(matrix_1); // (a=1, b=0, c=0, d=1, tx=0, ty=0) var matrix_2:Matrix = new Matrix(1, 2, 3, 4, 5, 6); trace(matrix_2); // (a=1, b=2, c=3, d=4, tx=5, ty=6)
clone Renvoie un nouvel objet Matrix, clone de cette matrice, avec une copie exacte de l’objet contenu.Objet Matrix. flash.geom:MatrixRenvoie un nouvel objet Matrix, copie de la matrice actuelle. Renvoie un nouvel objet Matrix, clone de cette matrice, avec une copie exacte de l’objet contenu. concat Concatène une matrice et la matrice actuelle, ce qui a pour effet de combiner les effets géométriques des deux matrices.mflash.geom:MatrixMatrice à concaténer avec la matrice source. Concatène une matrice et la matrice actuelle, ce qui a pour effet de combiner les effets géométriques des deux matrices. En termes mathématiques, la concaténation de deux matrices revient à les combiner par l’intermédiaire de la multiplication de matrices.

Par exemple, si la matrice m1 redimensionne un objet en le multipliant par 4 et si la matrice m2 fait pivoter un objet de 1,5707963267949 radians (Math.PI/2), alors m1.concat(m2) transforme m1 en une matrice qui redimensionne un objet en le multipliant par 4 et le fait pivoter de Math.PI/2 radians.

Cette méthode permet de remplacer la matrice source par la matrice concaténée. Si vous souhaitez concaténer deux matrices sans modifier les deux matrices source, copiez d’abord la matrice source via la méthode clone(), comme indiqué dans la section relative aux exemples de la classe.

createBox Inclut les paramètres de mise à l’échelle, de rotation et de translation.scaleXNumberFacteur à appliquer au redimensionnement horizontal. scaleYNumberFacteur à appliquer au redimensionnement vertical. rotationNumber0Valeur de rotation, en radians. txNumber0Nombre de pixels à translater (déplacer) vers la droite sur l’axe des x. tyNumber0Nombre de pixels à translater (déplacer) vers le bas sur l’axe des y. Crée une matrice à l’aide de valeurs de redimensionnement, de rotation et de translation. Inclut les paramètres de redimensionnement, de rotation et de translation. Lorsqu’elle est appliquée à une matrice, elle définit ses valeurs en fonction de ces paramètres.

L’utilisation de la méthode createBox() vous permet d’obtenir la même matrice que si vous appliquiez successivement les méthodes identity(), rotate(), scale() et translate(). Par exemple, mat1.createBox(2,2, Math.PI/4, 100, 100) permet d’obtenir le résultat suivant :

import flash.geom.Matrix; var mat1:Matrix = new Matrix(); mat1.identity(); mat1.rotate(Math.PI/4); mat1.scale(2,2); mat1.translate(10,20);
L’exemple suivant définit les redimensionnements x et y, la rotation, ainsi que les emplacements x et y de myMatrix en appelant sa méthode createBox(). package { import flash.display.Shape; import flash.display.Sprite; import flash.geom.Matrix; import flash.geom.Transform; public class Matrix_createBox extends Sprite { public function Matrix_createBox() { var myMatrix:Matrix = new Matrix(); trace(myMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0) myMatrix.createBox(1, 2, Math.PI/4, 50, 100); trace(myMatrix.toString()); // (a=0.7071067811865476, b=1.414213562373095, c=-0.7071067811865475, // d=1.4142135623730951, tx=100, ty=200) var rectangleShape:Shape = createRectangle(20, 80, 0xFF0000); addChild(rectangleShape); var rectangleTrans:Transform = new Transform(rectangleShape); rectangleTrans.matrix = myMatrix; } public function createRectangle(w:Number, h:Number, color:Number):Shape { var rect:Shape = new Shape(); rect.graphics.beginFill(color); rect.graphics.drawRect(0, 0, w, h); addChild(rect); return rect; } } }
flash.display.Graphics.beginBitmapFill()
createGradientBox Crée le style spécifique de matrice attendu par les méthodes beginGradientFill() et lineGradientStyle() de la classe Graphics.widthNumberLargeur de la zone de dégradé. heightNumberHauteur de la zone de dégradé. rotationNumber0Valeur de rotation, en radians. txNumber0Distance, en pixels, à translater vers la droite sur l’axe des x. Cette valeur est décalée de la moitié du paramètre width. tyNumber0Distance, en pixels, à translater vers le bas sur l’axe des y. Cette valeur est décalée de la moitié du paramètre height. Crée le style spécifique de matrice attendu par la méthode beginGradientFill() de la classe Graphics. Crée le style spécifique de matrice attendu par les méthodes beginGradientFill() et lineGradientStyle() de la classe Graphics. La largeur et la hauteur sont redimensionnées selon une paire scaleX/scaleY et les valeurs tx/ty sont décalées de la moitié de la largeur et de la hauteur.

Par exemple, supposons un dégradé possédant les caractéristiques suivantes:

  • GradientType.LINEAR
  • Deux couleurs, vert et bleu, le tableau des rapports (ratios) correspondant à [0, 255]
  • SpreadMethod.PAD
  • InterpolationMethod.LINEAR_RGB

Les illustrations suivantes représentent des dégradés dans lesquels la matrice a été définie à l’aide de la méthode createGradientBox() et un paramétrage différent :

Paramètres createGradientBox()Dégradé obtenu
width = 25;
     height = 25; 
     rotation = 0; 
     tx = 0; 
     ty = 0;
width = 25; 
     height = 25; 
     rotation = 0; 
     tx = 25; 
     ty = 0;
width = 50; 
     height = 50; 
     rotation = 0; 
     tx = 0; 
     ty = 0;
width = 50;
     height = 50; 
     rotation = Math.PI / 4; // 45 degrees
     tx = 0; 
     ty = 0;
L’exemple suivant définit les redimensionnements x et y, la rotation, ainsi que les emplacements x et y de myMatrix en appelant sa méthode createBox(). package { import flash.display.GradientType; import flash.display.Sprite; import flash.geom.Matrix; public class Matrix_createGradientBox extends Sprite { public function Matrix_createGradientBox() { var myMatrix:Matrix = new Matrix(); trace(myMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0) myMatrix.createGradientBox(200, 200, 0, 50, 50); trace(myMatrix.toString()); // (a=0.1220703125, b=0, c=0, d=0.1220703125, tx=150, ty=150) var colors:Array = [0xFF0000, 0x0000FF]; var alphas:Array = [100, 100]; var ratios:Array = [0, 0xFF]; this.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, myMatrix); this.graphics.drawRect(0, 0, 300, 200); } } }
flash.display.Graphics.beginGradientFill()flash.display.Graphics.lineGradientStyle()
deltaTransformPoint Etant donné un point dans l’espace de coordonnées de prétransformation, cette méthode renvoie les coordonnées de ce point après la transformation.Point résultant de l’application de la transformation de matrice. flash.geom:Pointpointflash.geom:PointPoint pour lequel vous souhaitez obtenir le résultat de la transformation de matrice. Etant donné un point dans l’espace de coordonnées de prétransformation, cette méthode renvoie les coordonnées de ce point après la transformation. Contrairement à la transformation standard appliquée via la méthode transformPoint(), la transformation de la méthode deltaTransformPoint() ne prend pas en considération les paramètres de translation tx et ty. identity Règle chaque propriété d’une matrice sur une valeur qui entraîne une transformation nulle. Règle chaque propriété d’une matrice sur une valeur qui entraîne une transformation nulle. Un objet transformé par l’application d’une matrice d’identité est identique à l’objet d’origine.

Faisant suite à l’appel de la méthode identity(), la matrice obtenue présente les propriétés suivantes : a =1, b =0, c =0, d =1, tx =0, ty =0.

Dans la notation des matrices, la matrice d’identité a l’aspect suivant :

invert Effectue la transformation opposée de la matrice d’origine. Effectue la transformation opposée de la matrice d’origine. Vous pouvez appliquer une matrice inversée à un objet pour annuler la transformation effectuée lors de l’application de la matrice d’origine. L’exemple suivant crée halfScaleMatrix en appelant la méthode invert() de doubleScaleMatrix. Il démontre ensuite que les deux objets Matrix sont inversés l’un par rapport à l’autre (matrices annulant toute tranformation effectuée par son pendant) en créant originalAndInverseMatrix qui est l’équivalent de noScaleMatrix. package { import flash.display.Shape; import flash.display.Sprite; import flash.geom.Matrix; import flash.geom.Transform; public class Matrix_invert extends Sprite { public function Matrix_invert() { var rect0:Shape = createRectangle(20, 80, 0xFF0000); var rect1:Shape = createRectangle(20, 80, 0x00FF00); var rect2:Shape = createRectangle(20, 80, 0x0000FF); var rect3:Shape = createRectangle(20, 80, 0x000000); var trans0:Transform = new Transform(rect0); var trans1:Transform = new Transform(rect1); var trans2:Transform = new Transform(rect2); var trans3:Transform = new Transform(rect3); var doubleScaleMatrix:Matrix = new Matrix(2, 0, 0, 2, 0, 0); trans0.matrix = doubleScaleMatrix; trace(doubleScaleMatrix.toString()); // (a=2, b=0, c=0, d=2, tx=0, ty=0) var noScaleMatrix:Matrix = new Matrix(1, 0, 0, 1, 0, 0); trans1.matrix = noScaleMatrix; rect1.x = 50; trace(noScaleMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0) var halfScaleMatrix:Matrix = doubleScaleMatrix.clone(); halfScaleMatrix.invert(); trans2.matrix = halfScaleMatrix; rect2.x = 100; trace(halfScaleMatrix.toString()); // (a=0.5, b=0, c=0, d=0.5, tx=0, ty=0) var originalAndInverseMatrix:Matrix = doubleScaleMatrix.clone(); originalAndInverseMatrix.concat(halfScaleMatrix); trans3.matrix = originalAndInverseMatrix; rect3.x = 150; trace(originalAndInverseMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0) } public function createRectangle(w:Number, h:Number, color:Number):Shape { var rect:Shape = new Shape(); rect.graphics.beginFill(color); rect.graphics.drawRect(0, 0, w, h); addChild(rect); return rect; } } } rotate Applique une transformation de rotation à l’objet Matrix.angleNumberAngle de rotation en radians. Applique une transformation de rotation à l’objet Matrix.

La méthode rotate() modifie les propriétés a, b, c et d de l’objet Matrix. Dans la notation des matrices, cela équivaut à concaténer la matrice actuelle et les matrices ci-dessous :

scale Applique une transformation de redimensionnement à la matrice.sxNumberMultiplicateur utilisé pour redimensionner l’objet sur l’axe des x. syNumberMultiplicateur utilisé pour redimensionner l’objet sur l’axe des y. Applique une transformation de redimensionnement à la matrice. L’axe des x est multiplié par sx et l’axe des y par sy.

La méthode scale() modifie les propriétés a et d de l’objet Matrix. Dans la notation des matrices, cela équivaut à concaténer la matrice actuelle et les matrices ci-dessous :

toString Renvoie une valeur de texte donnant la liste des propriétés de l’objet Matrix.Chaîne répertoriant les valeurs des propriétés de l’objet Matrix : a, b, c, d, tx et ty. StringRenvoie une valeur de texte donnant la liste des propriétés de cet objet Matrix. Renvoie une valeur de texte donnant la liste des propriétés de l’objet Matrix. transformPoint Renvoie le résultat de l’application de la transformation géométrique représentée par l’objet Matrix au point spécifié.Point résultant de l’application de la transformation Matrix. flash.geom:Pointpointflash.geom:PointPoint pour lequel vous souhaitez obtenir le résultat de la transformation Matrix. Renvoie le résultat d’une transformation géométrique vers un objet Point. Renvoie le résultat de l’application de la transformation géométrique représentée par l’objet Matrix au point spécifié. translate Translation de la matrice sur les axes x et y en fonction des paramètres dx et dy.dxNumberQuantité de mouvement vers la droite sur l’axe des x, en pixels. dyNumberQuantité de mouvement vers le bas sur l’axe des y, en pixels. Translation de la matrice sur les axes x et y.

La méthode translate() modifie les propriétés tx et ty de l’objet Matrix. Dans la notation des matrices, cela équivaut à concaténer la matrice actuelle et les matrices ci-dessous :

Translation de la matrice sur les axes x et y en fonction des paramètres dx et dy.
a Valeur qui affecte le positionnement des pixels sur l’axe x lors du redimensionnement ou de la rotation d’une image.NumberValeur qui affecte le positionnement des pixels sur l’axe x lors du redimensionnement ou de la rotation d’une image. Valeur qui affecte le positionnement des pixels sur l’axe x lors du redimensionnement ou de la rotation d’une image. L’exemple suivant crée l’objet Matrix myMatrix et définit sa valeur a. import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.a); // 1 myMatrix.a = 2; trace(myMatrix.a); // 2 b Valeur qui affecte le positionnement des pixels sur l’axe y lors de la rotation ou de l’inclinaison d’une image.NumberValeur qui affecte le positionnement des pixels sur l’axe y lors de la rotation ou de l’inclinaison d’une image. Valeur qui affecte le positionnement des pixels sur l’axe y lors de la rotation ou de l’inclinaison d’une image. L’exemple suivant crée l’objet Matrix myMatrix et définit sa valeur b. import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.b); // 0 var degrees:Number = 30; var radians:Number = (degrees/180) ~~ Math.PI; myMatrix.b = Math.tan(radians); trace(myMatrix.b); // 0.5773502691896257 c Valeur qui affecte le positionnement des pixels sur l’axe x lors de la rotation ou de l’inclinaison d’une image.NumberValeur qui affecte le positionnement des pixels sur l’axe x lors de la rotation ou de l’inclinaison d’une image. Valeur qui affecte le positionnement des pixels sur l’axe x lors de la rotation ou de l’inclinaison d’une image. L’exemple suivant crée l’objet Matrix myMatrix et définit sa valeur c. import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.c); // 0 var degrees:Number = 30; var radians:Number = (degrees/180) ~~ Math.PI; myMatrix.c = Math.tan(radians); trace(myMatrix.c); // 0.5773502691896257 d Valeur qui affecte le positionnement des pixels sur l’axe y lors du redimensionnement ou de la rotation d’une image.NumberValeur qui affecte le positionnement des pixels sur l’axe y lors du redimensionnement ou de la rotation d’une image. Valeur qui affecte le positionnement des pixels sur l’axe y lors du redimensionnement ou de la rotation d’une image. L’exemple suivant crée l’objet Matrix myMatrix et définit sa valeur d. import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.d); // 1 myMatrix.d = 2; trace(myMatrix.d); // 2 tx Distance de translation de chaque point sur l’axe x.NumberDistance de translation de chaque point sur l’axe x. Distance de translation de chaque point sur l’axe x. L’exemple suivant crée l’objet Matrix myMatrix et définit sa valeur tx. import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.tx); // 0 myMatrix.tx = 50; // 50 trace(myMatrix.tx); ty Distance de translation de chaque point sur l’axe y.NumberDistance de translation de chaque point sur l’axe y. Distance de translation de chaque point sur l’axe y. L’exemple suivant crée l’objet Matrix myMatrix et définit sa valeur ty. import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.ty); // 0 myMatrix.ty = 50; trace(myMatrix.ty); // 50
Rectangle Un objet Rectangle est une zone définie par sa position, indiquée par son angle supérieur gauche (x, y), ainsi que par sa largeur et sa hauteur.Un objet Rectangle est une zone définie par sa position, indiquée par son angle supérieur gauche (x, y), ainsi que par sa largeur et sa hauteur. Object Un objet Rectangle est une zone définie par sa position, indiquée par son angle supérieur gauche (x, y), ainsi que par sa largeur et sa hauteur.

Les propriétés x, y, width et height de la classe Rectangle sont indépendantes les unes des autres. Le fait de modifier l’une de ces propriétés n’a aucun effet sur les autres. Les propriétés right et bottom, en revanche, sont intégralement liées à ces quatre propriétés. La modification de la valeur des propriétés right et bottom, par exemple, a une incidence sur la valeur des propriétés width et height, respectivement.

Les méthodes et propriétés suivantes utilisent les objets Rectangle :

  • Les méthodes applyFilter(), colorTransform(), copyChannel(), copyPixels(), draw(), fillRect(), generateFilterRect(), getColorBoundsRect(), getPixels(), merge(), paletteMap(), pixelDisolve(), setPixels() et threshold() et la propriété rect de la classe BitmapData
  • les méthodes getBounds() et getRect(), ainsi que les propriétés scrollRect et scale9Grid de la classe DisplayObject ;
  • la méthode getCharBoundaries() de la classe TextField ;
  • la propriété pixelBounds de la classe Transform ;
  • le paramètre bounds de la méthode startDrag() de la classe Sprite ;
  • le paramètre printArea de la méthode addPage() de la classe PrintJob.

Vous pouvez utiliser le constructeur new Rectangle() pour créer un objet Rectangle.

Remarque : la classe Rectangle ne définit pas un objet d’affichage Shape rectangulaire. Pour dessiner un objet Shape rectangulaire à l’écran, utilisez la méthode drawRect() de la classe Graphics.

L’exemple suivant utilise la classe RectangleExample pour créer trois nouveaux objets Rectangle à diverses coordonnées x,y et selon différentes hauteurs et largeurs ; la méthode trace() est utilisée pour confirmer la création réussie des occurrences de Rectangle. Une variable booléenne isContained est ensuite attribuée au résultat de l’appel à la méthode containsRect() qui détermine que le deuxième rectangle n’englobe pas complètement le troisième rectangle. package { import flash.display.Sprite; import flash.geom.Rectangle; public class RectangleExample extends Sprite { public function RectangleExample() { var firstRect:Rectangle = new Rectangle(); trace(firstRect); // (x=0, y=0, w=0, h=0) var secondRect:Rectangle = new Rectangle(1, 3, 11, 13); trace(secondRect); // (x=1, y=3, w=11, h=13) var thirdRect:Rectangle = new Rectangle(5, 8, 17, 19); trace(thirdRect); // (x=5, y=8, w=17, h=19) var isContained:Boolean = secondRect.containsRect(thirdRect); trace(isContained); // false } } }
flash.display.DisplayObject.scrollRectflash.display.BitmapDataflash.display.DisplayObjectflash.display.NativeWindowflash.text.TextField.getCharBoundaries()flash.geom.Transform.pixelBoundsflash.display.Sprite.startDrag()flash.printing.PrintJob.addPage()Rectangle Crée un objet Rectangle dont le coin supérieur gauche est déterminé par les paramètres x et y, avec des paramètres width et height spécifiés.xNumber0Coordonnée x du coin supérieur gauche du rectangle. yNumber0Coordonnée y du coin supérieur gauche du rectangle. widthNumber0Largeur du rectangle en pixels. heightNumber0Hauteur du rectangle en pixels. Crée un objet Rectangle dont le coin supérieur gauche est déterminé par les paramètres x et y, et dont la hauteur et la largeur sont spécifiées. Crée un objet Rectangle dont le coin supérieur gauche est déterminé par les paramètres x et y et présentant la hauteur et la largeur spécifiées par les paramètres width et height. Si vous appelez cette fonction sans paramètres, les propriétés x, y, width et height du rectangle créé seront définies sur 0. xylargeurheightclone Renvoie un nouvel objet Rectangle avec les mêmes valeurs que l’objet Rectangle d’origine pour les propriétés x, y, width (largeur) et height (hauteur).Nouvel objet Rectangle avec les mêmes valeurs que l’objet Rectangle d’origine pour les propriétés x, y, width et height. flash.geom:RectangleRenvoie une copie de cet objet Rectangle. Renvoie un nouvel objet Rectangle avec les mêmes valeurs que l’objet Rectangle d’origine pour les propriétés x, y, width et height. xylargeurheightcontainsPoint Détermine si le point spécifié figure dans la zone rectangulaire définie par cet objet Rectangle.Si le point spécifié figure dans l’objet Rectangle, true est renvoyé ; false dans le cas contraire. Booleanpointflash.geom:PointLe point, tel qu’il est représenté par ses coordonnées x et y. Détermine si le point spécifié figure dans la zone rectangulaire définie par cet objet Rectangle en utilisant un objet Point comme paramètre. Détermine si le point spécifié figure dans la zone rectangulaire définie par cet objet Rectangle. Cette méthode est similaire à la méthode Rectangle.contains(), à ceci près qu’elle prend un objet Point comme paramètre. contains()flash.geom.PointcontainsRect Détermine si l’objet Rectangle spécifié par le paramètre rect figure dans cet objet Rectangle.Si l’objet Rectangle que vous spécifiez est compris dans cet objet Rectangle, true est renvoyé ; false dans le cas contraire. Booleanrectflash.geom:RectangleObjet Rectangle en cours de vérification. Détermine si l’objet Rectangle spécifié par le paramètre rect figure dans cet objet Rectangle. Détermine si l’objet Rectangle spécifié par le paramètre rect figure dans cet objet Rectangle. On dit qu’un objet Rectangle en contient un autre si ce dernier est entièrement circonscrit dans les limites du premier. contains Détermine si le point spécifié figure dans la zone rectangulaire définie par cet objet Rectangle.Si le point spécifié figure dans l’objet Rectangle, true est renvoyé ; false dans le cas contraire. BooleanxNumberCoordonnée x (position horizontale) du point. yNumberCoordonnée y (position verticale) du point. Détermine si le point spécifié figure dans la zone rectangulaire. Détermine si le point spécifié figure dans la zone rectangulaire définie par cet objet Rectangle. flash.geom.Pointequals Détermine si l’objet spécifié dans le paramètre toCompare est égal à cet objet Rectangle.Si l’objet a exactement les mêmes valeurs que cet objet Rectangle en ce qui concerne les propriétés x, y, width et height, true est renvoyé ; false est renvoyé dans le cas contraire. BooleantoCompareflash.geom:RectangleRectangle que vous voulez comparer à cet objet Rectangle. Détermine si l’objet spécifié dans le paramètre toCompare est égal à cet objet Rectangle. Détermine si l’objet spécifié dans le paramètre toCompare est égal à cet objet Rectangle. Cette méthode compare les propriétés x, y, width et height d’un objet aux mêmes propriétés de cet objet Rectangle. xylargeurheightinflatePoint Agrandit la taille de l’objet Rectangle.pointflash.geom:PointLa propriété x de cet objet Point permet d’agrandir l’objet Rectangle horizontalement. Sa propriété y permet d’agrandir l’objet Rectangle verticalement. Agrandit la taille de l’objet Rectangle en utilisant un objet Point comme paramètre. Agrandit la taille de l’objet Rectangle. Cette méthode est similaire à la méthode Rectangle.inflate(), à ceci près qu’elle prend un objet Point comme paramètre.

Les deux exemples de code suivants donnent le même résultat :

var rect1:Rectangle = new Rectangle(0,0,2,5); rect1.inflate(2,2) var rect1:Rectangle = new Rectangle(0,0,2,5); var pt1:Point = new Point(2,2); rect1.inflatePoint(pt1)
flash.geom.Point
inflate Agrandit l’objet Rectangle en fonction des quantités spécifiées en pixels.dxNumberValeur à ajouter sur la gauche et sur la droite de l’objet Rectangle. L’équation suivante permet de calculer la nouvelle largeur et la nouvelle position du rectangle : x -= dx; width += 2 ~~ dx; dyNumberValeur à ajouter en haut et en bas de l’objet Rectangle. L’équation suivante permet de calculer la nouvelle hauteur et la nouvelle position du rectangle : y -= dy; height += 2 ~~ dy; Agrandit l’objet Rectangle en fonction des quantités spécifiées, en pixels. Le point central de l’objet Rectangle reste inchangé tandis que sa taille augmente de la valeur de dx sur la gauche et la droite, et de la valeur de dy vers le haut et bas. xyintersection Si l’objet Rectangle spécifié dans le paramètre toIntersect forme une intersection avec cet objet Rectangle, la zone d’intersection est renvoyée en tant qu’objet Rectangle.Objet Rectangle qui correspond à la zone d’intersection. Si les rectangles ne se recoupent pas, cette méthode renvoie un objet Rectangle vide, c’est-à-dire un rectangle dont les propriétés x, y, width et height sont définies sur 0. flash.geom:RectangletoIntersectflash.geom:RectangleObjet Rectangle à prendre comme comparaison pour voir s’il recoupe cet objet Rectangle. Renvoie la zone de l’intersection. Si l’objet Rectangle spécifié dans le paramètre toIntersect forme une intersection avec cet objet Rectangle, la zone d’intersection est renvoyée en tant qu’objet Rectangle. Si les rectangles ne se recoupent pas, cette méthode renvoie un objet Rectangle vide dont les propriétés sont définies sur 0.

intersects Détermine si l’objet spécifié par le paramètre toIntersect forme une intersection avec cet objet Rectangle.Si l’objet spécifié forme une intersection avec cet objet Rectangle, true est renvoyé ; false dans le cas contraire. BooleantoIntersectflash.geom:RectangleObjet Rectangle à comparer à cet objet Rectangle. Détermine si l’objet spécifié dans le paramètre toIntersect forme une intersection avec cet objet Rectangle. Détermine si l’objet spécifié par le paramètre toIntersect forme une intersection avec cet objet Rectangle. Cette méthode vérifie les propriétés x, y, width et height de l’objet Rectangle spécifié pour déterminer s’il recoupe cet objet Rectangle. xylargeurheightisEmpty Détermine si cet objet Rectangle est vide.Si la largeur ou la hauteur de l’objet Rectangle est inférieure ou égale à 0, true est renvoyé ; false dans le cas contraire. Boolean Détermine si cet objet Rectangle est vide. offsetPoint Règle l’emplacement de l’objet Rectangle en utilisant un objet Point comme paramètre.pointflash.geom:PointObjet Point à utiliser pour décaler cet objet Rectangle. Règle l’emplacement de l’objet Rectangle en utilisant un objet Point comme paramètre. Règle l’emplacement de l’objet Rectangle en utilisant un objet Point comme paramètre. Cette méthode est similaire à la méthode Rectangle.offset(), à ceci près qu’elle prend un objet Point comme paramètre. flash.geom.Pointoffset Règle la position de l’objet Rectangle, identifié par son coin supérieur gauche, en fonction des quantités spécifiées.dxNumberDéplace en fonction de cette quantité la valeur x de l’objet Rectangle. dyNumberDéplace en fonction de cette quantité la valeur y de l’objet Rectangle. Règle l’emplacement de l’objet Rectangle. Règle la position de l’objet Rectangle, identifié par son coin supérieur gauche, en fonction des quantités spécifiées. setEmpty Définit toutes les propriétés de l’objet Rectangle sur 0.Définit l’ensemble des propriétés sur 0. Définit toutes les propriétés de l’objet Rectangle sur 0. Un objet Rectangle est vide si sa largeur ou sa hauteur est inférieure ou égale à 0.

Cette méthode règle les valeurs des propriétés x, y, width et height sur 0.

xylargeurheight
toString Crée et renvoie une chaîne qui répertorie les positions horizontale et verticale ainsi que la largeur et la hauteur de l’objet Rectangle.Chaîne répertoriant la valeur de chacune des propriétés suivantes de l’objet Rectangle : x, y, width et height. String Crée et renvoie une chaîne qui répertorie les positions horizontale et verticale ainsi que la largeur et la hauteur de l’objet Rectangle. xylargeurheightunion Additionne deux rectangles pour créer un nouvel objet Rectangle en remplissant l’essentiel de l’espace horizontal et vertical qui les sépare.Nouvel objet Rectangle qui correspond à l’union des deux rectangles. flash.geom:RectangletoUnionflash.geom:RectangleObjet Rectangle à ajouter à cet objet Rectangle. Additionne deux rectangles pour créer un nouvel objet Rectangle. Additionne deux rectangles pour créer un nouvel objet Rectangle en remplissant l’essentiel de l’espace horizontal et vertical qui les sépare.

Remarque : la méthode union() ignore les rectangles dotés de la valeur 0 comme hauteur ou largeur, comme : var rect2:Rectangle = new Rectangle(300,300,50,0);

height Hauteur du rectangle en pixels.NumberLa hauteur du rectangle en pixels. Hauteur du rectangle en pixels. La modification de la valeur height d’un objet Rectangle n’a pas d’effet sur les propriétés x, y et width.

xyheight
width Largeur du rectangle en pixels.NumberLa largeur du rectangle. Largeur du rectangle, en pixels. La modification de la valeur width d’un objet Rectangle n’a pas d’effet sur les propriétés x, y et height.

xyheight
x Coordonnée x du coin supérieur gauche du rectangle.NumberCoordonnée x du coin supérieur gauche du rectangle. Coordonnée x du coin supérieur gauche du rectangle. La modification de la valeur de la propriété x d’un objet Rectangle n’a pas d’effet sur les propriétés y, width et height.

La valeur de la propriété x est égale à la valeur de la propriété left.

left
y Coordonnée y du coin supérieur gauche du rectangle.NumberLa coordonnée y du coin supérieur gauche. Coordonnée y du coin supérieur gauche du rectangle. La modification de la valeur de la propriété y d’un objet Rectangle n’a pas d’effet sur les propriétés x, width et height.

La valeur de la propriété y est égale à la valeur de la propriété top.

xlargeurheighttop
bottomRight Emplacement du coin inférieur droit de l’objet Rectangle, déterminé par les valeurs des propriétés right et bottom.flash.geom:PointEmplacement du coin inférieur droit de l’objet Rectangle, déterminé par les propriétés right et bottom. Emplacement du coin inférieur droit de l’objet Rectangle, déterminé par les valeurs des propriétés right et bottom.

flash.geom.Point
bottom Somme des propriétés y et height.NumberSomme des propriétés y et height. Somme des propriétés y et height.

yheight
left Coordonnée x du coin supérieur gauche du rectangle.NumberCoordonnée x du coin supérieur gauche du rectangle. Coordonnée x du coin supérieur gauche du rectangle. La modification de la propriété left d’un objet Rectangle n’a pas d’effet sur les propriétés y et height. Elle a toutefois une incidence sur la propriété width, alors que la modification de la valeur x n’a aucun effet sur la propriété width.

La valeur de la propriété left est égale à la valeur de la propriété x.

xylargeurheight
right Somme des propriétés x et width.NumberSomme des propriétés x et width. Somme des propriétés x et width.

xlargeur
size Taille de l’objet Rectangle, exprimée en tant qu’objet Point avec les valeurs des propriétés width et height.flash.geom:PointTaille de l’objet Rectangle, exprimée en tant qu’objet Point avec les valeurs width (largeur) et height (hauteur). Taille de l’objet Rectangle, exprimée en tant qu’objet Point avec les valeurs des propriétés width et height. flash.geom.PointtopLeft Emplacement du coin supérieur gauche de l’objet Rectangle, déterminé par les coordonnées x et y du point.flash.geom:PointEmplacement du coin supérieur gauche de l’objet Rectangle, déterminé par les valeurs x et y du point. Emplacement du coin supérieur gauche de l’objet Rectangle, déterminé par les coordonnées x et y du point.

flash.geom.Pointxy
top Coordonnée y du coin supérieur gauche du rectangle.NumberCoordonnée y du coin supérieur gauche du rectangle. Coordonnée y du coin supérieur gauche du rectangle. La modification de la propriété top d’un objet Rectangle n’a pas d’effet sur les propriétés x et width. Elle a toutefois une incidence sur la propriété height, alors que la modification de la valeur y n’a aucun effet sur la propriété height.

La valeur de la propriété top est égale à la valeur de la propriété y.

xylargeurheight
ColorTransform La classe ColorTransform vous permet de régler les valeurs de couleur d’un objet d’affichage.Object La classe ColorTransform vous permet de régler les valeurs de couleur d’un objet d’affichage. Le réglage des couleurs ou transformation de couleur peut être appliqué aux quatre canaux : rouge, vert, bleu et transparence alpha.

Lorsqu’un objet ColorTransform est appliqué à un objet d’affichage, une nouvelle valeur est calculée de la manière suivante pour chaque canal de couleur :

  • Nouvelle valeur de rouge = (ancienne valeur de rouge * redMultiplier) + redOffset
  • Nouvelle valeur de vert = (ancienne valeur de vert * greenMultiplier) + greenOffset
  • Nouvelle valeur de bleu = (ancienne valeur de bleu * blueMultiplier) + blueOffset
  • Nouvelle valeur alpha = (ancienne valeur alpha * alphaMultiplier) + alphaOffset

Toute valeur de canal de couleur supérieure à 255 après le calcul est ramenée à 255. Si elle est inférieure à 0, elle est réglée sur 0.

Vous pouvez utiliser les objets ColorTransform comme suit :

  • Dans le paramètre colorTransform de la méthode colorTransform() de la classe BitmapData.
  • En tant que propriété colorTransform d’un objet Transform (utilisable comme propriété transform d’un objet d’affichage).

Vous devez utiliser le constructeur new ColorTransform() pour créer un objet ColorTransform avant de pouvoir appeler les méthodes de l’objet ColorTransform.

Les transformations de couleurs ne s’appliquent pas à la couleur d’arrière-plan d’un clip (tel qu’un objet SWF chargé). Elles s’appliquent uniquement aux graphiques et symboles associés au clip.

L’exemple suivant utilise la classe TransformExample pour créer une icône animée (sprite) simple, de forme carrée et dont le remplissage est dégradé. Chaque fois que l’utilisateur clique sur le carré, l’application transforme les couleurs de l’icône animée par un ajout sur le canal de la couleur rouge et un éclaircissement sur le canal de la couleur bleue. Cette opération s’accomplit de la façon suivante :
  1. Le constructeur crée un nouvel objet Sprite target.
  2. Le constructeur CustomButton() appelle la méthode draw() qui dessine un carré dégradé dans l’icône animée (sprite).
  3. Le constructeur CustomButton() ajoute un écouteur d’événement clic pour le sprite ; il est géré par le biais de la méthode clickHandler().
  4. Dans la méthode clickHandler(), deux propriétés sont défnies sur les propriétés redOffset et blueOffset de la transformation de couleur actuelle. Chacune d’elles est réglée sur 25. La propriété de l’icône animée carrée transform.colorTransform est ensuite modifiée pour utiliser les nouvelles valeurs de décalage. Chaque fois que l’utilisateur clique sur le carré, l’appel de la méthode clickHandler() modifie la couleur du carré en augmentant sa valeur de couleur rouge et en diminuant celle de couleur bleue.
package { import flash.display.Sprite; import flash.display.GradientType; import flash.geom.ColorTransform; import flash.events.MouseEvent; public class ColorTransformExample extends Sprite { public function ColorTransformExample() { var target:Sprite = new Sprite(); draw(target); addChild(target); target.useHandCursor = true; target.buttonMode = true; target.addEventListener(MouseEvent.CLICK, clickHandler) } public function draw(sprite:Sprite):void { var red:uint = 0xFF0000; var green:uint = 0x00FF00; var blue:uint = 0x0000FF; var size:Number = 100; sprite.graphics.beginGradientFill(GradientType.LINEAR, [red, blue, green], [1, 0.5, 1], [0, 200, 255]); sprite.graphics.drawRect(0, 0, 100, 100); } public function clickHandler(event:MouseEvent):void { var rOffset:Number = transform.colorTransform.redOffset + 25; var bOffset:Number = transform.colorTransform.redOffset - 25; this.transform.colorTransform = new ColorTransform(1, 1, 1, 1, rOffset, 0, bOffset, 0); } } }
flash.geom.Transformflash.display.DisplayObject.transformflash.display.BitmapData.colorTransform()ColorTransform Crée un objet ColorTransform pour un objet d’affichage avec les paramètres RVB et alpha spécifiés.redMultiplierNumber1.0Valeur du multiplicateur de rouge, comprise entre 0 et 1. greenMultiplierNumber1.0Valeur du multiplicateur de vert, comprise entre 0 et 1. blueMultiplierNumber1.0Valeur du multiplicateur de bleu, comprise entre 0 et 1. alphaMultiplierNumber1.0Valeur du multiplicateur de transparence alpha, comprise entre 0 et 1. redOffsetNumber0Valeur du décalage appliqué au canal de couleur rouge, comprise entre -255 et 255. greenOffsetNumber0Valeur du décalage appliqué au canal de couleur vert, comprise entre -255 et 255. blueOffsetNumber0Valeur du décalage appliqué au canal de couleur bleu, comprise entre -255 et 255. alphaOffsetNumber0Valeur du décalage appliqué au canal de transparence alpha, comprise entre -255 et 255. Crée un objet ColorTransform pour un objet d’affichage. Crée un objet ColorTransform pour un objet d’affichage avec les paramètres RVB et alpha spécifiés. concat Concatène l’objet ColorTranform, spécifié par le paramètre second, et l’objet ColorTransform actuel en définissant ce dernier comme résultat, ce qui se traduit par l’addition des deux transformations de couleur.secondflash.geom:ColorTransformObjet ColorTransform devant être combiné à l’objet ColorTransform actuel. Concatène l’objet ColorTranform, spécifié par le paramètre second, et l’objet ColorTransform actuel en définissant ce dernier comme résultat, ce qui se traduit par l’addition des deux transformations de couleur. L’application de l’objet ColorTransform concaténé revient à appliquer la second transformation de couleur, puis la seconde (original). toString Formate et renvoie une chaîne qui décrit l’ensemble des propriétés de l’objet ColorTransform.Chaîne répertoriant toutes les propriétés de l’objet ColorTransform. String Formate et renvoie une chaîne qui décrit l’ensemble des propriétés de l’objet ColorTransform. alphaMultiplier Valeur décimale multipliée par la valeur du canal de transparence alpha.Number Valeur décimale multipliée par la valeur du canal de transparence alpha.

Définir directement la valeur de transparence alpha d’un objet d’affichage à l’aide de la propriété alpha de l’occurrence de DisplayObject a une incidence sur la valeur de la propriété alphaMultiplier de la propriété transform.colorTransform de l’objet d’affichage.

flash.display.DisplayObject.alpha
alphaOffset Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de transparence alpha après sa multiplication par la valeur alphaMultiplier.NumberNombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de transparence alpha après sa multiplication par la valeur alphaMultiplier. Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de transparence alpha après sa multiplication par la valeur alphaMultiplier. blueMultiplier Valeur décimale multipliée par la valeur du canal de bleu.Number Valeur décimale multipliée par la valeur du canal de bleu. blueOffset Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de bleu après sa multiplication par la valeur blueMultiplier.NumberNombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de bleu après sa multiplication par la valeur blueMultiplier. Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de bleu après sa multiplication par la valeur blueMultiplier. greenMultiplier Valeur décimale multipliée par la valeur du canal de vert.Number Valeur décimale multipliée par la valeur du canal de vert. greenOffset Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de vert après sa multiplication par la valeur greenMultiplier.NumberNombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de vert après sa multiplication par la valeur greenMultiplier. Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de vert après sa multiplication par la valeur greenMultiplier. redMultiplier Valeur décimale multipliée par la valeur du canal de rouge.Number Valeur décimale multipliée par la valeur du canal de rouge. redOffset Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de rouge après sa multiplication par la valeur redMultiplier.NumberNombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de rouge après sa multiplication par la valeur redMultiplier. Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de rouge après sa multiplication par la valeur redMultiplier. color Valeur de couleur RVB d’un objet ColorTransform.uint Valeur de couleur RVB d’un objet ColorTransform.

La définition de cette propriété entraîne la modification des trois valeurs de décalage de couleur (redOffset, greenOffset et blueOffset) et le réglage sur zéro des trois valeurs de multiplicateur de couleur (redMultiplier, greenMultiplier et blueMultiplier). Les valeurs de multiplicateur et de décalage de la transparence alpha ne changent pas.

Lorsque vous définissez la valeur de cette propriété, utilisez le format 0xRRGGBB. Les valeurs RR, GG et BB se composent chacune de deux chiffres hexadécimaux qui spécifient le décalage de chaque composant de couleur. La valeur 0x indique au compilateur ActionScript que le nombre est une valeur hexadécimale.

Point L’objet Point représente un emplacement dans un système de coordonnées à deux dimensions où x est l’axe horizontal et y l’axe vertical.La classe Point représente un emplacement dans un système de coordonnées à deux dimensions. Object L’objet Point représente un emplacement dans un système de coordonnées à deux dimensions où x est l’axe horizontal et y l’axe vertical.

Le code suivant crée un point à (0,0) :

var myPoint:Point = new Point();

Les méthodes et propriétés des classes suivantes utilisent des objets Point :

  • BitmapData
  • Classe DisplayObject
  • DisplayObjectContainer
  • DisplacementMapFilter
  • NativeWindow
  • Matrix
  • Rectangle

Vous pouvez utiliser le constructeur new Point() pour créer un objet Point.

L’exemple suivant utilise la classe PointExample pour créer un nombre de nouveaux objets Point à différentes coordonnées x,y, puis il utilise la méthode trace() pour produire les résultats de diverses méthodes de classe. package { import flash.display.Sprite; import flash.geom.Point; public class PointExample extends Sprite { public function PointExample() { var point1:Point = new Point(); trace(point1); // (x=0, y=0) var point2:Point = new Point(6, 8); trace(point2); // (x=6, y=8) trace(Point.interpolate(point1, point2, 0.5)); // (x=3, y=4) trace(Point.distance(point1, point2)); // 10 trace(point1.add(point2)); // (x=6, y=8) var point3:Point = point2.clone(); trace(point2.equals(point3)); // true point3.normalize(2.5); trace(point3); // (x=1.5, y=2) trace(point2.subtract(point3)); // (x=4.5, y=6) trace(point1.offset(2, 3)); // var angle:Number = Math.PI * 2 * (30 / 360); // 30 degrees trace(Point.polar(4, angle)) // (x=3.464101615137755, y=1.9999999999999998) } } }
flash.display.BitmapDataflash.display.DisplayObjectflash.display.DisplayObjectContainerflash.filters.DisplacementMapFilterflash.geom.Matrixflash.display.NativeWindowflash.geom.RectanglePoint Crée un nouveau point.xNumber0Coordonnée horizontale. yNumber0Coordonnée verticale. Crée un nouveau point. Si vous ne transmettez pas de paramètres à cette méthode, un point est créé aux coordonnées (0,0). add Ajoute les coordonnées d’un autre point à celles de ce point pour créer un nouveau point.Le nouveau point. flash.geom:Pointvflash.geom:PointLe point à ajouter. Ajoute les coordonnées d’un autre point à celles de ce point pour créer un nouveau point. clone Crée une copie de cet objet Point.Nouvel objet Point. flash.geom:PointCrée une copie de l’objet Point. Crée une copie de cet objet Point. distance Renvoie la distance entre pt1 et pt2.Distance entre le premier et le second point. Numberpt1flash.geom:PointLe premier point. pt2flash.geom:PointLe second point. Renvoie la distance entre pt1 et pt2. equals Détermine si deux points sont égaux.Si l’objet est égal à cet objet Point, true est renvoyé ; false est renvoyé dans le cas contraire. BooleantoCompareflash.geom:PointPoint à comparer. Détermine si deux points sont égaux. Deux points sont considérés comme égaux s’ils ont les mêmes valeurs x et y. interpolate Détermine un point entre deux points spécifiés.Nouveau point, interpolé. flash.geom:Pointpt1flash.geom:PointLe premier point. pt2flash.geom:PointLe second point. fNumberNiveau d’interpolation entre les deux points. Indique l’emplacement du nouveau point sur la ligne reliant pt1 et pt2. Si f=1, pt1 est renvoyé ; si f=0, pt2 est renvoyé. Détermine un point entre deux points spécifiés. Le paramètre f détermine l’emplacement du nouveau point interpolé par rapport aux deux points d’extrémité spécifiés par les paramètres pt1 et pt2. Plus la valeur du paramètre f est proche de 1.0, plus le point interpolé est proche du premier point (paramètre pt1). Plus la valeur du paramètre f est proche de 0, plus le point interpolé est proche du second point (paramètre pt2). normalize Met à l’échelle le segment de ligne entre (0,0) et le point actuel en fonction d’une longueur définie.Point normalisé. thicknessNumberValeur de redimensionnement. Si, par exemple, le point actuel se trouve à (0,5) et que vous le normalisez à 1, les coordonnées du point renvoyé sont (0,1). Met à l’échelle le segment de ligne entre (0,0) et le point actuel en fonction d’une longueur définie. lengthoffset Décale l’objet Point de la quantité spécifiée.dxNumberValeur de décalage pour la coordonnée horizontale, x. dyNumberValeur de décalage pour la coordonnée verticale, y. Décale l’objet Point de la quantité spécifiée. La valeur de dx est ajoutée à la valeur d’origine de x pour créer la nouvelle valeur de x. La valeur de dy est ajoutée à la valeur d’origine de y pour créer la nouvelle valeur de y. polar Convertit une paire de coordonnées polaires en coordonnées cartésiennes.Point cartésien. flash.geom:PointlenNumberCoordonnée de longueur de la paire polaire. angleNumberAngle, en radians, de la paire polaire. Convertit une paire de coordonnées polaires en coordonnées cartésiennes. lengthMath.round()subtract Soustrait les coordonnées d’un autre point à celles de ce point pour créer un nouveau point.Le nouveau point. flash.geom:Pointvflash.geom:PointPoint à soustraire. Soustrait les coordonnées d’un autre point à celles de ce point pour créer un nouveau point. toString Renvoie une chaîne qui contient les valeurs des coordonnées x et y.Représentation sous forme de chaîne des coordonnées. StringRenvoie une chaîne qui contient les valeurs des coordonnées x et y. Renvoie une chaîne qui contient les valeurs des coordonnées x et y. La chaîne se présente au format "(x=x, y=y)" ; par conséquent, l’appel de la méthode toString() pour un point se trouvant à 23,17 renvoie "(x=23, y=17)". x Les coordonnées horizontales du point.Number Les coordonnées horizontales du point. La valeur par défaut est 0. y Les coordonnées verticales du point.Number Les coordonnées verticales du point. La valeur par défaut est 0. length La longueur du segment de ligne de (0,0) à ce point.Number La longueur du segment de ligne de (0,0) à ce point. Point.polar()
Orientation3D La classe Orientation3D énumère les valeurs constantes représentant le style d’orientation d’un objet Matrix3D.Object La classe Orientation3D énumère les valeurs constantes représentant le style d’orientation d’un objet Matrix3D. Les trois types d’orientation sont les angles d’Euler, l’angle des axes et le quaternion. Les méthodes decompose et recompose de l’objet Matrix3D prennent l’un de ces types énumérés pour identifier les composants de rotation de la matrice. flash.geom.Matrix3Dflash.geom.Transformflash.geom.PerspectiveProjectionAXIS_ANGLE L’orientation de l’angle des axes utilise une combinaison d’un axe et d’un angle pour déterminer l’orientation.axisAngleString L’orientation de l’angle des axes utilise une combinaison d’un axe et d’un angle pour déterminer l’orientation. Une ligne ou un vecteur partant du centre d’un globe tridimensionnel et allant vers la surface est un exemple d’axe. L’axe autour duquel l’objet pivote est un vecteur unitaire qui représente toutes les directions possibles dans l’espace à trois dimensions. L’angle représente l’amplitude de la rotation autour du vecteur. La direction détermine le point auquel fait face un objet d’affichage et l’angle de roulement détermine le haut. Vous pouvez utiliser les objets Vector3D et Matrix3D pour déterminer les diverses transformations matricielles, de même que les valeurs de programmation tridimensionnelles importantes, telles que la distance par rapport à l’intersection de deux objets pouvant permettre de détecter une simple collision entre des objets tridimensionnels.

Les méthodes Matrix3D.appendRotation() et Matrix3D.prependRotation() utilisent l’orientation de l’angle des axes.

flash.geom.Matrix3D.decompose()flash.geom.Matrix3D.recompose()
EULER_ANGLES Les angles d’Euler, orientation par défaut des méthodes decompose() et recompose(), définissent l’orientation avec trois angles de rotation distincts pour chaque axe.eulerAnglesStringDéfinit l’orientation avec trois angles de rotation distincts pour chaque axe. Les angles d’Euler, orientation par défaut des méthodes decompose() et recompose(), définissent l’orientation avec trois angles de rotation distincts pour chaque axe. En général, une rotation autour de l’axe x est suivie d’une rotation autour de l’axe y, suivie d’une rotation autour de l’axe z.

Les angles d’Euler entraînent parfois des erreurs d’animation à cause de problèmes tels que des singularités lors de la rotation autour de l’axe x ou gimbal lock (perte d’un degré de liberté). Par exemple, comme avec les angles d’Euler chaque axe est géré indépendamment, la singularité gimbal lock peut survenir en cas de rotation autour de plusieurs axes. Les axes peuvent alors s’aligner, ce qui entraîne des résultats inattendus.

Les propriétés de rotation des axes de l’objet d’affichage effectuent la rotation des angles d’Euler.

flash.geom.Matrix3D.decompose()flash.geom.Matrix3D.recompose()
QUATERNION L’orientation quaternion utilise des nombres complexes.quaternionStringUne orientation en quaternion utilise les trois axes (x,y,z) et un angle de rotation (w). L’orientation quaternion utilise des nombres complexes. Une orientation en quaternion utilise les trois axes (x,y,z) et un angle de rotation (w). Un quaternion garantit le chemin le plus efficace et le plus court pour la rotation. Il permet également d’obtenir une rotation sans gimbal lock. Un gimbal lock peut survenir lorsque les axes s’alignent lors d’une rotation autours de plusieurs axes, entraînant ainsi des résultats inattendus.

La méthode Matrix3D.interpolate() utilise le quaternion.

flash.geom.Matrix3D.decompose()flash.geom.Matrix3D.recompose()
PerspectiveProjection La classe PerspectiveProjection permet d’affecter ou de modifier facilement les transformations de perspective d’un objet d’affichage et de tous ses enfants.Object La classe PerspectiveProjection permet d’affecter ou de modifier facilement les transformations de perspective d’un objet d’affichage et de tous ses enfants. Pour des transformations de perspective complexes ou personnalisées, utilisez la classe Matrix3D. Alors que la classe PerspectiveProjection fournit les propriétés de base de la présentation tridimensionnelle, la classe Matrix3D permet de mieux contrôler la présentation tridimensionnelle des objets d’affichage.

La projection est un moyen de représenter un objet tridimensionnel dans un espace à deux dimensions, par exemple un cube projeté sur l’écran d’un ordinateur. La projection de perspectives utilise un affichage frustum (pyramide rectangulaire) pour modeler et projeter un monde tridimensionnel et ses objets sur l’écran. L’affichage frustum devient de plus en plus large au fur et à mesure qu’il s’éloigne de l’origine du point de vue. L’origine du point de vue peut être un appareil photo ou les yeux d’un observateur faisant face à l’écran. La perspective projetée donne l’illusion d’un espace à trois dimensions, avec profondeur et distance, où les objets proches de l’écran semblent plus gros que les objets éloignés.

Tout objet PerspectiveProjection par défaut est une structure définie pour la transformation de perspective de l’objet racine, basée sur le champ de vision et les proportions (dimensions) de la scène. Le centre de la projection, ou point de fuite, est défini au centre de la scène, ce qui signifie que les objets d’affichage tridimensionnels disparaissent vers le centre de la scène lorsqu’ils reculent sur l’axe z. Le point de vue par défaut est au point (0,0), regardant vers l’axe z positif. L’axe y pointe vers le bas de l’écran. Vous pouvez accéder aux paramètres de projection de perspective de l’objet d’affichage root et modifier les propriétés de champ de vision et de centre de projection de la propriété perspectiveProjection par l’intermédiaire de la propriété DisplayObject.transform de l’objet root.

Vous pouvez également définir un paramètre de projection de perspective différent pour un objet d’affichage via la projection de perspective du parent. Commencez par créer un objet PerspectiveProjection et définissez ses propriétés fieldOfView et projectionCenter. Ensuite, affectez l’objet PerspectiveProjection à l’objet d’affichage parent à l’aide de la propriété DisplayObject.transform. La transformation et la matrice de projection spécifiée s’appliqueront alors à tous les enfants tridimensionnels de l’objet d’affichage.

flash.display.DisplayObject.transformflash.geom.Transformflash.geom.Matrix3Dflash.geom.Utils3DPerspectiveProjection Crée une occurrence d’objet PerspectiveProjection. Crée une occurrence d’objet PerspectiveProjection. toMatrix3D Renvoie l’objet Matrix3D sous-jacent de l’objet d’affichage.Objet Matrix3D sous-jacent. flash.geom:Matrix3D Renvoie l’objet Matrix3D sous-jacent de l’objet d’affichage.

Un objet d’affichage, tel que l’objet racine, peut avoir un objet PerspectiveProjection sans que la propriété Matrix3D ne soit définie pour ses transformations. En fait, pour spécifier la transformation de la perspective, servez-vous d’un objet PerspectiveProjection ou Matrix3D. Si, lorsque vous utilisez l’objet PerspectiveProjection, un objet Matrix3D est nécessaire, la méthode toMatrix3D() peut récupérer l’objet Matrix3D sous-jacent de l’objet d’affichage. Par exemple, la méthode toMatrix3D() peut être utilisée avec la méthode Utils3D.projectVectors().

flash.geom.Matrix3D
fieldOfView Spécifie l’angle, en degrés compris entre 0 et 180, du champ de vision en trois dimensions.NumberSpécifie l’angle, en degrés compris entre 0 et 180, du champ de vision en trois dimensions. Spécifie l’angle, en degrés compris entre 0 et 180, du champ de vision en trois dimensions. Cette valeur détermine la puissance de la transformation de perspective, et la distorsion s’applique à un objet d’affichage tridimensionnel avec coordonnée z non nulle.

Une valeur proche de 0 signifie que les coordonnées bidimensionnelles x et y de l’écran sont quasiment les mêmes que les coordonnées tridimensionnelles x, y et z, avec très peu ou aucune distorsion. En d’autres termes, dans le cas d’un angle faible, un objet d’affichage se déplaçant vers le bas de l’axe z semble conserver à peu près la même taille et ne se déplacer que très peu.

Une valeur proche de 180 degrés entraînent un effet de déformation : les positions dont la valeur z est inférieure à 0 sont exagérées, tandis que les positions dont la valeur z est supérieure à 0 sont réduites. Avec un très grand angle, un objet d’affichage se déplaçant le long de l’axe z semble changer de taille rapidement et se déplacer sur de grandes distances. Si le champ de vision est défini sur 0 ou 180, rien n’est visible à l’écran.

focalLength Distance entre l’oeil ou l’origine du point de vue (0,0,0) et l’objet d’affichage placé sur l’axe z.Number Distance entre l’oeil ou l’origine du point de vue (0,0,0) et l’objet d’affichage placé sur l’axe z. Pendant la transformation de la perspective, la propriété focalLength est calculée dynamiquement à l’aide de l’angle du champ de vision et des proportions de la scène (largeur de la scène divisée par sa hauteur). fieldOfViewprojectionCenter Point bidimensionnel représentant le centre de la projection, le point de fuite de l’objet d’affichage.flash.geom:Point Point bidimensionnel représentant le centre de la projection, le point de fuite de l’objet d’affichage.

La propriété projectionCenter est un décalage du point d’alignement par défaut, correspondant au point supérieur gauche de la scène, point (0,0). Le centre de la transformation de projection par défaut est placé au milieu de la scène, ce qui signifie que les objets d’affichage tridimensionnels disparaissent vers le centre de la scène au fur et à mesure qu’ils reculent sur l’axe z.