Установите только один флажок в as3 - PullRequest
0 голосов
/ 01 ноября 2011

У меня около 18 флажков, и я бы хотел знаю, если есть способ, которым я могу сделать только один из них Выбирается. Т.е. я не могу выбрать 2 из полей, из-за которых произойдет ошибка. Я знаю, что могу сделать это с радиобоксами, но для эстетики я предпочитаю чекбоксы. Не могли бы вы предоставить мне код, пожалуйста

Ответы [ 3 ]

0 голосов
/ 01 ноября 2011

Я думаю, что было бы лучше использовать переключатель Radio, который имеет обложку, как флажок, чтобы соответствовать эстетике, которую вы ищете.

0 голосов
/ 02 ноября 2011
private var selectedCB : CheckBox;

for( var i : int = 0, n : int = 18; i < n ; i++ ){
    var cb : CheckBox = new CheckBox();
    cb.addEventListener( Event.CHANGE, onChangeEvent_checkBox );
    //position cb etc.
    this.addChild( cb );
}

private function onChangeEvent_checkBox( event : Event ) :void{
    var currentCB : CheckBox = CheckBox( event.target );
    if( selectedCB && currentCB !== selectedCB )
        selectedCB.deselect();
    selectedCB = ( currentCB.selected ) ? currentCB : null;

}

Но, ТБХ, я думаю, что это плохая идея.Пользователи знают, как должны работать радио-кнопки и флажки, и IMO - ОЧЕНЬ плохая идея (из UX POV) начинать их смешивать.Конечно, это не совсем то, как ведут себя радиокнопки, но достаточно близко, чтобы сбить с толку.

0 голосов
/ 01 ноября 2011

Попробуйте что-нибудь подобное

<fx:Script>
    <![CDATA[
        [Bindable]
        private var selectedCheckBox:String = "";
    ]]>
</fx:Script>
<s:CheckBox id="checkBox1" label="CheckBox" click="selectedCheckBox = checkBox1.id"
            selected="{selectedCheckBox == checkBox1.id}"/>
<s:CheckBox id="checkBox2" label="CheckBox" click="selectedCheckBox = checkBox2.id"
            selected="{selectedCheckBox == checkBox2.id}"/>
<s:CheckBox id="checkBox3" label="CheckBox" click="selectedCheckBox = checkBox3.id"
            selected="{selectedCheckBox == checkBox3.id}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...