Je souhaite faire pivoter une image-objet en 3D à l'aide de AS3. L'exemple ci-dessous, indique comment faire pivoter une image à l'aide MXML et AS3, cependant, je veux le faire par pur AS3:Rotation d'une image-objet à l'aide d'ActionScript3
grâce
Je souhaite faire pivoter une image-objet en 3D à l'aide de AS3. L'exemple ci-dessous, indique comment faire pivoter une image à l'aide MXML et AS3, cependant, je veux le faire par pur AS3:Rotation d'une image-objet à l'aide d'ActionScript3
grâce
Flex est AS3. Flex compile jusqu'à actionscript. Souvent, c'est simplement un moyen déclaratif (par opposition à l'impératif) de faire avancer les choses.
Ainsi, la viande de cet exemple est dans les extraits de code:
private function playEffect(target:Animate, angle:Number):void {
if (!target.isPlaying) {
rotY += angle;
target.play();
}
}
//snip...
<fx:Declarations>
<fx:Number id="rotY">0</fx:Number>
<s:Rotate3D id="fxRotate3DNeg" target="{image}" angleYTo="{rotY}"
autoCenterTransform="true" />
<s:Rotate3D id="fxRotate3DPos" target="{image}" angleYTo="{rotY}"
autoCenterTransform="true" />
</fx:Declarations>
Qu'est-ce qui fait le travail est l'objet « Animer » en liaison avec les deux objets « Rotation3D ». Donc, pour que cela fonctionne en AS3 pur, la seule chose difficile à faire est de créer des liens vers les bibliothèques flexibles. En fonction de votre IDE, c'est assez facile à faire. De là, tout ce que vous avez à faire est de créer les objets que vous voulez, impérativement et non de manière déclarative. Ainsi, au lieu de faire des choses comme:
<fx:Number id="rotY">0</fx:Number>
Vous devez faire:
var rotY:Number = 0;
import spark.effects.Rotate3D;
var rotY:Number;
var fxRotate3DNeg:Rotate3D;
var fxRotate3DPos:Rotate3D;
rotY = 0;
fxRotate3DNeg = new Rotate3D(image);; //the constructor sets the "target" property
fxRotate3DNeg.angleYTo = rotY;
fxRotate3DNeg.autoCenterTransform = true;
fxRotate3DPos = new Rotate3D(image);
fxRotate3DPos.angleYTo = rotY;
fxRotate3DPos.autoCenterTransform = true;
Maintenant, c'est du haut de ma tête, regardant the Rotate3D API et en tapant dans cet éditeur de texte, donc je suis sûr que ce n'est pas parfait, mais il devrait vous donner une idée claire sur la façon d'avancer. Si vous avez besoin de plus d'aide, faites le moi savoir et je pourrais traduire plus de l'exemple.
J'espère que cela aide,
--gMale
EDIT: Comme je regarde le code, un autre point délicat est que les propriétés de angleYTo sont liés à rotY. Donc, pour que cela fonctionne vraiment, vous devez explicitement définir ces propriétés dans la fonction playEffect. Comme dans:
private function playEffect(target:Animate, angle:Number):void {
if (!target.isPlaying) {
rotY += angle;
//manually set properties
fxRotate3DNeg.angleYTo = fxRotate3DPos.angleYTo = rotY;
target.play();
}
}
Sinon, vous pourriez imperatively create the data binding, ce qui est assez facile à faire. Ensuite, la fonction playEffect ne nécessiterait aucune modification.
C'est comme faire tourner l'objet comme vous le faites habituellement. Toutefois, dans l'espace 3D, vous devrez utiliser: sprite.rotationY
Assurez-vous que vous exportez pour le flash 10 ou ultérieur puisque la fonctionnalité 3d n'existe pas dans les versions antérieures.