2013-02-09 2 views
1

J'ai un MenuBar avec des objets qui ont des enfants de type = "check". Par exemple:Flex MenuBar: Rester ouvert sur itemclick

Menu

  • Menu Point A

    /Liste item Vérifiez 1A

    /Liste item Vérifiez 2A

    /Liste item Vérifiez 3A

  • Menu Article B

    /Liste item Vérifiez 1B

    /Liste item Check 2B

Ma question est la suivante: Comment puis-je éviter la MenuBar de se cacher lorsque l'utilisateur clique sur un élément (événement itemClick)? Je veux que l'utilisateur puisse "vérifier" plusieurs éléments à la fois, sans que le menu se cache ou se ferme. Question bonus: Quelle est la manière la plus simple de réinitialiser tous les éléments cochés? :-)

Cordialement,

Sebastian

Répondre

1

La seule façon que je peux vous conseiller est de faire patching singe du menu de classe. J'ai essayé de le faire par moi, cela fonctionne comme vous l'avez décrit dans votre tâche. La principale raison pour cela est que les fonctions que nous devons redéfinir utilisent des membres privés de cette classe. Nous ne pouvons donc pas simplement les contourner.

Le but de notre mission est de patcher la fonction

function mouseUpHandler(event:MouseEvent):void{...} 

A son extrémité, vous pouvez voir l'appel

hideAllMenus(); 

Nous devons ajouter une nouvelle variable pour contrôler si oui ou non notre article est de type "vérifier". Donc, vous devez ajouter cette ligne dans le beginnig

var isCheck:Boolean = _dataDescriptor.getType(item) == "check"; 

et cette condition à la fin

if (!isCheck) hideAllMenus(); 

Ne pas oublier de faire un truc pour laisser votre classe patché être chargée avant que l'un du SDK. Vous pouvez lire à ce sujet here.

Voici mon travail example. Menu1 a seulement vérifier les éléments et Menu2 seulement les normaux.

L'ensemble du projet se trouve here

+0

Merci beaucoup Anton. Je vais essayer ça le matin! – Sebastian

+0

Hey Anton.Im essayant actuellement d'implémenter les changements que vous avez suggérés, et ai essayé la stratégie de correction de singe. Mais actuellement cela ne semble pas fonctionner, donc je vais devoir essayer un peu plus. Mais je me demandais s'il était possible de voir la source de l'exemple que vous avez créé? Je pense que cela serait d'une grande aide :) – Sebastian

+0

Bonjour Sebastian, maintenant vous pouvez trouver un lien vers le projet à la fin de mon article. – Anton

Questions connexes