2009-07-31 12 views
3
instanziieren

Ich habe dies schon einmal gemacht, aber ich kann mich nicht mehr an die Syntax erinnern.Klasse als Parameter übergeben und dann von Klasse

was ich habe (vereinfacht):

function createText(clazz:Class) 
{ 
    var font:Font = new clazz(); //throws Instantiation attempted on a non-constructor. 
} 

ich das glauben kann, ohne getQualifiedClassName getan werden, aber es ist eine lange Zeit gewesen. Jede Hilfe wird geschätzt.

Antwort

7

Sie sind wahrscheinlich null an die Funktion übergeben.

package 
{ 

import flash.display.Sprite; 

public class ClassTest extends Sprite 
{ 
    function ClassTest() 
    { 
     makeObject(Object); 
     makeObject(Sprite); 
     makeObject(null); 
    } 

    private function makeObject(type:Class):void 
    { 
     trace(typeof type); 
     var obj:* = new type(); 
     trace(typeof obj); 
     trace(""); 
    } 
} 

} 

Diese Ausgänge:

object 
object 

object 
object 

object 
TypeError: Error #1007: Instantiation attempted on a non-constructor. 
    at ClassTest/makeObject() 
    at ClassTest() 
+0

danke du hast mir auch geholfen! – matthy

1

Wie übergeben Sie die Klasse an die Funktion? die aufrufende Leitung sollte einen Fehler an erster Stelle haben, wenn die gewünschte Klasse nicht verfügbar war, das ist seltsam.

können Sie den echten Code veröffentlichen?

hier ein Trick für eine Klasse in einer externen swf zusammengestellt Laden

var clazz:Class = this.yourLoader.contentLoaderInfo.applicationDomain.getDefinition("yourClassName") as Class; 
0

ich die Schriftart einen Klassennamen in CS3 nicht gegeben Stellt sich heraus hatte. Also, ja, ich war null.

Verwandte Themen