2012-08-08 8 views
0

누군가가 여기를 도울 수 있기를 바랍니다. a) 상대 경로에 대한 해결책 또는 b) 자산을로드하는 다른 방법에 대한 통찰력을 찾으십시오.flex 4의 다중 버전 하위 응용 프로그램 자산 경로

우리는 SDK 4.1을 사용하는 독립형 웹 응용 프로그램을 가지고 있으며로드 할 모든 이미지와 외부 swfs에 대한 상대 자산 폴더를 조사합니다.

/ApplicationRoot/versionFldr/controls/assets/* 

응용 프로그램이 자산 ..로드의 모든 경우에 상대 경로를 사용하고이 지속적으로 추가하고 우리로 업데이트되는 :

서버

,이 자산 디렉토리의 절대 경로입니다 앱의 사전 버전. 이제 앞으로 새로운 응용 프로그램에

assets/* 

를, "ParentApp"및 위의 응용 프로그램 "ChildApp"를 호출 할 수 있습니다 :

그래서, 본질적으로, 앱에서 찾고있다. ParentApp에 ​​ChildApp로드, 그것은 항상에 있었던 것 같은 디렉토리에 있다고 가정 할 때

부모 앱이

/ParentApp/version/controls/ParentApp.swf 
/ChildApp/version/controls/ChildApp.swf 

지금 ChildApp 서버가 아닌 다른 서버의 디렉토리에 있습니다. 그래서, 자산을 찾습니다 나는 그것이 ParentApp의 자식 인 경우 ChildApp가로드 된 모든 자산의 절대 경로에서 찾아 보게 할 수있는 해결책을 찾기 위해 필요 할 때 그 자체로 상대 경로에서 찾아 보게

/ParentApp/version/controls/assets/* != /ChildApp/version/controls/assets/* 

때문에/* 그들을 찾을 수 없습니다 독립 실행 형입니다.

내가 가진주의 사항은 이미지가 다양한 컨트롤, 캐시 및 mx : Text 필드 (태그가있는 html 텍스트)에로드된다는 것입니다. 전역으로 모든 경로 링크를 응용 프로그램에서 바꾸지 않고 응용 프로그램의 새 자산을 만들 때 새로운 코딩 절차를 만들어야하는 것을 피하려고합니다. ChildApp는 현재 생산 중이며 4.1 SDK를 유지해야합니다.

부모 응용 프로그램은 새롭고 유연성이 훨씬 뛰어납니다.

childApp에서 -source-path 및 -library-path 컴파일러 옵션을 사용해 보았지만 컴파일 오류가 발생했으며 계속 진행할 수 없었습니다.

통찰력과 도움에 미리 감사드립니다! -AJ

답변

0

하위 응용 프로그램에서 "baseURL"변수를 사용하면이 문제를 해결할 수 있습니다. 사용하고있는 일반적인 상대 URL을 구성 할 수 있도록 기본값을 지정하십시오 :`var baseURL : String = "/ assets /"; baseURL + assetFileName 자식 응용 프로그램이 상위 응용 프로그램에로드

, 당신은 다음이 baseURL 변수를 제공합니다 : 자산의 경로가 같은 것이 그래서

불행하게도, 당신은 그 자식 응용 프로그램의 모든 자산 경로를 수정해야 비 상대 경로. 이상적으로, 당신은 자식 애플 리케이션이 어떤 애셋을로드하려고 시도하기 전에, 프로세스의 초기에 그렇게한다.

+0

모듈 로딩을 처리하기 위해 실제로이 작업을 수행했으며 완벽하게 작동합니다.flashVars를 통해 ParentApp에서 ChildApp로 "version"값을 전달하고 ChildApp가 초기화되면이 모듈을 사용하여 모듈을 올바르게로드하기 위해 절대 경로를 만듭니다. 이 변수를 사용하는 데 문제가있는 것은 _amount_ 개의 자산과 알 수없는 자산이며이 변수 앞에는 접두사가 필요합니다. ChildApp에는 매우 동적 인 콘텐츠가 있고 개발 사무실 외부의 많은 사용자는 콘텐츠 수정에 액세스 할 수 있습니다. 내용에 상대 경로가 포함되어 있으면 IO 오류가 발생합니다. – notDefault

+0

** SOLVED ** : ParentApp의 자산/폴더에있는 서버에서 ChildApp의 자산/폴더를 가리키는 심볼릭 링크를 만들었습니다. – notDefault