2010-03-25 3 views
0

Est-ce possible?Définir la propriété scaleX sur un Sprite sans modifier l'intérieur de l'enfant

Mon site est configuré avec les boutons suivant et précédent sur les côtés droit et gauche, et lorsque vous survolez l'une des zones touchées autour des boutons, un fondu Sprite contient un TextField qui décrit la page suivante. Ledit sprite appelle la méthode StartDrag(), donc il suit la souris dans les limites, ce qui est très bien et dandy sur le côté gauche de la page. Adobe, cependant, semble avoir oublié de modifier dynamiquement le point d'enregistrement d'un sprite, MC, n'importe quoi d'autre, alors quand vous survolez le côté droit de la page, l'image-objet est affichée en haut à gauche et est principalement hors de la scène. Essayer de pirater ce problème J'ai essayé beaucoup de choses (classes écrites par d'autres, d'autres hacks) et le meilleur que j'ai trouvé est d'utiliser la méthode scaleX sur le Sprite, en changeant l'échelle à -1. Ceci, bien sûr, donne l'impression que le Sprite est réfléchi à partir de son point normal, ce qui signifie que tous ses enfants apparaissent à l'envers.

Y at-il de toute façon que je peux utiliser ce hack sans qu'il modifie le texte?

OU

Est-ce que quelqu'un sait une autre façon d'aller sur l'affichage d'un sprite d'un autre coin? Est-il possible de faire apparaître un sprite et de suivre la souris du côté gauche du pointeur de la souris?

Merci beaucoup d'avance.

Voici un extrait pour donner une idée de ce qui se passe:

naxtPage.labelBG.scaleX = -1; 
nextPage.labelBG.startDrag(true, nextHitRect); 
nextPage.labelBG.x = nextPage.labelBG.parent.mouseX; 
nextPage.labelBG.y = nextPage.labelBG.parent.mouseY; 

Vive

Répondre

0

Vous pouvez le faire tout à fait différemment, en utilisant un événement ENTER_FRAME. Si vous ne créez l'événement que lorsque l'utilisateur survole un bouton, l'événement déclenche à l'intérieur de la fonction, vérifie la position de la souris par rapport aux limites de la scène et détermine l'emplacement de votre fenêtre par rapport au curseur. Comme cette fonction sera appelée à chaque image, votre pop-up suivra la souris, toujours au bon endroit. Quelque chose comme:

function onMouseOver(event:MouseEvent):void 
{ 
    addEventListener(Event.ENTER_FRAME, updatePopup); 
} 

function updatePopup(event:Event):void 
{ 
    if (mouseX > (stage.width - popup.width)) 
    { 
     //Display the pop up on the left of the cursor 
     popup.x = mouseX - popup.width; 
    } 
    else 
    { 
     //Display the pop up on the right of the cursor as normal 
     popup.x = mouseX; 
    } 
} 

Vous souhaitez également créer un événement rollOut, et quand qui se déclenche retirer l'écouteur d'événement ENTER_FRAME. Je n'ai pas testé ce code du tout, mais je suppose que quelque chose dans ce sens résoudra votre problème.

Espérons que ça aide.

Debu

+0

qui a travaillé sur un test, mais en raison de la nature du cadre du site est construit, je ne pouvais pas la mettre en œuvre - nous avons plusieurs exemples de types d'événements personnalisés que je ne pouvais pas analyser ce idée à travers. Toutefois, je l'ai fait fonctionner d'une autre manière en enveloppant la fenêtre contextuelle dans une autre image-objet invisible et en définissant les fenêtres contextuelles x sur -container.width. Toujours hackish, mais semble fonctionner. Merci beaucoup pour votre réponse si! C'était grandement apprécié. – grammar

+0

Pas de problème, je suis content que vous ayez réussi à trouver une solution! – debu

Questions connexes