Flex로 작성된 웹 응용 프로그램이 있는데 조건부 컴파일을 사용하여 동일한 코드 기반에서 AIR 응용 프로그램을 작성하려고합니다.Flex (액션 스크립트)의 조건부 컴파일 및 import 문
AIR 응용 프로그램에서 다음과 같은 import 문이 필요합니다. import flash.data.SQLConnection; import flash.filesystem.File; 하지만 AIR 전용 클래스이기 때문에 웹 응용 프로그램에 이러한 import 문을 사용할 수 없습니다.
나는이 문제를 극복하기 위해 조건부 컴파일을 사용할 수 있다고 생각했지만 http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7abd.html 페이지에서 다음을 읽었습니다. "메타 데이터 또는 가져 오기 명령문을 조건부로 부울 값을 사용할 수 없습니다."
그렇다면 Flex 기반 웹과 데스크톱 응용 프로그램에 공통 코드베이스를 사용하려면 어떻게해야합니까? 아무도이 수수께끼를 해결 했습니까? 약간의 시행 착오 후
감사합니다,
딜립이 질문에
더 ... 나는이 프로젝트에 대한 이클립스에서 3 개 프로젝트 ... 웹 응용 프로그램에 대해 하나, AIR 응용 프로그램을 가지고 하나는 공통 소스 코드입니다. 웹 및 AIR 프로젝트에서 공통 소스 코드를 가리 킵니다. 공통 코드에서 조건부 컴파일을 사용했으며 다음과 같이 할 수 있습니다. CONFIG :: desktopMode { import flash.data.SQLConnection; import flash.events.SQLEvent; import flash.events.SQLErrorEvent; import flash.filesystem.File; }
및 유사한 방법으로 컴파일하는 동안 웹 또는 AIR 특정 기능을 포함 할 수 있습니다. 접근 방식은 지금까지 효과가있는 것으로 보인다!
내가 이슈를 가로 지르는 유일한 곳은 내 Cairngorm의 모델 검색 자입니다. Cairngorm의 모델 로케이터에있는 import 문 주변에 CONFIG :: desktopMode를두면 컴파일러에서 "잡히지 않은 예외"또는 "1131 클래스가 중첩되어서는 안됨"오류가 발생합니다. 이 오류를 해결하는 방법을 모르겠습니다!
Dilip
좋은 속임수이지만 꽤 끔찍한 코드를 만듭니다. P –
@J_A_X, 동의 함. 그리고 나에 관해서는 공통 인터페이스를 사용하여 플랫폼 종속 코드를 별도의 클래스로 추출하는 것을 선호합니다. 그리고 이러한 의존 관계를 주입 컨테이너 또는 일부 다른 방법 (귀하의 답변에 설명 된대로)을 사용하여 특정 구현 주입 인터페이스로 이러한 클래스를 사용하십시오. – Constantiner