주요 이벤트(Flex)를 수신할 수 있도록 프로그래밍 방식으로 HorizonList에 포커스를 설정하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1625262

  •  06-07-2019
  •  | 
  •  

문제

코드를 살펴보십시오.

<?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 콘솔의 메시지.하지만 포커스를 설정한 후 화살표 키를 사용하여 목록 요소를 탐색할 수 있을 것으로 기대했습니다.하지만 그렇지 않습니다.마우스로 컴포넌트를 클릭한 후에만 작동합니다.그럼 내가 뭘 잘못하고 있는 걸까요?목록에 초점을 맞추고 화살표 키에 응답하는 방법은 무엇입니까?

도움이 되었습니까?

해결책

앱이 브라우저 내에서 실행되고 있나요?개체를 먼저 클릭하지 않고 SWF 개체와 상호 작용을 시작하려면 SWF 개체에 포커스를 설정해야 할 수도 있습니다(JavaScript를 통해).

예를 들어 Flex Builder를 사용한다고 가정하면 index.template.html 파일의 SCRIPT 태그 끝에 다음과 같은 줄을 추가해 보세요.

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

특정 상황에 따라 약간의 조정이 필요할 수도 있지만 그게 문제일 수 있습니다.Flash 개체에 초점을 명시적으로 설정하면 문제가 해결됩니다.도움이 되길 바랍니다!

다른 팁

귀하의 코드를 실행하고 키보드로 목록을 탐색할 수 있었습니다 목록을 클릭하지 않고 먼저 - 하지만 난 Flex 앱의 아무 곳이나 클릭해야 했습니다. 그래서 우선적으로 초점을 받습니다.나는 이것이 일반적으로 플래시의 한계라고 생각합니다. SWF는 아무 곳이나 클릭하지 않는 한 키보드 포커스를 받지 못합니다(그래도 mouseOver는 여전히 실행됩니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top