2010-07-30 4 views
0

J'ai travaillé sur la création d'un bouton en utilisant un MovieClip. J'utilise les événements suivants:Comment est-ce que j'obtiens un bouton même quand il est flou avec ActionScript 3.0?

this.addEventListener(MouseEvent.CLICK,OnClick); 
this.addEventListener(MouseEvent.ROLL_OVER,OnButtonRollOver); 
this.addEventListener(MouseEvent.ROLL_OUT,OnButtonRollOut); 
this.addEventListener(MouseEvent.MOUSE_DOWN,OnMouseDown); 
this.addEventListener(MouseEvent.MOUSE_UP,OnMouseUp); 

Tout fonctionne très bien à l'exception de quand je clique sur le bouton et [sans relâcher le bouton de la souris] Je fais glisser la souris sur la mise au point du bouton, puis je libère la souris bouton l'événement OnMouseUp n'est pas appelé.

Comment puis-je résoudre ce problème? Merci, Y_Y.

+0

Avez-vous besoin d'actions séparées sur mouse_down et mouse_up? Pouvez-vous contourner le problème en utilisant un seul événement ou l'autre? –

Répondre

2

l'intérieur de votre gestionnaire OnMouseDown vous pouvez ajouter ce qui suit pour vous assurer d'obtenir l'événement MouseEvent.MOUSE_UP que vous désirez:

private function OnMouseDown(e:MouseEvent):void 
{ 
    stage.addEventListener(MouseEvent.MOUSE_UP, onStageMouseUp); 
} 

private function onStageMouseUp(e:MouseEvent):void 
{ 
    stage.removeEventListener(MouseEvent.MOUSE_UP, onStageMouseUp); 
    // handle mouse up here 
} 

Bien sûr, cela signifie que vous aurez à faire un travail supplémentaire pour faire des gestionnaires sûrs sont ajoutées/enlevé de manière appropriée. Vous pouvez également mettre en cache une référence au bouton cible dans votre gestionnaire OnMouseDown si le scénario que vous décrivez se produit et que vous devez toujours savoir quel bouton a été enfoncé (en supposant que vos gestionnaires soient hors de portée du bouton lui-même).

Questions connexes