2009-07-16 2 views
2

창을 여는 기능을 만들려고하지만 동일한 창을 아직 열지 않았는지 확인합니다. 인스턴스화되지 않은 var 또는 인스턴스화 된 var 전달할 수 싶습니다 및 어느 쪽이든 작동합니다. 창이 이미 열려 있으면 창을 닫은 다음 다시 엽니 다.변수 유형을 얻는 방법? 인스턴스화 하시겠습니까?

그래서 Window 또는 하위 클래스의 변수를 전달하고 적절한 하위 클래스를 인스턴스화하는 방법이 필요합니다.

나는 이런 식으로 뭔가를 찾고 있어요 :

public function openWindowOnce(window:Window):void 
{ 
    if(isOpen(window)) 
    { 
     closeIfOpen(window); 
    } 
    window = new Window(); /**<-- THIS LINE window can also be a sublcass of window, 
          * I want to instatiate the correct sublass, 
          * I also want to make sure that it is a Window or a 
          * Sublcass of window before I instatiate it. 
          */ 
    window.open(); 
} 

감사합니다!

답변

5

결과를 얻으려면 flash.utils.getDefinitionByName(), flash.utils.getQualifiedClassName()ClassFactory의 조합을 사용해보십시오.

var className:string = getQualifiedClassName(object); //returns the class name  
var classObj:Class = getDefinitionByName(className) as Class; //get a Class object 
var factory:IFactory = new ClassFactory(classObj);// get a Class factory  
var newObj:Object = factory.newInstance(); 
관련 문제