2009-06-18 8 views
2

Salut Je travaille sur l'actionScript 3 dont je dois utiliser l'échelle de rotation de traduction pour un MovieClip. J'ai la rotation et la mise à l'échelle qui fonctionnent correctement mais quand je traite de traduction je trouve le problème que la traduction déplace l'objet hors de l'origine alors quand je voulais tourner l'objet, l'objet ne tourne plus comme prévu. Quelle est la meilleure façon de mettre en œuvre la traduction afin qu'il traduise le movieclip tout en traduisant l'origine ....Transaction ActionScript Traduction

Dernière chose .. Quelle est la différence entre movieclip.scale et movieclip.transform.scale fonction? Si j'utilise movieclip.scale, puis-je toujours obtenir la movieclip.transform.matrix à partir de ce movieclip.scale

Répondre

2

Toutes les transformations matricielles, y compris la rotation et l'échelle, prennent effet par rapport à l'origine du système de coordonnées où le clip vit. Si vous voulez faire pivoter ou mettre à l'échelle tout autre point, vous devez traduire le clip à ce point, le transformer et le traduire. En d'autres termes, ceci:

clip.rotation = 30; 

fait la même chose que ceci:

var tx:Number = clip.x; 
var ty:Number = clip.y; 
var m:Matrix = clip.transform.matrix; 
m.translate(-tx, -ty); 
m.rotate(30*Math.PI/180); 
m.translate(tx, ty); 
clip.transform.matrix = m; 

Il fonctionne exactement de la même manière avec la transformation à grande échelle. Pour votre autre question, la différence entre MovieClip.scaleX/Y et Matrix.scale est exactement la même qu'avec la rotation - vous pouvez appliquer vos rotations de toute façon, mais avec les propriétés MC intégrées, elles prennent effet par rapport à la le point d'alignement du clip, et les fonctions Matrix sont relatives à l'origine. Si le point d'alignement du clip est à (0,0), ils fonctionnent de la même manière.