2009-07-16 4 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(); 
関連する問題