使用 ComboBox 组件

ComboBox 组件允许用户从下拉列表中进行单一选择。ComboBox 可以是静态的,也可以是可编辑的。可编辑的 ComboBox 允许用户在列表顶端的文本字段中直接输入文本。如果下拉列表超出文档底部,该列表将会向上打开,而不是向下。ComboBox 由三个子组件构成:BaseButton、TextInput 和 List 组件。

在可编辑的 ComboBox 中,只有按钮是点击区域,文本框不是。对于静态 ComboBox,按钮和文本框一起组成点击区域。点击区通过打开或关闭下拉列表来做出响应。

当用户在列表中做出选择(无论通过鼠标还是键盘)时,所选项的标签将复制到 ComboBox 顶端的文本字段中。

与 ComboBox 组件进行用户交互

在任何需要从列表中选择一项的表单或应用程序中,您都可以使用 ComboBox 组件。例如,您可以在客户地址表单中提供一个州/省的下拉列表。对于比较复杂的情况,可以使用可编辑的 ComboBox。例如,在提供驾驶方向的应用程序中,您可以使用一个可编辑的 ComboBox 以允许用户输入出发地址和目标地址。下拉列表可以包含用户以前输入过的地址。

如果 ComboBox 可编辑,即 editable 属性为 true ,则以下按键将从文本输入框中移除焦点,并保留先前的值。但 Enter 键除外,如果用户输入文本,该键将首先应用新的值。

说明

Shift+Tab

将焦点移到前一项。如果选择了新的项,则调度 change 事件。

Tab

将焦点移到下一项。如果选择了新的项,则调度 change 事件。

向下箭头

将选区下移一项。

End

将选区移到列表底端。

Escape

关闭下拉列表,并将焦点返回到 ComboBox。

Enter

关闭下拉列表,并将焦点返回到 ComboBox。当 ComboBox 可编辑,且用户输入文本时,Enter 会将值设置为输入的文本。

主页

将选区移到列表顶端。

Page Up

将选区向上移动一页。

Page Down

将选区向下移动一页。

在将 ComboBox 组件添加到应用程序时,可以添加以下数行 ActionScript 代码,使屏幕阅读器能够访问它:

import fl.accessibility.ComboBoxAccImpl; 
 
ComboBoxAccImpl.enableAccessibility();

不管组件有多少实例,都只对组件启用一次辅助功能。

ComboBox 组件参数

可以在“属性”检查器或“组件”检查器中为每个 ComboBox 实例设置以下参数: dataProvider editable prompt rowCount 。其中每个参数都有对应的同名 ActionScript 属性。有关这些参数的可能值的信息,请参阅 《用于 Adobe® Flash® Professional CS5 的 ActionScript® 3.0 参考》 中的 ComboBox 类。有关使用 dataProvider 参数的信息,请参阅 使用 dataProvider 参数

创建具有 ComboBox 组件的应用程序

以下过程解释了如何在创作时将 ComboBox 组件添加到应用程序。该 ComboBox 是可编辑的,如果您在文本字段中键入 Add ,则示例会将该项添加到下拉列表中。

  1. 创建一个新的 Flash (ActionScript 3.0) 文档。

  2. 将一个 ComboBox 组件拖到舞台上,然后为其指定实例名称 aCb 。在“参数”选项卡上,将 editable 参数设置为 true

  3. 打开“动作”面板,在主时间轴中选择第 1 帧,然后输入以下代码:

    import fl.data.DataProvider; 
    import fl.events.ComponentEvent; 
     
    var items:Array = [ 
    {label:"screen1", data:"screenData1"}, 
    {label:"screen2", data:"screenData2"}, 
    {label:"screen3", data:"screenData3"}, 
    {label:"screen4", data:"screenData4"}, 
    {label:"screen5", data:"screenData5"}, 
    ]; 
    aCb.dataProvider = new DataProvider(items); 
         
    aCb.addEventListener(ComponentEvent.ENTER, onAddItem); 
     
    function onAddItem(event:ComponentEvent):void { 
        var newRow:int = 0; 
        if (event.target.text == "Add") { 
            newRow = event.target.length + 1; 
                event.target.addItemAt({label:"screen" + newRow, data:"screenData" + newRow},  
                event.target.length);  
        } 
    }
  4. 选择“控制”>“测试影片”。

使用 ActionScript 创建 ComboBox

以下示例用 ActionScript 创建一个 ComboBox 组件,并用加利福尼亚州旧金山地区的大学列表进行填充。该示例根据提示文本的宽度来设置 ComboBox 的 width 属性,并将 dropdownWidth 属性设置得稍宽一些,以容纳最长的大学名称。

该示例在 Array 实例中创建一个大学列表,使用 label 属性来存储学校名称,并使用 data 属性来存储每个学校网站的 URL。然后,通过设置 ComboBox 的 dataProvider 属性将该 Array 分配给 ComboBox。

当用户从列表中选择大学时,将触发 Event. CHANGE 事件,并调用 changeHandler() 函数,该函数将 data 属性加载到访问学校网站的 URL 请求中。

请注意,最后一行将 ComboBox 实例的 selectedIndex 属性设置为 -1,以便在列表关闭时重新显示提示。否则,将显示所选择的学校名称而不是提示。

  1. 创建一个新的 Flash (ActionScript 3.0) 文档。

  2. 将一个 ComboBox 组件从“组件”面板拖到“库”面板中。

  3. 打开“动作”面板,在主时间轴中选择第 1 帧,然后输入以下 ActionScript 代码:

    import fl.controls.ComboBox; 
    import fl.data.DataProvider; 
    import flash.net.navigateToURL; 
     
    var sfUniversities:Array = new Array( 
        {label:"University of California, Berkeley",  
                    data:"http://www.berkeley.edu/"}, 
        {label:"University of San Francisco",  
                    data:"http://www.usfca.edu/"}, 
        {label:"San Francisco State University",  
                    data:"http://www.sfsu.edu/"}, 
        {label:"California State University, East Bay",  
                    data:"http://www.csuhayward.edu/"}, 
        {label:"Stanford University", data:"http://www.stanford.edu/"}, 
        {label:"University of Santa Clara", data:"http://www.scu.edu/"}, 
        {label:"San Jose State University", data:"http://www.sjsu.edu/"} 
    ); 
     
    var aCb:ComboBox = new ComboBox(); 
    aCb.dropdownWidth = 210; 
    aCb.width = 200;  
    aCb.move(150, 50); 
    aCb.prompt = "San Francisco Area Universities"; 
    aCb.dataProvider = new DataProvider(sfUniversities); 
    aCb.addEventListener(Event.CHANGE, changeHandler); 
     
    addChild(aCb); 
     
    function changeHandler(event:Event):void { 
        var request:URLRequest = new URLRequest(); 
        request.url = ComboBox(event.target).selectedItem.data; 
        navigateToURL(request); 
        aCb.selectedIndex = -1; 
    }
  4. 选择“控制”>“测试影片”。

您可以在 Flash 创作环境中实现并运行此示例,但如果您试图通过单击 ComboBox 中的项来访问大学网站,则会显示警告消息。若要在 Internet 上访问功能齐全的 ComboBox,请访问以下网址:

http://www.helpexamples.com/peter/bayAreaColleges/bayAreaColleges.html