2010-04-23 15 views
0

J'essaie de faire une boîte déroulante, quand une souris entre et STAYS sur la zone "wrapper", "pubsBox" se déplace de 10 pixels vers la gauche.FLex MouseEvent ne se déclenche pas lorsque la souris reste sur l'élément

<mx:Canvas id="wrapper" height="80" width="750"> 
    <mx:HBox id="pubsBox" horizontalGap="10" height="80" width="100%" /> 
</mx:Canvas> 

Mon problème est que je ne suis pas sûr de savoir comment faire le travail de MouseEvent.MOUSE_OVER, de reconnaître que la souris est toujours sur la zone et ainsi pubsBox devrait continuer à se déplacer 10 pixels vers la gauche à chaque seconde. Je comprends que je dois utiliser une minuterie, mais ce qui m'inquiète, c'est le fait que je n'arrive pas à faire en sorte que Flex reconnaisse que la souris est toujours sur «wrapper» et continue de déclencher l'événement. Des idées?

Répondre

0

Utilisez MouseEvent.MOUSE_OUT. Supposons que la souris est toujours sur l'enveloppe jusqu'à ce que l'événement mouse out soit déclenché. Donc, essentiellement, vous allez configurer une sorte de boucle qui déplacera continuellement le pubsBox jusqu'à ce que l'événement MouseEvent.MOUSE_OUT soit déclenché.

<mx:Canvas id="wrapper" height="80" width="750" mouseOver="startMove(e)" mouseOut="stopMove(e)"> <mx:HBox id="pubsBox" horizontalGap="10" height="80" width="100%" /> </mx:Canvas>

Dans la fonction startMove, vous timer installation etc, pour la logique de réaliser le mouvement. Dans la fonction stopMove, ajoutez votre logique pour arrêter la minuterie et tuer le processus de déplacement.

+0

Bonjour Ryan, pouvez-vous élaborer? –

+0

J'espère que cela aide, laissez-moi savoir si ce n'est toujours pas clair. –

+0

oh attends ... je pense que je sais ce que tu dis. Vous dites de démarrer la minuterie sur mouseOver et seulement l'arrêter si mouseOut. –