2010-07-27 9 views
0

En AS2, je peux certainement le faire:Puis-je construire un objet sans connaître la classe dans ActionScript 2?

var instance = new MyClass(); 

Mais est-il un moyen de faire quelque chose comme ça?

var constructor = MyClass; 
var instance = new constructor(); 

Cela semble être possible en AS3 par simplement appeler « nouveau » sur une instance de l'objet de classe, mais je n'ai pas été en mesure de comprendre ce que la syntaxe serait d'obtenir ce travail en AS2.

Répondre

0

Vous pouvez le faire:

D'abord, vous devez déclarer la classe pour l'inclure dans le fichier SWF.

var toto:YOUR_CLASS; 

Et à côté, vous pouvez obtenir une instance par:

var instance = new["directory.subdirectory.YOUR_CLASS"](); 

Edit:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:at="at.controls.*" creationComplete="init()"> 
    <mx:Script> 
     <![CDATA[ 
      import mx.rpc.remoting.mxml.RemoteObject; 
      private function init():void { 
       var obj:Object = ObjectLoader.getInstanceOf(RemoteObject); 
      } 
     ]]> 
    </mx:Script> 
</mx:Application> 

ObjectLoader:

package { 
    public class ObjectLoader { 
     public function ObjectLoader(){ 
     } 

     public static function getInstanceOf(cl:Class):Object { 
      return new cl; 
     } 
    } 

Ceci est un nouvel exemple. Je crée une instance de RemoteObject. }

+0

Y at-il un moyen de le faire sans connaître le * nom * de la classe (ou, en variante, de dériver le nom de l'objet Function)? –

+0

Si vous ne connaissez pas le nom de la classe. Le compilateur ne sait pas non plus. Votre fichier SWF contient uniquement la classe déclarée sur votre code source. – Epharion

+0

Fondamentalement, je veux être en mesure de passer une référence de classe à une autre fonction, et avoir l'autre fonction construire l'instance. Cela signifierait que j'ai fait référence à la classe à un moment donné (et qu'elle est compilée dans le fichier SWF); Je ne l'ai simplement pas référencé à l'endroit où je l'ai instancié. –