Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-09-2008, 15:09   #1 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
extends prüfen

Kann ich prüfen, ob eine Klasse eine Andere extended?
Also idealerweise etwa so in der Art:

Code:
if(ExtClass extendsClass BasicClass){
 trace('is extended from BasicClass');
}
Wichtig ist, dass ich keine Instanzen bauen muss, da ich die jeweils erste Instanziierung an einer anderen Stelle als Ereignisauslöser verwende.
T.Decay ist offline   Mit Zitat antworten
Alt 01-09-2008, 15:12   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2006
Beiträge: 12
wenn du das auf klassen basis machen willst fällt mir atm nur describeType ein. das wird aber etwas mehr arbeit als ein einfaches instanceof.

gruss
Chris
bendulu ist offline   Mit Zitat antworten
Alt 01-09-2008, 15:36   #3 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
Im Moment überprüfe ich mit getQualifiedSuperclassName. Das ist zwar recht unkompliziert, funktioniert aber leider nur über eine Vererbungsstufe.´

Mit describeType werde ich mich mal auseinandersetzen, falls das nix hilft, versuch ich was über Rekursion zu reißen.

Danke Dir!
T.Decay ist offline   Mit Zitat antworten
Alt 02-09-2008, 08:55   #4 (permalink)
Neuer User
 
Benutzerbild von maschka
 
Registriert seit: Jun 2003
Beiträge: 194
bin mir gerad nicht sicher, aber das müsstest du doch mit "is" herausfinden können.

also:

PHP-Code:
if (obj is MeineTolleSuperKlasse) ... 
weil, das ja die Spezialisierung einer Superklasse eigentlich ist.

habs aber nicht probiert.

gruß
maschka
maschka ist offline   Mit Zitat antworten
Alt 02-09-2008, 09:16   #5 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Nein mit "describeType" bist du schon richtig.
Der Ansatz mit "is" bringt einen nichts, da man schon von vornherein alle Klassen kennen muss auf die man testet.
__________________
ERROR: Signature is too large

Geändert von rendner[i] (02-09-2008 um 09:19 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 02-09-2008, 11:25   #6 (permalink)
Klugscheisser
 
Registriert seit: Jun 2001
Ort: Düsseldorf
Beiträge: 1.354
@maschka: das funktioniert leider auch nur mit Instanzen, was für mich leider nicht infrage kommt (s.o.). Trotzdem danke!

Ich hab mir jetzt eine rekursive Function geschrieben, die erledigt das für meine Zwecke ganz OK:

Code:
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedSuperclassName;
import flash.utils.getQualifiedClassName;

function hasAncestor( orphan:Class, ancestor:Class ) :Boolean {
	
	var superclassName:String = getQualifiedSuperclassName(orphan);
	var ancestorClassName:String = getQualifiedClassName(ancestor);
	
	if (superclassName == null) return false;
	if (ancestorClassName == null) return false;
	if (superclassName == ancestorClassName) return true;
	return hasAncestor( Class(getDefinitionByName(superclassName)), ancestor );
}
Danke nochmal euch dreien!

Geändert von T.Decay (02-09-2008 um 11:42 Uhr)
T.Decay ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele