Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-11-2011, 09:03   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 670
Ermitteln ob ein Element vorhanden ist

Hallo zusammen.

Ich stehe grade tierisch auf dem Schlauch... Ich versuche zu ermitteln ob ein bestimmtes Element in einem Modul (Canvas) vorhanden ist. Dieses Element ist von der Struktur her in einem Formular untergebracht.

Leider finde ich keine Möglichkeit auf das Element zuzugreifen. Versucht habe ich einiges. Unter anderem:

PHP-Code:
protected function suchmaskeAnpassen(_produkt:Object):void{
                var 
tempContainer:DisplayObjectContainer _produkt as DisplayObjectContainer;
                
trace("Enthält Element: "+tempContainer.contains(_produkt.angabeLaenge)); 
Das Ganze gibt "true" aus wenn _produkt.angabeLaenge vorhanden ist aber einen Error falls nicht:
Zitat:
Error #1069: Eigenschaft angabeLaenge für Produkte.Daten nicht gefunden und es ist kein Standardwert vorhanden.
Ich übergebe das Produkt als Objekt damit ich auf die Elemente zugreifen kann (was auch funktioniert solange sie vorhanden sind).

Wie kann ich denn prüfen ob das Element vorhanden ist ohne das ein Fehler kommt?? Folgendes funktioniert ja nicht:
PHP-Code:
if(!_produkt.angabeLaenge){... 
oder
PHP-Code:
if(_produkt.angabeLaenge != null){... 
Ich hatte auch schon versucht dem Element einen Namen zu geben und dann auf getChildByName() zu prüfen. Aber da bekomme ich selbst bei den Elementen, die das Element enthalten "null" als Ergebnis zurück (wahrscheinlich weil es in einem Formular liegt?!).

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 02-11-2011, 09:23   #2 (permalink)
Flasher
 
Registriert seit: Aug 2010
Ort: Stuttgart
Beiträge: 486
Hi!
Du solltest hier weniger wild "rumcasten", sondern mehr in gut strukturierten und durchdachten Klassen arbeiten!
Schreib doch zum Beispiel eine Klasse "Produkt" mit einer Eigenschaft "angabeLaenge". Über eigene setter- und getter-Methoden gewinnst du an flexibilität und dein Code wird nicht nur sauberer und lesbarer - er wird auch funktionieren!

Denkbeispiel:

Code:
protected function suchmaskeAnpassen(produkt:Produkt):void{ 
     if (produkt.angabeLaenge){
          ...
     }
}
Liebe Grüße!
Ouroborus23 ist offline   Mit Zitat antworten
Alt 02-11-2011, 09:27   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 670
Danke für die Antwort.

Ich habe für verschiedene Produkte einzelne Klassen und Module. Nur enthalten manche Produkte z.B. eine Länge und andere wiederum nicht.

Und
PHP-Code:
if (produkt.angabeLaenge){ 
funktioniert ja nur wenn dieses Element vorhanden ist.

Notfalls könnte ich auch über Switch/Case gehen aber es interessiert mich wie das Problem lösbar ist.

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 02-11-2011, 09:50   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 7.306
PHP-Code:
var doc:DisplayObjectContainer _produkt as DisplayObjectContainer;
if (
_produkt && _produkt.angabeLaenge && doc && doc.contains(_produkt.angabeLaenge)) //... 
Wenn Dir egal ist, ob angabeLaenge in der Anzeigeliste _produkt untergeordnet ist, reicht auch:
PHP-Code:
if (_produkt && _produkt.angabeLaenge//... 
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (02-11-2011 um 09:52 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 02-11-2011, 10:14   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 670
Hallo Martin und danke für die Antwort.

PHP-Code:
if (_produkt && _produkt.angabeLaenge//... 
Ergibt leider
Zitat:
Error #1069: Eigenschaft angabeLaenge für Produkte.Daten nicht gefunden und es ist kein Standardwert vorhanden.
Kann es vielleicht Daran liegen das ich _produkt als Objekt übergebe? Die Ausgangsprodukte sind vom Typ Daten_TYP1, Daten_TYP2...
Wenn ich es als Objekt übergebe kann ich auch auf die Elemente zugreifen (soweit vorhanden). Von dem her dachte ich, dass es so falsch nicht sein kann

Soweit ich mich erinner hat die Abfrage oben aber mit "normalen" Elementen immer geklappt.

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 02-11-2011, 10:18   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.344
Code:
if (_produkt && _produkt.hasOwnProperty('angabeLaenge') &&  _produkt.angabeLaenge)
Es ist schwer nachzuvollziehen, warum man in Flex bei so einer Problematik mit Vanilla Object Instanzen hantiert (und Variablen, Eigenschaften etc. deutsch benennt).
Omega Psi ist offline   Mit Zitat antworten
Alt 02-11-2011, 10:20   #7 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 7.306
Genauer zu typisieren ist natürlich immer sinnvoll.
Zitat:
Zitat von dr monk Beitrag anzeigen
Kann es vielleicht Daran liegen das ich _produkt als Objekt übergebe?
Aber eigentlich sollte es da gerade mit Object keine Probleme geben, weil die Klasse ja dynamisch ist

Dann versuch's mal so:
PHP-Code:
if (_produkt && "angabeLaenge" in _produkt//... 
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 02-11-2011, 10:30   #8 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 670
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Dann versuch's mal so:
PHP-Code:
if (_produkt && "angabeLaenge" in _produkt//... 
Das hat funktioniert! Danke!

Wahrscheinlich ist mein Code nicht sauber genug aufgebaut das es zu diesen Problemen kommt

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 02-11-2011, 10:37   #9 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 7.306
Zitat:
Zitat von dr monk Beitrag anzeigen
Wahrscheinlich ist mein Code nicht sauber genug aufgebaut das es zu diesen Problemen kommt
Gut möglich Wenn Du _produkt auf die Basisklasse Deiner Suchmasken typisierst, die angabeLaenge definiert, solltest Du diese Probleme nicht mehr haben!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bild größer als Parent Element wird unter einem anderen Element angezeigt, ändern wie sugarray21 Flex programmieren 5 31-08-2011 09:02
Child Element unter Parent Element kingLui987 ActionScript 3 3 21-01-2011 18:04
[Flash 8] FLV - Ermitteln ob Audio(spur) vorhanden Chatti Flash Einsteiger 3 21-04-2010 13:31
Form-Check-Function geht nicht da Element noch nicht vorhanden deak JavaScript & jQuery 2 10-02-2009 22:38
XML Frage, DTD korrigieren zu Element in Element TinKim HTML und CSS 6 14-09-2005 10:48


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 Uhr.

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


Copyright ©1999 – 2014 Marc Thiele