1&1 DSL
Flashhilfe.de - Flash Community

Typ einer Komponente herausfinden [Flash 9]

Forum > ActionScript 2.0 > Typ einer Komponente herausfinden

 


AntwortenRegistrieren Seite1  

 18.05.2010, 08:37 
Beiträge: 5
Registriert: May 2010

Typ einer Komponente herausfinden
Guten Morgen,

wie kann ich den Typ einer instanziierten Komponente (wie TextInput, Textarea) herausfinden oder feststellen dass es eine Komponente ist?

Bei typeof erhalte ich stets Object. Eine Eigenschaft wie type bei den Komponenten scheint es nicht zu geben.

Leider habe ich eine Antwort auf diese einfache Frage beim Suchen nicht bekommen.
Schlagwörter: Komponentenart
 18.05.2010, 10:02Re1
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

Hi,
wozu brauchst du das denn? Vielleicht gibt es ja noch einen einfacheren/besseren Weg.
 18.05.2010, 10:22Re2
Beiträge: 5
Registriert: May 2010

Themenautor/in

Ich habe mir einen kleinen Designmanager gebaut, der Elemente per DragDrop verschieben lässt. Ist so eine Klasse von Greensock. Da kann ich jeden MC, Textfeld usw. per Methode hinzufügen und dann ist das dragdrop-fähig.
Deshalb gehe ich in der Schleife alle Elemente durch. Bei Gruppen gehe ich deren Unterelemente durch bis immer nur eine Sache übrig bleibt (z.B. MC mit 3 Elementen -> in jedem der drei ein MC => füge die drei MCs einzeln hinzu).
Bei Komponenten möchte ich aber nicht deren Unterelemente hinzufügen (z.B. Scroller, Textfeld) sondern als ganzes, deshalb will ich vorher abfragen ob das eine Komponente ist, die ich dann als ganzes hinzufüge.
Verstehst? =)
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 18.05.2010, 11:28Re3
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

Ich habs mal ein wenig durchgetestet. Leider gibt es dafür in AS2 scheinbar keinen einfachen Mechanismus.
Habe aber zwei Möglichkeiten erarbeitet, bei denen das gehen sollte.
1. Da jede Komponente von UIObject erbt, kann man die Prototypen-Kette hochhangeln und überprüfen, ob die aktuelle proto-Eigenschaft mit der prototype-Eigenschaft von UIObject übereinstimmt.
ActionScript:
1
2
3
4
5
6
7
8
9
import mx.core.UIObject;
function isComponent(o:Object):Boolean {
   while (o.__proto__) {
      if (UIObject.prototype == o.__proto__) return true;
      o = o.__proto__;
   }
   return false;
}
trace(isComponent(instanzname));

Eine andere, einfachere aber auch u.U. unsichere Möglichkeit ist die Überprüfung von eventuell vorhandenen Methoden des Objektes.
Jede Komponente erbt von UIObject einen speziellen Satz an Methoden.
ActionScript:
1
2
3
4
function isComponent(o:Object):Boolean {
   return typeof(o["doLater"]) == "function";
}
trace(isComponent(instanzname));

In dem Beispiel habe ich jetzt die doLater-Methode genommen. Der Nachteil daran ist aber, dass man Objekte überprüft, die zwar keine Flash-Komponenten sind, aber dennoch diese Methoden implementiert haben könnten. Von daher muss man mit dem zweiten Beispiel etwas vorsichtig sein.

++++++ Update ++++++
Manchmal ist die einfachste Lösung doch so nah :)
ActionScript:
1
2
import mx.core.UIObject;
trace(instanzname instanceof UIObject);
Geändert von badskill am 18.05.10 um 11:51 Uhr

 18.05.2010, 15:53Re4
Beiträge: 5
Registriert: May 2010

Themenautor/in

Grandios! Lieben Dank.
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de