2009-10-12 4 views
0

위젯 기본 클래스를 정의하는 상위 SWF 파일이 있습니다.외부 SWF로드 중, 문서 클래스를 공유 기본 클래스로 캐스트 할 수 없습니다.

외부 SWF를 부모로로드합니다. 외부 SWF의 문서 클래스는 위젯 기본 클래스에서 파생됩니다 (예 : DerivedWidget).

외부 SWF를로드 할 때 디버거에서 DerivedWidget 유형으로 표시되는 Loader.content를 위젯 유형으로 캐스팅 할 수 없다는 것이 문제입니다. 일단로드가 완료되면 "as"연산자를 사용하여 부모 SWF에서 위젯으로 컨텐츠를 캐스트하지만 캐스트 결과는 "null"입니다.

외부 SWF가 부모의 응용 프로그램 도메인에로드되고 로더의 콘텐츠가 위젯에서 파생 된 DerivedWidget으로 표시되지만 기본 위젯 클래스로의 캐스트가 디버거에 표시되기 때문에이 동작이 필요하지 않습니다. 실패.

누구나이 예기치 않은 동작을 설명하고 해결책을 제시 할 수 있습니까?

[편집 : 다시 이전 코드 스냅 샷에서 찾고 ...이 이전 작업을했지만, 지금은 아니다 ... 그리고로드 및 주조 코드는 변경되지 않았습니다] : 실제로

[Edit2가 , 그것은 플래시 IDE에서 디버깅 할 때 실패한 것 같습니다. 정상적으로 실행되면 모든 것이 올바른 ApplicationDomain으로로드됩니다 (sameDomain = true). 이것은 분명히 커다란 버그입니다.]

답변

0

DocumentClass가 상속하는 방식에는 몇 가지 버그가 있습니다.

http://bugs.adobe.com/jira/browse/FP-2999은 (어도비의 버그 추적기에 로그인해야)

나의 추천 거기에서 작동합니다, 무대를 벗고 대신 라이브러리를 통해 내보내는 것입니다. 실제로 제 경험상 "문서 클래스를 사용하지 마십시오."

+0

Flash에 외부를로드하는 것을 포기했습니다. Flash Player 9는 외부 AS3 컨텐츠를로드하는 데 쓸모가 없습니다. 언로드 할 수 없기 때문에 (특히 Adobe Captivate 애니메이션과 같은 경우) 유용합니다. 콘텐츠가 다시로드 될 때 메모리 사용이 점진적으로 증가합니다. 이벤트 발송 API는 GC를 방지하고 임의의 기존 이벤트 및 함수 참조를 검사 할 수 없도록합니다. 우리가 일하는 학교는 일 년에 한 번만 컴퓨터를 다시 이미지화하므로 수천 명의 사용자가 Flash Player 9를 사용해야합니다.이 소프트웨어에 대한 지불을 정당화 할 수는 없습니다. 광고 된대로 작동하지 않습니다. – Triynko

0

비슷한 문제가 발생했습니다. 해결책은 두 가지입니다.

  1. 사용 DerivedWidget(mc), 대신 mc as DerivedWidget. 이 문제를 다루는 몇 가지 기사가 있습니다. 찾아야합니다.

  2. 컴파일 환경 모두에서 DerivedWidget 클래스에 액세스 할 수 있는지 확인하십시오. 모듈을 사용하거나 다른 플래시 도메인을 사용하는 경우 더 신중해야합니다.

관련 문제