[AIR] renderMode와 Stage~ 계열의 컴포넌트 동작

Flex로 모바일 앱을 개발하면서 StageWebView, StageVideo, StageText등을 사용하게되는데
이때 Application 설정파일의 renderMode에 따라 여러가지로 해결하기가 난해한 문제들이 생겻다.
일단은 AIR SDK3.7 상황에서 어느정도 타협점을 찾은것 같아 글을 남긴다.

맨처음 renderMode를 cpu로 설정 한경우 다음 증상이 나타났다.

동영상 재생시 소리만 나오고 화면은 검은화면인 채로 재생되지 않았다.

이것은 화면이 재생되지 않은것이 아니라 StageVide가 Application 밑에 있음으로 인해 player 배경으로 설정해 놓은 검은색 DisplayObject에 가려져 있었던것 같다. 매번 같은 현상이 있었으며 두번째 재생할때는 정상적으로 화면이 표시되는듯 하다가도 Device 회전등에 동작에따라 화면 끊김 현상이 좀 심하게 나타났다.

Application.xml에서 <renderMode>direct</renderMode> 로 수정함으로써 해결하였고
더불어 런타임에 Player가 처음 재생될때 화면이 깜빡이는 현상도 함께 사라졌다.


renderMode를 direct로 설정하자 다음과 같은 현상으로 다른 부분 동작이 원활하지 않게 되었다. 대부분 renderMode가 cpu인 경우 잘 동작하던 것들이였다. 

<softKeyboardBehavior>pan</softKeyboardBehavior> 설정에 의한 동작이 정상적으로 이루어지지 않았다.

텍스트 입력박스에 포커싱을 받아 SoftKeyBoard가 올라와도 키보드에 입력박스가 가리는걸 방지 하기 위한 pan 기능이 제대로 동작하지 않았다 자료를 찾아보니 다음과 같은 문구를 발견하였다.

oft keyboard에 대하여 텍스트 박스의 위치가 정삭적으로 움직이도록 하려면 cpu, pan 모드로 고정되어야 합니다.그렇지 않은 경우에는 기능을 직접 구현해 주어야 합니다.

참고 : http://help.adobe.com/ko_KR/air/build/WSfffb011ac560372f-5d0f4f25128cc9cd0cb-7ffd.html");
참고 : http://help.adobe.com/ko_KR/air/build/WSfffb011ac560372f2fea1812938a6e463-8000.html");

GPU 렌더링 모드에서 가상 키보드가 열릴 때 텍스트 필드가 보이는 위치로 제대로 이동하지 않습니다. 사용자가 텍스트를 입력할 때 텍스트 필드가 보이도록 하려면 스테이지의 softKeyboardRect 속성과 소프트 키보드 이벤트를 사용하여 텍스트 필드를 눈에 보이는 영역으로 이동하십시오.

그래서 focus in, out 이벤트를 이용해 직접 위치를 이동 시켜 주어야 했다. 참고로 포커스가 바뀔때 텍스트박스, 텍스트 필드인지 타입을 조사하여 위치를 이동시켜주었다.

SNS 기능을 위해 StageWebView를 사용하는데 인증을 위해 트위터 페이지를 표시할때 렌더링에 이상이 발생했다.

동영상 재생시와 비슷하게 화면이 배경색으로 덮여지는 현상이 발생했다.
페이스북로그인 화면에서는 괜찮은데 트위터 로그인 화면에서 발생했다. 역시 도움말에서 해당 정보를 찾을 수 있었다.

  <manifestAdditions><![CDATA[
   <manifest android:installLocation="auto">
   
       <!--StageWebView 객체에서 다른 플러그인 활성화하기 위해 필요(특히 트위터 페이지 표시할때)-->
       <application android:hardwareAccelerated="true"/>
   ......
참고) http://help.adobe.com/ko_KR/air/build/WSfffb011ac560372f-5d0f4f25128cc9cd0cb-7ffc.html

 

겨우 찾아서 해결했다. App 개발이 마치 살얼음판을 걷는 기분이다.

저작자 표시 비영리 변경 금지
신고
TAG
트랙백 ( 0 )개 , 댓글 ( 3 ) 개가 달렸습니다.

Commentary

댓글을 달아 주세요.

  1. 김성윤 2013.10.10 21:17 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. Flex모바일 앱 개발중인데, 가로모드에서 textinput클릭시, soft keyboard가 화면을 덮어버립니다. 카카오톡의 가로모드처럼 textinput은 살려두고 싶은데 잘 안되네여. pan기능 설정하고 render모드를 cpu로 고정시켜도 그렇습니다. 구글링만 5시간 넘도록 하고있습니다. 글을보니 focus in, out 을 통해 직접 이동시켜야 한다고 하셨는데... 개념이 잘 안서네여. 왜그렇게 해야되는지, 왜그런지 이해가 잘 가질않습니다. 혹시 도움받을수 있을런지요...

    • Favicon of http://vulcan9.tistory.com BlogIcon vulcan 2013.10.15 10:19 신고  댓글주소  수정/삭제

      버전마다 테스트 해보진 않았지만 저의 경우엔 cpu / pan 설정으로 소프트 키보드가 열릴때 위치이동이 잘되었습니다. (AIR 에서 동작)

      direct나 gpu 설정인 경우엔 참고 URL에 나와있는것 같이 pan 설정이 정상적으로 지원되지 않습니다.

      저의 경우엔 동영상 플레이 때문에 direct로 설정되어야 해서 focus in/ focus out이벤트를 활용하여 pan 역할을 직접 구현해 준 것입니다.
      Gpu 가속을 사용하는 모드에선 제한사항이 너무 많아 개발이 너무 힘들어지는 느낌이 듭니다.

  2. 난누군가 2015.09.16 20:57 신고  댓글주소  수정/삭제  댓글쓰기

    우와... 드디어 찾았습니다. H264 적용하면서 모바일에 화면이 바로 안떠서 애를 먹었는데... 이제야 찾았네요.

Add a Comment

comment에 대한 답변글은 해당 글상자에 있는 "R"(reply)버튼을 클릭하여 작성해 주시기 바랍니다.

티스토리 툴바