首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式将焦点设置为HorizontalList,以便它可以接收按键事件(Flex)?

如何以编程方式将焦点设置为HorizontalList,以便它可以接收按键事件(Flex)?
EN

Stack Overflow用户
提问于 2009-10-26 22:47:30
回答 2查看 873关注 0票数 1

请看代码:

代码语言:javascript
复制
<?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消息。但我希望在设置焦点后,能够使用箭头键在列表元素上导航。但事实并非如此。它们只有在用鼠标单击组件后才能工作。那么,我做错了什么呢?如何使列表具有焦点并响应箭头键?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-27 04:58:18

你的应用是在浏览器内部运行的吗?您可能必须将焦点设置在SWF对象上(通过JavaScript),以便在不先单击该对象的情况下开始与其交互。

例如,假设您使用的是Flex Builder,请尝试在index.template.html文件的脚本标记的末尾添加如下一行:

代码语言:javascript
复制
window.onload = function()
{
    document.getElementById("${application}").focus();
};

您可能需要根据您的特定情况进行一些调整,但这可能就是问题所在。显式地将焦点设置在Flash对象上应该可以做到这一点。希望它能帮上忙!

票数 4
EN

Stack Overflow用户

发布于 2009-10-26 22:59:55

我运行了你的代码,不用先点击list,就可以用键盘在列表中导航--但是我必须点击flex应用上的某个地方,这样它才能在第一个地方获得焦点。我认为这是flash的一个限制-- SWF不会接收键盘焦点,除非你点击它的某个地方(尽管mouseOver仍然会被触发)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1625262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档