1

コードを見てください:

<?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にコンソールでメッセージを受け取ります。しかし、フォーカスを設定した後、矢印キーでリスト要素をナビゲートできると期待していました。しかし、そうではありません。コンポーネントをマウスでクリックした後にのみ機能します。だから、私は何が間違っているのですか?リストにフォーカスを持たせ、矢印キーに応答させる方法は?

4

2 に答える 2

4

アプリはブラウザー内で実行されていますか? 最初にオブジェクトをクリックせずに操作を開始するには、(JavaScript を使用して) SWF オブジェクトにフォーカスを設定する必要がある場合があります。

たとえば、Flex Builder を使用していると仮定すると、次のような行を index.template.html ファイルの SCRIPT タグの末尾に追加してみてください。

window.onload = function()
{
    document.getElementById("${application}").focus();
};

特定の状況に応じて少し調整する必要があるかもしれませんが、それがおそらく問題です。Flash オブジェクトに明示的にフォーカスを設定するとうまくいくはずです。それが役に立てば幸い!

于 2009-10-26T20:58:17.643 に答える