请看代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:creationComplete>
<![CDATA[
list.setFocus();
]]>
</mx:creationComplete>
<mx:HorizontalList id="list">
<mx:creationComplete>
<![CDATA[
setFocus();
]]>
</mx:creationComplete>
<mx:focusIn>
<![CDATA[
trace("Received focus");
]]>
</mx:focusIn>
<mx:keyDown>
<![CDATA[
trace("Key down");
]]>
</mx:keyDown>
<mx:dataProvider>
<mx:Object label="Some"/>
<mx:Object label="Different"/>
<mx:Object label="Stuff"/>
</mx:dataProvider>
</mx:HorizontalList>如您所见,在加载应用程序时,我尝试使HorizontalList成为焦点。实际上,我在控制台中收到了Received focus消息。但我希望在设置焦点后,能够使用箭头键在列表元素上导航。但事实并非如此。它们只有在用鼠标单击组件后才能工作。那么,我做错了什么呢?如何使列表具有焦点并响应箭头键?
发布于 2009-10-27 04:58:18
你的应用是在浏览器内部运行的吗?您可能必须将焦点设置在SWF对象上(通过JavaScript),以便在不先单击该对象的情况下开始与其交互。
例如,假设您使用的是Flex Builder,请尝试在index.template.html文件的脚本标记的末尾添加如下一行:
window.onload = function()
{
document.getElementById("${application}").focus();
};您可能需要根据您的特定情况进行一些调整,但这可能就是问题所在。显式地将焦点设置在Flash对象上应该可以做到这一点。希望它能帮上忙!
发布于 2009-10-26 22:59:55
我运行了你的代码,不用先点击list,就可以用键盘在列表中导航--但是我必须点击flex应用上的某个地方,这样它才能在第一个地方获得焦点。我认为这是flash的一个限制-- SWF不会接收键盘焦点,除非你点击它的某个地方(尽管mouseOver仍然会被触发)。
https://stackoverflow.com/questions/1625262
复制相似问题