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 组件添加到应用程序。该 ComboBox 是可编辑的,如果您在文本字段中键入
Add
,则示例会将该项添加到下拉列表中。
-
创建一个新的 Flash (ActionScript 3.0) 文档。
-
将一个 ComboBox 组件拖到舞台上,然后为其指定实例名称
aCb
。在“参数”选项卡上,将
editable
参数设置为
true
。
-
打开“动作”面板,在主时间轴中选择第 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);
}
}
-
选择“控制”>“测试影片”。
使用 ActionScript 创建 ComboBox
以下示例用 ActionScript 创建一个 ComboBox 组件,并用加利福尼亚州旧金山地区的大学列表进行填充。该示例根据提示文本的宽度来设置 ComboBox 的
width
属性,并将
dropdownWidth
属性设置得稍宽一些,以容纳最长的大学名称。
该示例在 Array 实例中创建一个大学列表,使用
label
属性来存储学校名称,并使用
data
属性来存储每个学校网站的 URL。然后,通过设置 ComboBox 的
dataProvider
属性将该 Array 分配给 ComboBox。
当用户从列表中选择大学时,将触发 Event.
CHANGE
事件,并调用
changeHandler()
函数,该函数将
data
属性加载到访问学校网站的 URL 请求中。
请注意,最后一行将 ComboBox 实例的
selectedIndex
属性设置为 -1,以便在列表关闭时重新显示提示。否则,将显示所选择的学校名称而不是提示。
-
创建一个新的 Flash (ActionScript 3.0) 文档。
-
将一个 ComboBox 组件从“组件”面板拖到“库”面板中。
-
打开“动作”面板,在主时间轴中选择第 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;
}
-
选择“控制”>“测试影片”。
您可以在 Flash 创作环境中实现并运行此示例,但如果您试图通过单击 ComboBox 中的项来访问大学网站,则会显示警告消息。若要在 Internet 上访问功能齐全的 ComboBox,请访问以下网址:
http://www.helpexamples.com/peter/bayAreaColleges/bayAreaColleges.html
|
|
|