adobe flex documentation과 같은 모듈 통신용 인터페이스를 사용하고 있습니다. mxml에 ModuleLoader가 있으면 모든 것이 잘 작동합니다.Flex에서 인터페이스에 캐스팅하는 데 문제가 있습니다.
<mx:TabNavigator id="testNav"
height="100%"
width="100%">
<s:ModuleLoader id="firstTab"
label="ONE"
width="100%"
url="path/to/module/Mod1.swf"/>
<s:ModuleLoader id="secondTab"
label="TWO"
width="100%"
url="path/to/module/Mod2.swf"/>
</mx:TabNavigator>
가 나는
var someChild:* = firstTab.child as ISomeModule;
ISomeModule 인터페이스 인 코드를 갖는다. 내가 다른 파일에서 ActionScript의 ModuleLoader있을 때 나는 같은 일을 수행 할 때
var myLoader:ModuleLoader=new ModuleLoader();
myLoader.percentHeight=50;
myLoader.percentWidth=50;
myLoader.loadModule(moduleURL + "?attr=value&attr2=" + parentDocument.attr2);
을 ISomeModule 다른 기능에, 나는
var childMod:* = myLoader.child as ISomeModule;
myLoader.child
은이 캐스팅 할 때 는하지만, someChild가 null이된다 null는 아니지만 ISomeModule로 캐스트하면 null이됩니다. 누구든지이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 감사
당신은 당신이 인터페이스로 캐스팅 할 수 있는지 있습니까? Object에 캐스트하지 않아도됩니까? 가변 유형은 인터페이스가 될 수 있습니다. 하지만 런타임에 해당 인터페이스를 구현하는 객체를 사용해야합니다. 그것이 잘못되었다고 가정합니다. 당신이 시도 : IssomeModule (firstTab.child)? firstTab [그리고 그 아이]가 유효한 값을 가지고 있다고 확신합니까? 그들은 null 일 수 있었습니까? – JeffryHouser
아니, firstTab 및 자식은 괜찮습니다. 테스트 한 결과 ISomeModule에서 선언 한 함수로 작업 했으므로 [공식 문서] (http://help.adobe.com/en_US/flex/using) 에서처럼 좋았습니다. /WS2db454920e96a9e51e63e3d11c0bf64277-7fea.html#WS2db454920e96a9e51e63e3d11c0bf69084-7d1d) – Mansuro
캐스트를 수행 할 때 디버거에서'myLoader.child'를 살펴 보았습니까? 디버거에는 어떤 유형이 표시됩니까? 원하는 인터페이스를 구현합니까? –