[原] Flex ButtonBar 是怎么实现多个Button同时只选中一个

[说明: 本文为 http://www.smithfox.com/?e=39 原创, 转载请注明原文, 谢谢]

一直以来不太明白: ButtonBar是怎么实现, 一组子ButtonBarButton中同一时刻是只能选中一个. 有时候自己写控件时也需要实现类似功能

先说我调查的思路吧.

第一步: 试验: MXML中直接在ButtonBar中写ButtonBarButton. 结果编译报错. 原因: ButtonBar是继承自SkinableDataContainer, DefaultProperty是dataProvider.

第二步: 试验: MXML中直接在Group中写ButtonBarButton. 结果实现不了只选一个的功能,证明这个功能肯定和ButtonBar有关.

第三步: 查看ButtonBar中到底是怎么生成ButtonBarButton的.

     查看ButtonBarSkin皮肤可以知道 dataGroup(skinpart) 中加入的是ButtonBarButton

第四步: 继承关系:

     ButtonBar extends ButtonBarBase 
     ButtonBarBase extends ListBase
     ListBase extends SkinnableDataContainer 

第五步: 看ButtonBarButton源文件,发现一个selected属性.

第六步: 在selected property setter方法中加入debug断点, 进行调试。然后在调试视图中看调用树。(这个方法一般人我不告诉他, 哈哈)

发现是ListBase类中的commitSelection函数有这样的语句:

var oldSelectedIndex:int = _selectedIndex;//将之前的selected ButtonBarButton的index保存为old
...

if (oldSelectedIndex != NO_SELECTION)
    itemSelected(oldSelectedIndex, false); //是这个函数最终调用了老的已选中的ButtonBarButton的selected setter方法, 置为false
if (_selectedIndex != NO_SELECTION && _selectedIndex != CUSTOM_SELECTED_ITEM)
    itemSelected(_selectedIndex, true); //调用了新的已候选的ButtonBarButton的selected setter方法, 置为true
...

当ButtonBarBase的partAdded函数中加入dataGroup时,为dataGroup增加element_added监听函数dataGroup_rendererAddHandler.

这个函数的实现:

 private function dataGroup_rendererAddHandler(event:RendererExistenceEvent):void    {
        const renderer:IVisualElement = event.renderer; //renderer就是一个ButtonBarButton
        if (renderer){
            //在容器中(ButtonBar.dataGroup)监听所有子对象的CLICK事件
            renderer.addEventListener(MouseEvent.CLICK, item_clickHandler); 
            ...
        }
 }

这个函数为dataGroup的每个子Element attach了MouseEvent.CLICK的监听器, 这个监听器会将选中的item(ButtonBarButton)的itemIndex设置为ButtonBar.selectedIndex

简单总结: ButtonBar在每个ButtonBarButton加入的时候就开始监听它们的CLICK事件,好知道哪个Button被选中状态,在置当前的Button选中之前,通用调用之前的选中的那个Button的 selected setter方法将其设置为false. 做到将之前的设置为未选中。

[说明: 本文为 http://www.smithfox.com/?e=39 原创, 转载请注明原文, 谢谢]

smithfox | Sunday 26 December 2010 at 8:38 pm | | UI        | Used tags: ,

six comments

luxury iphone 6 cases

The case charges via microUSB and will have enough juice to last a week after being plugged in for 100 minutes. The built-in 240 mAh battery is used exclusively for switching between images.

luxury iphone 6 cases, (URL) - 23-04-’15 14:00
Chanel Bags Replica

As Recamier had realized forty years before, the equation for success at full price was simple: Controlling the channel meant you controlled the price.

Chanel Bags Replica, (URL) - 06-07-’15 18:15
service entretien ménager Montreal

service de femme de ménage
Professionnelle de l’entretien, notre dynamique entreprise
saura réaliser pour vous l’ensemble des travaux ménagers.

G.E.M. s’engage sur une prestation de qualité !

Notre équipe de spécialistes chevronnés accomplira unn travail à la
fois soigné, rapide et économique.
De plus, nous utilisonss exclusivement des produits écologiques
ett hautement performants, issus des toutes dernières technologies.

La vie moderne véhicule aussi de lourdes menaces.
D’apparence inoffensive, meubles, appareils ménagers, matériaux dee construction, jouts ou objets
familiers peuvent dégager des phtalates ou
autres redouutables composés chimiques.
entretien ménager résidentiel.G.E.M votre unique intervenant qui pourra assuurer tout
au long de l’année la continuité d’un service dde hazute qualité et àla carte !

Entretien ménager résidentiel, Entrretien ménager commercial,Grand ménage résidentiel et commercial, Lavage
de Vitres, Lavage de tapis, Décapage et Cirage de planchers
ett Plus.

Franchise de Nettoyage Résidentiel et Commercial, service de femme de ménage ,entretien ménager commercial,entretien ménager commercial, ménage
résidentiel, service d’entretien ménager montréal
Nous aidons les perxonnes désireuses d’être propriétaires d’entreprises
prospères à devenir des professionnels du nettoyage commercial et de la maintenance.

En rejoignant notre réseau d’entreprises, vou bénéficierez d’un avantage colncurrentiel
ainsi que d’une aide apportée par un modèle d’affaires éprouvé voys assurant de travailler avec un leader du domaine disposant
de l’expérience et la stabilité.
Vous disiez auugmentez voss revenus afin d’améliorer votre quotidien ?
Faites Appel a G.E.M Ménage! servic de femme de ménage ,entretien ménager commercial,entretien ménager commercial, ménage résidentiel, service d’entretien ménager montréal, service de femme de ménage ,entretien ménager commercial,entretien ménager
commercial, ménage résidentiel, service d’entretien ménager montréal
Franchises dee Nettoyage Résidentiel et Commercial disponible Partout A Montréal
,Rive Nord et Rive Sud.

Financement Sans Intérêt par G.E.M .
Un dépôt est obligatoire

Un Invsstissement de 24 000$ Vous Rapporte (4800$ ett pllus de Revenus par
Mois)!

Matériel eet formation fourni

Noous aidons les personnes désireuses d’être propriétaires d’entreprisesprospères à devenir des professionnels du nettoyage commercial eet
de la maintenance. En rejoiggnant notre réseau d’entreprises, vous
bénéficierez d’un avantage concurrentiel ainsi que d’une aide apportée par un modèle d’affaires éprouvé vous assurant de travailler avec un leader ddu domaine diszposant de l’expérience et la stabilité.

G.E.M Ménage vous offre l’opportunité de travailler
pendant la journée de lundi a vendredi .

G.E.M Vous propose des contrats d’entretien ménager avec des
horaires souples et un revenu garanti.

Pour lees personnes libres,les nouveaux arrivants ou les sans-emplois G.E.M peut favoriser votre
accès au marché ddu travail !

G.E.M vous propose des contrats stables et rémunérateurs!

Dans le secteur résidentiel idéal pour un couple,
ou un homme seul dans le secteur commercial
Vous débuter des maintenant

Des techniques et méthodes de travail éprouvées.

Une aide à la constitution ou à l’enregistrement de
leur entreprise.
Des territoires d’exercice protégés.
Entrreprise clés en main.
Un garantie qui protège votre investissement

Exigences dee l’entrée de notre réseau :
Les demandes sont examinées attentivement et une enquête relative à laa candidature
est menée.
Lees candidats doivent passer une entrevue de sélection.
Avant toht début d’activité, les candidats doivent assister à des
sessions de formation.

Au G.E.M. nous nous aassurons que nos franchisés puissent offrir à leurs clients un service professionnel d’une qualité supérieure à celle
de la concurrence.
Franhise disponible au résidentiel et commercial

N’hésitez ppas à nous contacter
469 Jean-Talon Ouest Suite # 222
Montreal QC
gemmenage.net
gemmenage.com

service entretien ménager Montreal, (URL) - 28-08-’17 15:24
femme de ménage montréal

service de femme de ménage
Professionnelle dee l’entretien, notre dynamique entreprise saura réaliser pour vous
l’ensemble des traaux ménagers.
G.E.M. s’engage sur une prestation de qualité !

Notre équipe dde spécialistes chevronnés accomplira un travail à la fois soigné, rapide et économique.

De plus, nous utilisons exclusivement des produits écologiques ett hautement performants, issus des toutes dernières technologies.

La vie moderne véhicule aussi de lourdes menaces. D’apparence inoffensive, meubles, appareils ménagers, matériaux de construction, jouets ou objets
familiers peuvnt dégager des phtalates ou autres redoutables composés chimiques.

entretien ménager résidentiel.G.E.M votre unique intervenant
qui pourra assurer tout au long de l’année la continuité d’un service de haute qualité et à la carte !

Entretien ménagerrésidentiel, Entretien ménager commercial, Grand ménage
résidentiel eet commercial, Lavage de Vitres, Lavage de tapis, Décapage et Cirage de planchers eet Plus.

Franchise de Nettoyage Résidentiel eet Commercial, service de femme
dde ménage ,entretien ménager commercial,entretien ménager commercial, ménage résidentiel, service d’entretien ménager montréal
Nous aidons les personnes désireuses d’être propriétaires d’entreprises
prospères à devednir des professionnels du nettoyage commercial et de la maintenance.
En rejoignant notre réseau d’entreprises, vpus bénéficierez d’un avantage concurrentiel ainsi que d’une aide apportée parr un modèle d’affaires éprouvé
vous assurant de travailler aec un leader du domaine
disposant de l’expérience et la stabilité.
Vous disiez augmentez vos rvenus afin d’améliorer
votre quotidie ? Faites Appel a G.E.M Ménage!
service de femme de ménage ,entretien ménager commercial,
entretien ménager commercial, ménage résidentiel, service d’entretien ménager montréal, service de femme de ménage
,entretien ménager commercial,entretien ménager commercial, ménage résidentiel, service d’entretien ménager montréal
Franchises de Nettoyage Résidentiel et Commercial disponible Partout A Montréal
,Rive Nord et Rive Sud.

Financement Sans Intérêt par G.E.M .
Un dépôt est obligatoire

Un Inestissement de 24 000$ Vous Rappoirte (4800$ eet
plus de Revenus par Mois)!

Matériel et formation fourni

Nous aiidons les personnes désireuses d’être propriétaires d’entreprises
prospères à devenir dees professionnels duu nettoyage commercial ett
de la maintenance. En rejoignant notre réseau d’entreprises, vous bénéficierez
d’un avantage concurrentiel ainsi que d’une aide
apportée par un modèle d’affaireséprouvé vous assurant de travailler avec
un leader du domaine disposant de l’expérience et la stabilité.

G.E.M Ménage vous offre l’opportunité de travailler
pendant la journée de ludi a vendredi .

G.E.M Vous proposse des contrats d’entretien ménager avec des horaires soulles et un revenu garanti.

Pour les personnes libres,les nouveaux arrivants ou les sans-emplois G.E.M peut favoriser votre
accès au marchédu travail !

G.E.M vous propose des contrats stables et rémunérateurs!

Dans le secteur résidentiel idéal pour un couple,
ou un homme seul dans le secteur commercial
Vous débuter des maintenant

Des techniques et méthodes de travail éprouvées.
Une aidee à la constitution ou à l’enregistrement de leur entreprise.

Des territoires d’exercice protégés.
Entreprise clés enn main.
Un garantie qui protège votre investissement

Exigences de l’entrée de notre réseau :
Less demandes sont examinées attentivement et une enquête
relative à la candidature est menée.
Les candidats doivent passer une entrevue de sélection.
Avan tout début d’activité, lles canridats doivent assister à ddes sessionns de formation.

Au G.E.M. nous nous assurons que nos franchisés puissent offrir à leurs
clients un service professionnel d’une qualité supérieure à celle de la
concurrence.
Franchise disponible aau résidentiel et commercial

N’hésitez pass à noius contacter
469 Jean-Talon Ouest Suite # 222
Montreal QC
gemmenage.net
gemmenage.com

femme de ménage montréal, (URL) - 02-09-’17 21:59
service entretien ménager résidentiel et commercial montreal rive nord et rive sud

service de femme de ménage
Professionnelle de l’entretien, notre dynamique entreprise saura réaliser pour vous l’ensemble des travaux ménagers.

G.E.M. s’engage sur une prestation de qualité
!
Notre équipe de spécialistes chevronnés accomplira un travail
à la fois soigné, rapide et économique.
De plus, nous utilisons exclusivment des produits écologiques
et hautement performants, issus des toutes dernières technologies.

La vie moderne véhicule aussi de lourdes menaces. D’apparence inoffensive, meubles, appareils ménagers,
matériaux de construction, jouets ou objets familiers peuvent dégager
des phtalates ou autres redoutables composés chimiques.

entretien ménager résidentiel.G.E.M votree unique intervenant qui pourra assurer tout
au long de l’année la continuité d’un service de haute
qualité et à la carte !
Entretien ménager résidentiel, Entretien ménager commercial, Grand ménage résidentiel et commercial,
Lavage de Vitres, Lavage de tapis, Décapage et Cirage de planchers et Plus.

Franchise de Nettoyage Résidentiel et Commercial, service
de femme de ménage ,entretien ménager commercial,entretien ménager commercial, ménage résidentiel,
service d’entretien ménager montréal
Nous aidons les personnes désireuses d’être propriétaires d’entreprises prospères à devenir des professionnels du nettoyage
commercial et de la maintenance. En rejoignant notre
réseau d’entreprises, vous bénéficierez
d’un avantage concurrenttiel ainsi que d’une aide apportée par un modèle d’affaires éprouvé vous assurant de travailler avec un leader du domaine disposant de l’expérience et
la stabilité.
Vouss disiez augmentez vos revwnus afin d’améliorer votre quotidien ?
Faites Aplel a G.E.M Ménage! service de femme de ménage ,entretien ménager commercial,entretien ménager
commercial, ménage résidentiel, service d’entretien ménager montréal, service dde feme de ménage
,entretien ménager commercial,entretien ménager commercial,
ménage résidentiel, service d’entretien ménager montréal
Franchises de Netttoyage Résidentiel et
Commercial disdponible Partout A Montréal ,Rive Nord et Rive Sud.

Financement Sans Intérêt par G.E.M .
Un dépôt est obligatoire

Un Investissement de 24 000$ Vous Rapporte (4800$ et plus de Revenus par
Mois)!

Matériel et formation fourni

Nous aidons les personnes désireuses d’être propriétaires
d’entreprises prospères à devenir des professionnels
du nettoyage commercial et de la maintenance.
En rejoignant notre réseau d’entreprises, vous bénéficierez d’un avantage concurrentiel ainsi que d’une aide
apportée par un modèle d’affaires éprouvé vous assurant de travailler avec un leaser
duu domaine disposant de l’expérience et la stabilité.

G.E.M Ménage vous offre l’opportunité de travailler pendant la journée de lundi a vendredi .

G.E.MVous propose des contrats d’entretien ménager avec ddes
horairds souples et un revenu garanti.

Pour les personnes libres,les nouveaux arivants oou les sans-emplois G.E.M peeut favoriser votre
accès au marché du travail !

G.E.M vous propose des contrats stables ett rémunérateurs!

Dans le secteur résidentiel idéal pour un couple, ou un homme seul dans le secteur commercial
Vouus débuter des maintehant

Des techniques et méthodes de travail éprouvées.

Une aide à la constitution ou à l’enregistrement de leur
entreprise.
Des territoires d’exercice protégés.
Enttreprise clés en main.
Un garantie qui protège votre investissement

Exigences dee l’entrée de notre réseau :
Les demandes sont examinées attentivement et une enquête relative à
la candidature est menée.
Lees candidats doivent passer une entrevue de sélection.
Avant out début d’activité, les candidats ddoivent assister
à des sessions de formation.

Au G.E.M. nous nous assurons que noss franchisés puissent offrir
à leurs clients un serice professionnel d’une qualité supérieure
à celle de la concurrence.
Franchise disponible aau résidentiel et commercial

N’hésitez pas à nous contacter
469 Jean-Talon Ouest Suite # 222
Montreal QC
gemmenage.net
gemmenage.com

service entretien ménager résidentiel et commercial montreal rive nord et rive sud, (URL) - 30-09-’17 11:34
service entretien ménager

service de femme de ménage
Professionnelle de l’entretien, notre dynamique entreprise saura réaliser pourr vous l’ensemble des travaux ménagers.

G.E.M. s’engage sur une prestation de qualité !
Notre équipe de spécialistes chevronnés accomplira un travail à la fois soigné,
rapidce et économique.
De plus, nous utilisons exclusivement dess produits écologiques ett hautement
performants, issus des toites dernières technologies.

La viie moderne véhicule aussi de lourdes menaces.
D’apparence inoffensive, meubles, appareils ménagers, matériaux de construction, jouets ou objets familiers peuvent dégager des phtalates ou autres redoutables composés
chimiques.
entretien ménager résidentiel.G.E.M votre unique intervenant qui pourra assurer toit
au long de l’année la continuité d’un service de haute qualité et à la carte
!
Entretien ménager résidentiel, Entretien ménager commercial,
Grand ménage résidentiel et commercial, Lavage de
Vitres, Lavage de tapis, Décapage et Cirage de planchers et Plus.

Franchise de Nettoyage Résidentiel et Commercial, service de
femme de ménage ,entretien ménager commercial,entretien ménager commercial,
ménage résidentiel, service d’entretien ménager montréal
Nous idons les prrsonnes désireuses d’être propriétaires d’entreprises prospères à devenir des professionnels du nettoyage commercial et de la
maintenance. En rejoignant notre réseau d’entreprises, vous
bénéficierez d’un avantagye concurrentiel ainsi que d’une aide
apportée par un modèle d’affaires éprouvé vous
assaurant dee travailler aavec un leader du domaine disposant de l’expérience et la stabilité.

Vous disiez augmentez vos revenus afin d’améliorer votre quotidien ?
Faites Appel a G.E.M Ménage! service de femme de
ménage ,entretien ménager commercial,entretien ménager commercial,
ménage résidentiel, service d’entretien ménager montréal,
service de femme de ménage ,entretien ménager commercial,entretien ménager commercial, ménage résidentiel, service d’entretien ménager
montréal
Franchises de Nettoyage Résidentiel et Commercizl disponible
Partout A Montréal ,Rive Nord et Rive Sud.

Financement Sans Intérêt par G.E.M .
Un dépôt est obligatoire

Un Investissement de 24 000$ Vous Rapporte (4800$ et plus de Revenus par Mois)!

Matériel et formation fourni

Nous aidons les personnes désireuses d’être propriétaires d’entreprises
prospères à devenir ddes professionnels du nettoyage commercial et de la
maintenance. En rejoignant notre réseau d’entreprises,
vous bénéficierez d’un avantage concurrentiel ainsi quee d’une aide apportée par un modèle
d’affaires éprouvé vous assurant dee travailler
avec un leader du dmaine dispoosant de l’expérience et la
stabilité.

G.E.M Ménage vous offre l’opportunité de trwvailler
pendant la journée de lundi a vendredi .

G.E.M Vous propose des contrats d’entretien ménager avec
des horaires souples et un revenu garanti.

Pouur les persoknnes libres,les nouveaux arrivants ou les
sans-emplois G.E.M peut favoriser votre accès
au marché du travail !

G.E.M vous propoe dees contrasts stables et rémunérateurs!

Dans le secteur résidentiel idéal poujr un couple, ou un homme seul
dans le secteur commercial
Vous débuter des maintenant

Des tdchniques et méthodes dee travail éprouvées.

Une aide à la constitution ou à l’enregistrement de leur entreprise.

Des territoires d’exercice protégés.
Entreprise clés en main.
Un garantie qui protège votre investissement

Exigences de l’entrée de notre réseau :
Les demandes sont examinées attentivement et unne enquête relative à la candidature est
menée.
Lees candidats doivent passer une entrevue de sélection.
Avant tout début d’activité, les candidats doivent assister
à des sessions de formation.

Au G.E.M. nous nous assurons que nos franchisés puissent
offrir à leurs clients un service professionnel d’une
qualité supérieure à celle de lla concurrence.

Franchise dispoible au résidentiel et commercial

N’hésitez pas à nouis contacter
469 Jean-Talon Ouest Suite # 222
Montreal QC
gemmenage.net
gemmenage.com

service entretien ménager, (URL) - 03-10-’17 05:03
(optional field)
(optional field)
为阻止垃圾广告, 请在提交评论前, 回答一个简单问题(Please answer an simple question)
Remember personal info?
Notify
Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.