0

私はクラスのデータ プロバイダー アプリケーションに取り組んでおり、使いやすさのためにさらに一歩進んで、ナビゲーション用のタブを追加したいと考えていましたが、以下の tabIndex コードは何もしません。ボタンとテキストフィールドの間をタブで移動したいと思います。タブ移動はデータ プロバイダーで機能しますか?

package 
{

    import fl.controls.Button;
    import fl.controls.List;
    import fl.controls.TextInput;

    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;

    public class EditableList extends Sprite 
    {

        public function EditableList() 
        {
            init();
        }

        private function init():void 
        {
            addName_bn.addEventListener(MouseEvent.CLICK, onAddName);
            addName_ti.addEventListener(Event.CHANGE, onNameEnter);
            addName_ti.addEventListener("enter", onAddName);
            deleteName_bn.addEventListener(MouseEvent.CLICK, onDeleteName);
            editName_ti.addEventListener("enter", onDeleteName);
            editName_ti.addEventListener(Event.CHANGE, onNameChange);
            names_li.addEventListener(Event.CHANGE, onNameSelected);
            addEventListener(Event.ENTER_FRAME, onNextFrame);
            addEventListener(Event.ENTER_FRAME, onFocus);
            addName_ti.setFocus();

        }

        private function onFocus(event:Event):void {
            addName_ti.tabIndex = 0;
            addName_bn.tabIndex = 1;
            editName_ti.tabIndex = 2;
            deleteName_bn.tabIndex = 3;
        }

        // Handler for when the next frame is reached after initialization, when buttons can be disabled.

        private function onNextFrame(event:Event):void {
            removeEventListener(Event.ENTER_FRAME, onNextFrame);
            addName_bn.enabled = false;
            deleteName_bn.enabled = false;
            editName_ti.enabled = false;
        }

        // Handler for when the add name button is clicked, adds item to list.

        private function onAddName(event:Event):void {
            var newItem:Object = {label:addName_ti.text};
            names_li.dataProvider.addItem(newItem);
            names_li.dataProvider.sortOn("label");
            addName_ti.text = "";
            addName_bn.enabled = false;
            addName_ti.setFocus();
        }

        // Handler for when text is entered into the add name textfield, enables the add name button.

        private function onNameEnter(event:Event):void {
            addName_bn.enabled = addName_ti.text.length > 0;
        }

        // Handler for when the delete name button is clicked, removes the list item.

        private function onDeleteName(event:Event):void {
            names_li.dataProvider.removeItemAt(names_li.selectedIndex);
            deleteName_bn.enabled = false;
            names_li.dataProvider.sortOn("label");
            editName_ti.text = "";
            editName_ti.enabled = false;
            editName_ti.setFocus();
        }

        // Handler for when text is changed into the edit name textfield, alters the item in the list.

        private function onNameChange(event:Event):void {
            var newItem:Object = {label:editName_ti.text};
            names_li.dataProvider.replaceItemAt(newItem, names_li.selectedIndex);
        }

        //  Handler for when an item is selected in the list, populates fields and enables buttons.

        private function onNameSelected(event:Event):void {
            editName_ti.text = names_li.selectedItem.label;
            editName_ti.enabled = true;
            deleteName_bn.enabled = true;
        }

    }

}
4

1 に答える 1

1

InteractiveObject.tabEnabledTabキーで選択できるようにするボタンについては、プロパティをtrueに設定してみてください。また、ボタンが親クリップ内に含まれている場合は、親tabChildrenプロパティもtrueに設定する必要があります。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/InteractiveObject.html#tabEnabled

于 2012-04-07T19:22:42.100 に答える