2010-03-11 3 views
2

짧은 버전 : ComboBox의 드롭 다운은 전체 화면 전에 제대로 작동하지만 렌더링 중이거나 이후에는 렌더링되지 않습니다.콤보 상자 드롭 다운 문제를 전체 화면으로 수정하는 방법은 무엇입니까?

나는 이것을 묻는 방법을 완전히 모르겠다. 그래서 나는 실제로 a page demonstrating the error을 만들었고, 매우 간단한 플렉스 앱으로, 그리고 세 가지 방향으로 모두 직접 문제를 경험해야한다. 내 위의 링크를 따라 할만큼 대담하지 당신의 사람들을 위해

, 여기 설명하기 위해 최선을 다하겠습니다. 몇 가지 그래프와 차트, 체크 박스 및 차트에 대한 다른 컨트롤이있는 매우 광범위한 Flex 어플리케이션 (링크에는없는 어플리케이션)을 구축했습니다. 응용 프로그램 미국의 몇 가지에서 응용 프로그램의 하단에서, ComboBox (HTML에서 <select> 유사한 태그)가있다. 이것은 맨 아래에 있기 때문에 클릭하면 드롭 다운 메뉴에 액세스 할 수있게됩니다. Flex는 신중하게 맨 위에 나오게합니다.

이 전체 화면 모드까지 잘 작동합니다. 전체 화면으로 들어가면 stage.scaleMode = StageScaleMode.SHOW_ALL으로 모든 것을 확장합니다. 당신이 ComboBox을 클릭하면 이제 드롭 다운은 놀라 울 정도로 크고, 실제로는 대부분 오프 스크린을 사라지게하는 원인이되는 ComboBox 아래에 떨어진다. 가장 좋은 부분은 당신이 전체 화면 모드를 종료하면, 드롭 다운 앱의 하단에 위치되는 ComboBox, 아래로 떨어질 계속 주장, 그래서 차단이 계속된다. 다른 사람이이 짐승을 향해 달려 와서 큰 멍청이를 응시하고 승리를 저버리지 않았습니까?

당신은 링크에서 소스보기의 코드를 얻고, 시간 내 주셔서 너무 감사 할 수 있습니다.

+0

ComboBox는 List 구성 요소를 스테이지에 직접 배치하기 때문에 생각합니다. 목록 자체를 강제로 배치하고 문제를 해결 한 방법을 찾아보십시오. 그렇게하는 데 성공하면 질문에 대답하여 모두에게 알려주십시오. – webwise

+0

+1 큰 문제를 보여줍니다. – invertedSpear

+0

지금까지의 해결 방법은 'position'을 통해 드롭 다운 스타일을 지정하여 ComboBox 위에 배치하는 것입니다. 이상적은 아니지만 최소한 읽을 수 있어야합니다. 나는 이것을보고하고 FlexCoders 포럼에서 이야기함으로써 Adobe의 관심을 얻으려고 노력해 왔습니다. 지금까지 ComboBox를 렌더링하는 클래스 팩터 리를 재정의하는 것이 좋습니다. 필자는 본질적으로 ComboBox를 직접 다시 작성하기를 원합니다. 감사합니다, Adobe. – Impirator

답변

0

나는 CB의 드롭 다운에 약간의 문제가 있었지만 관련이없는 것처럼 보였습니다. 그러나 드롭 다운에 콤보 박스에 변경된 내용을 적용하지 않았기 때문에 myCombo.drowpdown.[insert whatever property]과 같은 드롭 다운에 직접 변경 사항을 적용해야했습니다. 어쩌면 당신은 그것을 당신의 앱에서 시도해 볼 수 있고 그것이 도움이되는지를 볼 수 있습니다.

1

문제의 사소한 부분에 대한 해결 방법과 문제의 다른 부분에 대한 세부 정보가 있습니다. 어쩌면 다른 누군가가 나머지를 알아낼 수 있습니다.

첫째,

플렉스 3.5 콤보 그것이 목록까지 드롭 로 목록 아래로 드롭을 설정해야하는지 여부를 확인하려면 다음 부울 표현식 (라인 1,572에서 73 사이)를 사용하는 일반 주 :

point.y + _dropdown.height > screen.bottom && 
point.y > screen.top + _dropdown.height 

여기서 point.y는 ComboBox의 아래쪽에 대한 전역 좌표입니다. 기본적으로 은 "바닥에 닿으면 상단에 부딪치지 않을 것입니다 ..."라고 말합니다. 그렇지 않으면 맨 위에 닿으면 바닥에 물건을 던지기로 기본 설정됩니다. 그걸 염두에두고 ...

부분 해결

나는 그것이 toggleFullscreen() 단추 처리기에 다음 코드를 추가하여 전체 화면 모드를 종료하면, 전체 화면 모드를 종료 할 때 정상적인 기능에 응용 프로그램을 복원 할 수 있었다 :

... 
    screen.height = height; 
    screen.width = width; 

    myComboBox.dropdown.invalidateSize(); // myComboBox being the id for the ComboBox 
} 

설명 : 일어나고있는 것은 (다른 무언가의 아마 효과)이었다 그에서 screen 속성에 대한 값이 제대로 재설정되지 않았습니다. 따라서 위에서 나온 부울 문을 평가할 때 여전히 전체 화면 값을 사용하고 있었기 때문에 목록을 바닥에 놓아 두었습니다. 이 코드는 단지 수동으로 화면을 재설정하고 드롭 다운 목록의 크기를 다시 계산합니다.

별로 아니지만 적어도 뭔가입니다. 위에서 그 부울 표현식, 전체 화면 모드에서의 일부를 평가하는 경우

  1. 를 : 그렇지 않으면 ... 전체 화면 문제

    일부 세부 사항 나는 두 가지 문제가 여기에 무슨 눈치 일부 값은 스케일되지 않고 값은 스케일됩니다. 즉, point.y_dropdown.height은 스케일되지 않은 반면, screen.bottom은 스케일링됩니다 (상대적으로). 따라서 식의 첫 번째 부분은 항상 false가되므로 ComboBox는 실제로 자리가 없어도 목록을 렌더링합니다. 왜 이런 일이 일어나고 있는지 전혀 모르겠지만, 그렇습니다. 간접적으로 부작용없이 간접적으로 이러한 값을 조작하려고 노력했지만, 정확하게 평가할 표현이 있어도 다른 문제를 해결할 수 없다는 느낌이 들었습니다.

  2. 사실 드롭 아래로 목록은 두 배로 확대되는 것처럼 보입니다. 즉, ComboBox가 내 모니터에 적용한 3.5 배율 조정 대신 3.5 * 3.5 배율 조정처럼 드롭 다운 목록이 나타납니다. 필자는 이것을 너무 많이 사용하지는 않았지만, 필자가 수동으로 변환 매트릭스를 적용하여 ComboBox의 크기를 조정하지 않은 경우, 드롭 다운 목록이 렌더링 된 크기가 원본 크기와 일치하는 것처럼 보였습니다 (전체 화면 크기 조정) 콤보 박스. 어쩌면 다른 사람이 이걸로 어지럽 힐 수 있습니다.

그게 내가 가진 것입니다. 나는 변형을 가지고 놀고있는 해결책이 어느 곳으로도 갈 수 없다고 확신하지는 않는다. 그러나 당신 자신의 커스텀 dropDownFactory을 작성하면 문제를 해결할 수있을 것이다. 나는 적어도 덜 지루할 것이라고 확신한다.

행운을 빈다.