2010-03-03 8 views
1

Je charge dynamiquement des clips vidéo (SWFS) dans des clips joints (à partir de la bibliothèque). Les films chargés n'ont pas tous des points centraux, ce qui signifie que leur point d'enregistrement n'est pas directement au centre. Cela pose un problème lorsque je les charge dans les clips attachés, car ils ne se concentrent pas sur les clips attachés, ce que je veux qu'ils fassent. Y at-il un moyen de centrer un MovieClip basé sur la largeur et la hauteur au lieu du point d'enregistrement?MovieClip central sur le point

Merci d'avance!

Répondre

2

Utilisez getBounds. Bounds.x et bounds.y sera {0} pour un clip aligné en haut à gauche. Toute autre valeur vous indique à quel point il est décentré.

Si votre clip chargé est loadedClip et que son parent est containerClip, les éléments suivants fonctionneront.

loadedClip.x = (container.width - loadedClip.width)/2 - loadedClip.getBounds(loadedClip).x; 
loadedClip.y = (container.height - loadedClip.height)/2 - loadedClip.getBounds(loadedClip).y; 

Si les clips impliqués dans ce genre ont été mis à l'échelle, alors vous devez régler pour la mise à l'échelle comme suit:

loadedClip.x = (container.width - loadedClip.width)/2 - (loadedClip.getBounds(loadedClip).x * loadedClip.scaleX); 
loadedClip.y = (container.height - loadedClip.height)/2 - (loadedClip.getBounds(loadedClip).y * loadedClip.scaleY); 

J'espère que cela aide.

+0

Peu importe. Le premier message échoue, c'est pour AS3. –

0

Lorsque la charge est terminée, vous pouvez obtenir la largeur et la hauteur des films chargés et réglez le x & y positionner en conséquence:

function onLoadComplete(){ 
loadedmc._x = loadedmc._width/2 * -1; 
loadedmc._y = loadedmc._height/2 * -1; 
} 
+0

Mais vous ne savez pas où se trouve le point d'enregistrement sur le MC chargé. Cela ne fonctionnerait que si le point d'enregistrement était dans le coin à chaque fois. – ssergei

+0

Bon point. Y at-il un travail autour? – mattsven

+0

Ah, c'est vrai. Alors peut-être créer un MC vide et charger le film là-bas. Ensuite, cela aura le coin supérieur gauche comme point d'enregistrement. var container = createEmptyMovieClip ("conteneur", getNextHighestDepth()); container.loadMovie ("film"); // chargement terminé container._x = container._width/2 * -1; etc ... – majman

Questions connexes