2010-01-05 5 views
1

Flex로 작업 중이므로 상대 URL 소스 속성을 가져 와서 절대 URL로 변환해야합니다.Actionscript/Flex에서 상대 URL을 절대 URL로 변환

내가 작업하고있는 특정 경우에는 SoundEffect의로드 방법을 조정해야합니다. 로컬 파일 시스템이나 네트워크에서 원본 속성을 볼 때 파일을로드 할 것인지를 결정해야하며,이를 수행하는 가장 쉬운 방법은 절대 URL을 생성하는 것입니다.

특히 음향 효과에 대한 절대 URL을 생성하는 데 문제가 있습니다. 여기에는 내 초기 사고가 있었지만 작동하지 않았습니다.

  1. 사운드 효과 대상 인 DisplayObject를 찾고 loaderInfo 속성을 사용하십시오. SoundEffect가로드 될 때 대상이 null이므로이 기능이 작동하지 않습니다.

  2. url 또는 loaderInfo 속성에서 FlexGlobals.topLevelApplication을 확인하십시오. 그러나 이들 중 어느 것도 설정되어 있지 않습니다.

  3. FlexGlobals.topLevelApplication.systemManager.loaderInfo를 살펴보십시오. 이것은 또한 설정되지 않았습니다.

SoundEffect.as 코드는 기본적으로 사람이 작업을 수행하는 방법을 알고 있나요

var url:String = "mySound.mp3"; 
/*>> I'd like to convert the URL to absolute form here and tweak it as necessary <<*/ 
var req:URLRequest = new URLRequest(url); 
var loader:Loader = new Loader(); 
loader.load(req); 

아래로 비등? ActionScript에서 URLRequests에 대한 상대 URL이 어떻게 해결되는지에 대한 규칙을 명확하게 설명하면 도움이 될 것입니다.

edit 로컬 파일 시스템이나 네트워크를 통해 URL을로드할지 여부를 알려주는 방법에 대해서도 충분히 만족할 것입니다. 절대 URL을 보면 file:// 또는 http://과 같이 접두어를 쉽게 볼 수 있습니다.

답변

0

절대 URL을 얻으려면 응용 프로그램의 invoke 이벤트의 currentDirectory 속성을 URL의 상대적인 부분 앞에 두어야한다고 생각합니다. 여기에는 여전히 ./ 및 ../과 같은 내용이 포함될 수 있습니다.

다음은 relavant Adobe livedocs page에서 일부 코드입니다 :

var arguments:Array; 
var currentDir:File; 
public function onInvokeEvent(invocation:InvokeEvent):void { 
    arguments = invocation.arguments; 
    currentDir = invocation.currentDirectory; 
} 
+0

whybird 이봐, 손을 빌려 주셔서 감사합니다. 내일 체크 아웃 할 필요가 있지만 onInvokeEvent는 AIR 애플리케이션을 시작한 경우에만 발생합니다. 이것은 웹 응용 프로그램에서도 작동해야합니다. 가능한 경우 정보가없는 경우 청취자를 추가하지 않는 것이 좋습니다. 나는 조금 주위를 고치고 무엇이 튀어 나오는지 보게 될 것이다. – Bear

+0

그래, 나는 듣는 사람에 대해 이해한다.하지만이 경우 한 번 발생하면 그것을 죽일 수있다. onInvokeEvent는 웹 앱 실행시에도 작동합니다. 위에 링크 된 livedoc의 "Application Invocation"제목 아래 마지막 글 머리표를 확인하십시오. – whybird

관련 문제