Wie Sie dynamisch erstellen Sie eine Actionscript 2 MovieClip-Klasse mit
Habe ich eine helper-Methode erstellt wurde, die es erlaubt, eine MovieClip-Klasse, die im code und der Konstruktor aufgerufen. Leider ist die Lösung nicht vollständig ist, da die MovieClip-callback onLoad() wird nie aufgerufen.
(Link zum Flashdevelop thread erstellt, die die Methode .)
Wie können Sie die folgende Funktion so modifiziert werden, dass sowohl die constructor und onLoad() ist richtig genannt.
//------------------------------------------------------------------------
// - Helper to create a strongly typed class that subclasses MovieClip.
// - You do not use "new" when calling as it is done internally.
// - The syntax requires the caller to cast to the specific type since
// the return type is an object. (See example below).
//
// classRef, Class to create
// id, Instance name
// ..., (optional) Arguments to pass to MovieClip constructor
// RETURNS Reference to the created object
//
// e.g., var f:Foo = Foo( newClassMC(Foo, "foo1") );
//
public function newClassMC( classRef:Function, id:String ):Object
{
var mc:MovieClip = this.createEmptyMovieClip(id, this.getNextHighestDepth());
mc.__proto__ = classRef.prototype;
if (arguments.length > 2)
{
//Duplicate only the arguments to be passed to the constructor of
//the movie clip we are constructing.
var a:Array = new Array(arguments.length - 2);
for (var i:Number = 2; i < arguments.length; i++)
a[Number(i) - 2] = arguments[Number(i)];
classRef.apply(mc, a);
}
else
{
classRef.apply(mc);
}
return mc;
}
Ein Beispiel für eine Klasse, die ich erstellen möchten:
class Foo extends MovieClip
Sowie einige Beispiele von, wie ich erstellen derzeit die Klasse im code:
//The way I most commonly create one:
var f:Foo = Foo( newClassMC(Foo, "foo1") );
//Another example...
var obj:Object = newClassMC(Foo, "foo2") );
var myFoo:Foo = Foo( obj );
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verstehe ich richtig, dass Sie möchten, erstellen Sie eine Instanz des leeren Movieclips mit Klasse Verhalten angebracht, und ohne zu definieren, einen leeren clip-symbol in der Bibliothek?
Wenn das der Fall ist, müssen Sie die Pakete trick. Dies ist meine base-Klasse (namens-Ansicht), habe ich mit im Laufe der Jahre und in Hunderten von Projekten:
So, alles, was Sie zu tun haben, die Verwendung dieser Klasse ist Unterklasse es:
Können Sie jetzt erstellen Sie eine Instanz von Foo wie diese;
Unter der Annahme, dass 'dies' ist eine MovieClip-oder einer Ansicht.
Wenn Sie benötigen, um dieses mit einem symbol aus der Bibliothek, dann lassen Sie einfach die __Pakete-Präfix auf den _symbolPackage Mitglied.
Hoffe, das hilft...
Wenn Sie möchten, erstellen Sie eine Instanz der Foo-Klasse mit zusätzlichen Parametern, verlängern Sie die create-Methode. In meiner Umsetzung , ich bin erstellen von Knoten mit objectIds:
Die Knoten-Klasse sieht wie folgt aus:
Bitte beachten Sie, dass die objectId ist nicht definiert, in der private Konstruktor-Knoten (), sondern definiert in der onInitialize().