2009-03-18 3 views
1

현재 외부 SWF를 많이 사용하는 응용 프로그램 (Flex)에서 작업 중입니다. 파일 이름을 인수로 사용하고 다른 클래스로 래핑 된 SWF를 반환하는 정적 메서드를 만들고 싶습니다.SWFLoader가 swf 파일을로드하는 동안 대기

public static function getSWFWrapperFromFile(path:string):SWFWrapper { 
    var loader:SWFLoader = new SWFLoader(); 
    loader.addListener(Event.COMPLETE, onLoad); 
    loader.load(path); 
    // If I create new SWFWrapper object here and try to assign it the loader.content I get null reference 

    } 

그러나이 방법으로 나는 때문에 비 차단 부하() 및 onLoad 핸들러의 필요성, 하나의 함수에 로직을 캡슐화 할 수 아니에요. load 메서드를 호출 한 후 지연 될 수 있습니까? 또는 mayber 거기에 또 다른, 더 좋은 방법이 있습니까?

당신은 당신의 Loader 개체가 완료 될 때까지 기다릴 필요가 알론조

답변

0

, 감사합니다. 이벤트 처리기에 추가해보십시오. 네, 로더가 여러 대가 있고 마지막 로딩이 완료 될 때까지 기다려야하는 시점 이후에 모든 것이 어두워집니다. 그러나 이것이 SWFLoader를 사용하려는 경우의 방법입니다.

0

플래시에서는 메서드를 차단할 수 없습니다. 항상 데이터로드를 위해 onLoad 핸들러를 사용해야합니다. (as3 실행 모델은 싱글 스레드입니다. 메서드를 차단하면 나머지 프로그램은 실행되지 않습니다)

0

다른 사람들과 마찬가지로 그렇게 할 수 없습니다. 그러나 BulkLoader AS3 라이브러리를 살펴보십시오. 여러 대의 로더를 동시에 관리하고 완성을 기다리는 것은 부담이됩니다. 그것은 잘 문서화되어 있으며, 몇 줄만 사용하면됩니다.

1

표시 목록은 비동기 적재를 위해 잘 설계되었습니다. Loader는 DisplayObject 파생 클래스이므로 표시 목록에 직접 배치 할 수 있습니다. 내용이로드되면 Loader의 하위 항목이됩니다. 따라서 SWFWrapper가 DisplayObject에서 파생 된 경우 코드 끝에서 간단히 다음을 수행 할 수 있습니다.


var wrapper:SWFWrapper = new SWFWrapper(); 
wrapper.addChild(loader); 
return wrapper; 
관련 문제