오랫만에 Flex 글을 적어봅니다


C++ 로 ANE를 만들어서

Flex에 Properties 에서

Flex Biuld Path 에 Native Extensions 라는 탭에서 만든 ANE를 넣고 

코드에서도 해당 ANE를 잘 잡고 ANE의 함수도 잘 인식되었는데

막상 실행해서 해당 함수가 실행되니 아래같은 오류가 발생 했습니다


VerifyError: Error #1014: Class com.wooam::extCaptureWall could not be found.


구글링 해보니 

Flex에 Properties 에서

Flex Build Packaging에 Native Extensions 탭에서

해당 ANE 에 Package 를 체크 하라고 하더군요..


그렇게 하니 해결 되었습니다;;


언제나 하면 할수록 참 오묘한 Flex 의 세계 입니다

원래는 C++ 카테고리를 만들어야 겠지만 전문 분야가 아니라 여기에 적습니다


일단 실행 예제 부터 -_-;


   int isExist = access("C:/ddd/aaa.exe", 0);

if(isExist == 0)

{

// 파일 실행시킬 부분

SHELLEXECUTEINFO ExeInfo;

ZeroMemory( &ExeInfo, sizeof(ExeInfo) );

ExeInfo.cbSize = sizeof(ExeInfo);

ExeInfo.lpVerb = _T("open");

ExeInfo.lpFile = _T("C:/ddd/aaa.exe");                    // 실행할 파일명

ExeInfo.lpParameters = _T("111 111 111");             // 넘길 인자값

ExeInfo.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS; 

ExeInfo.nShow = SW_SHOW;


::ShellExecuteEx( &ExeInfo );

}

else

{

// 팝업을 띄우든 다운로드 하던....

}


access 함수로 실제 파일이 존재하는지 확인하고 

shellexecuteinfo 로 외부프로그램을 실행시킵니다

자세한건 msdn은 참조하세요;;


FLEX BUILDER 4.6 사용중이고

일반적인 프로그램 개발중에


popupManager를 사용해서 titleWindow 를 사용해서 팝업으로 띄우고 close 시키니 아래와 같은 에러가 나더군요.


TypeError: Error #1009: Cannot access a property or method of a null object reference.


아무래도 팝업창에서 직접 popupManager.removePopup(this) 로 작업해서 그런가 싶어서 


부모객체에 dispatch 로 이벤트 날려서 removePopup 해도 결과는 똑같았습니다



그래서 구글 검색해보니 저런 에러 난사람들이 많더군요...


flex 버그라는 사람도 많고..


일단 결과적으로 땜빵식으로  

focusManager.deactivate(); 

 사용해서 해결했습니다


일단 저렇게 하니 에러는 안나더군요..


팝업이 닫힐때 뭔가 잘못된곳의 focus를 잡으려다가 에러가 나는 것 같습니다



현재 실행중인 프로그램을 강제로 재실행 해줘야 하는 기능이 필요할 때가 있습니다.


역시 구글에 검색해보니 방법이 있네요


일단 원글 출처는 https://forums.adobe.com/thread/951952 입니다


하지만 지워질지도 모르니 여기 적어놓겠습니다.


현재 환경은

Flex 버전은 4.6

AIR 버전은 14.0 입니다

웹이 아닌 Windows 기반 프로그램입니다


내용은 간단합니다.


원하는 곳에 아래 소스를 넣기만 하면 됩니다



  1.           public function Reboot():void  
  2.           {  
  3.                     var app:WindowedApplication = WindowedApplication(FlexGlobals.topLevelApplication);  
  4.   
  5.                     var mgr:ProductManager = new ProductManager("airappinstaller");  
  6.                     mgr.launch("-launch "+app.nativeApplication.applicationID+" "+app.nativeApplication.publisherID);  
  7.                     app.close();  
  8.           }  


import 도 해줘야 되는데...뭐 어차피 ctrl + space 바 누루다 보면 자동 완성되긴 하지만..;;

아래처럼 넣으면 됩니다



  1. import adobe.utils.ProductManager;  
  2.   
  3.           import flash.desktop.NativeApplication;  
  4.   
  5.           import mx.core.FlexGlobals;  
  6.           import spark.components.WindowedApplication;  



그리고 마지막으로 중요한게..


프로젝트명-app.mxml 을 수정해야됩니다. 이거 안하니까 안되더라구요



  1. <allowBrowserInvocation>true</allowBrowserInvocation>  


위에내용이 보통 주석처리 되어있는데 주석 해제하고 true 값 넣어주면 됩니다


위 내용대로 하면 다 되었는데 주의점은 builder에서 debug로 실행하면 작동 안합니다
꼭 release 해서 실행파일일때 실행되어야 재시작 됩니다





개발용 노트북이 윈도우즈 8 64비트 버전인데

Flex를 실행시켜서 빌드를 해보면

항상 아래와 같은 팝업이 뜨면서 빌드가 안되는 문제가 있었습니다.


그래서 저 팝업에 있는 경로를 들어가서 최신버전의 adobe flash player를 설치해도 해결이 안되고..

고민이 좀 있었는데


드디어 해결방법을 찾아냈네요..



우선 저 팝업에 있는 경로를 따라 들어가면 아래와 같은 adobe의 download 사이트가 나옵니다.


경로는 http://www.adobe.com/support/flashplayer/downloads.html#fp10 입니다.


그러면 해당 페이지에서 스크롤을 좀 아래로 내리면

아래 사진같이 다운받을수 있는게 많은데

그중에서 Download the Flash Player for Windows 8 x64 debugger 를 다운로드 하면 됩니다.


전 윈도우 8에 64비트니까 저 파일을 다운받았고..

현재 사용중인 버전에 맞춰서 다운받으면 될 것 같습니다




다운 받고 실행하면 윈도우 업데이트가 설치되는데 재부팅 하고나면 정상적으로 디버깅이 됩니다










이번엔 플렉스 빌더의 간단한 팁에 대해 적어보겠습니다.


일단 2가지 인데요 Line Number 표시와


글꼴 변경입니다.


라인넘버는 디버깅할때 에러가 난 곳을 찾기에 편하고

글꼴은 워낙 플렉스 빌더의 기본 글꼴이 작고 한글도 잘 안보여서 필수라고 생각합니다.




먼저 라인 넘버 표시는 간단합니다.


소스 입력하는 부분에서 왼쪽 회색이나 흰색줄에 오른쪽 버튼을 누루면 팝업이 나오는데요




소스 입력하는 부분에서 왼쪽 회색이나 흰색줄에 오른쪽 버튼을 누루면 팝업이 나오는데요




거기서 Show Line Numbers를 눌러주면 됩니다..



그리고 다음으로 폰트 변경방법 입니다.


우선 빌드내에서 상위 메뉴에


Windows -> Preference -> General -> Appearance -> Colors and Fonts 로 이동합니다





그러면 위와 같은 창이 나오게 되는데요 거기서 저 Basic 부분을 확장시켜서 Text Font 를 변경시켜주면 됩니다.





위와 같이 해주면 됩니다.


개인적으론 나눔고딕코딩이 제일 괜찮았습니다

0과 O 의 표현이나 한글가독성 면에서 좋습니다



플렉스 정규식 관련해서 찾아보다가

정규식을 테스트 할수 있는 사이트를 발견해서 올려봅니다.

일단 주소는 http://ryanswanson.com/regexpt 입니다.


왼쪽바에는 각 예제들이 있고요

중앙 workspace에서 자기 마음대로 테스트 해볼수가 있네요


상단부분에 정규식 값을 넣고

Test Input에  기존 텍스트를 넣으면

우측 output에 결과가 나옵니다


정규식 몇번해봐도 잘 모르겠던데..참 좋은 사이트인거 같아요



사진은 문장에서 첫번째 '-' 값 뒤에 있는 숫자를 '-' 포함해서 가져오는 정규식입니다

windows 서버에서

red5와 tomcat 서비스를 사용하는 데 한글로된 파일이나 한글로된 경로에서 파일이 다운로드 안되는 문제 있었습니다.


서버 개발자는 아니라서 정확한 내용이나 상황은 모르지만...

결론은 red5 폴더 서버에서 jee-container.xml 파일을 수정해서 해결되었습니다.

경로는 red5가 설치된 폴더 안에 conf 폴더 안에 파일이 있으며 그냥 편집 눌러서

상단부에 아래와 같은 부분이 있을텐데 저 <bean>과 </bean> 사이에


<property name="connector"> <bean> 위치에 <property name="URIEncoding"><value>UTF-8</value></property>


를 넣어주면 됩니다


예를 들면...아래와 같습니다.



<property name="connector">
                        <bean class="org.apache.catalina.connector.Connector">
                                <!-- Blocking I/O -->
                                <constructor-arg type="java.lang.String" value="org.apache.coyote.http11.Http11Protocol" />
                                <!-- Non-blocking I/O -->
                                <!--
                                <constructor-arg type="java.lang.String" value="org.apache.coyote.http11.Http11NioProtocol" />  
                                -->
                <property name="port"><value>${http.port}</value></property>
                        <property name="redirectPort"><value>${https.port}</value></property>
                <property name="enableLookups"><value>false</value></property>

                <property name="useIPVHosts"><value>true</value></property> <property name="URIEncoding"><value>UTF-8</value></property>

                        </bean>

            </property>



위와 같이하고 red5 서비스를 재시작 하면 끝~

정상적으로 실행도 되었고 Error 메시지도 없고 Warning 메시지만 몇개 떴는데


해당 폴더에 release 파일이 생성 안되는 문제가 있었습니다.


다른 프로젝트를 해봐도 동일하고...


혹시나 싶어서 Export 경로를 다른곳으로 지정해주었더니 잘 되네요..


아마도 기존 경로를 디폴트로 두었는데


소스 경로가 사용자폴더에 있어서 쓰기권한이 없어서 Export를 못해줬던것 같습니다 -_-;


쓰기 못했다는 오류도 안나오고 좀 당황스러웠네요




가끔 프로그램 추가/제거에서 프로그램을 삭제할때 msi 파일을 찾을수 없다고 뜨면서 삭제가 안되는 경우가 있는데

해당파일을 직접 찾아서 넣어주면 해결되지만 쉬운일은 아니죠..


찾아보니 마이크로 소프트에서 해결 프로그램이 있어서 해결할수 있었습니다

아래 링크에서 파일을 받아서 실행하면 됩니다

http://support.microsoft.com/mats/Program_Install_and_Uninstall/ko




동의함 클릭하면 뭔가 설치 합니다.


위에껄 눌러도 되는데 뭔가 설치 안되는게 있으면 아래껄 눌러서 진행하는게 확실한것 같습니다,

제거 클릭후 나오는 목록에서 제거 안되는 프로그램을 삭제하면 왠만하면 깔끔하게 제거 되었습니다.


+ Recent posts