Zurück   Flashforum > Flash > Flash erweitern > Komponenten und SmartClips

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-03-2009, 12:09   #1 (permalink)
dr monk
Gast
 
Beiträge: n/a
Werte aus ComboBox - Unterschied Label / Data

Hallo zusammen.

Ich bin nach ein paar jahren Abwesenheit wieder zurück zu Flash gekommen. Dementsprechend hab ich eigentlich so gut wie alles vergessen

Bei meinem aktuellen Projekt habe ich mehrere ComboBoxen, wobei nur die erste Werte enthält. Die anderen werden in Abhängigkeit zur vorhergehenden Auswahl mit Werten gefüllt ( habe mich an das Beispiel aus der Flash Hilfe gehalten).

Ich habe jetzt nur 2 Probleme damit. (Code folgt am Ende)

1: Wenn ich einen Listenpunkt anklicke erstellt er mir die neuen Inhalte für die nächste ComboBox. Wenn ich allerdings die Auswahl dann nochmals, auf einen anderen Listenpunkt, ändere ergänzt er den Inhalt der nächsten ComboBox.
Das liegt bestimmt an dem Befehl
Code:
addItem
Kann ich die bestehende Auswahl bei
Code:
on Changed
löschen lassen, damit ich immer die aktuellen Werte angezeigt bekomme?

2: Ich habe noch ein Problem mit den Werten der einzelnen Listenelementen. Wenn ich eine Abfrage mit
Code:
if (evt_obj.target.selectedItem.label == "Menüpunkt 1"){.....
mache funktioniert alles wunderbar. Wenn ich allerdings die Abfrage in abhängigkeit zu den hinterlegten Daten machen möchte funktioniert es nicht.
Ich habe dazu
Code:
....selectedItem.data == punkt1){...
benutzt.
Muss ich das anders ansprechen oder gibt es bei der benennung der Daten bestimmte Vorschriften -> Habe Daten die nach folgenden Schema aufgabaut sind: xyz-123 (also mit bindestrich)

Hier mal der Code (Ausschnitt, da ich von einem anderen Monitor abtippen muss... Rechtschreibfehler vorbehalten)

Flash CS3 AS2:

Code:
stop();
var meinListener:Object = new Object ();

meinListener.change = function (evt_obj:Object) {
    if (evt_obj.target.selectedItem.label == "Menüpunkt 1"){
       this.createClassObject (mx.controls.ComboBox, "neueBox", 0);
       neueBox.addItem({data:wert-0, label:"Null"});
       // weitere Items werden erzeugt...
    }
    else if (evt_obj.target.selectedItem.label == "Menüpunkt 2"){
    this.createClassObject (mx.controls.ComboBox, "neueBox2", 0);
    ....
    }
}
ersteComboBox.addEventListener("change",meinListener);
Die ComboBox "ersteComboBox" existiert bereits mit den Menüpunkten "Menüpunkt 1" und "Menüpunkt 2"

Es gibt noch weitere EventListener für die anderern ComboBoxen aber es bleibt im endeffekt vom Code her gleich.

Hoffe ihr könnte mich vom Schlauch runter holen auf dem ich zu stehen scheine

MfG Monk
  Mit Zitat antworten
Alt 11-03-2009, 12:28   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Ich habe das jetzt drei Mal gelesen und verstehe noch immer nicht, was du eigentlich wissen willst...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 11-03-2009, 12:36   #3 (permalink)
dr monk
Gast
 
Beiträge: n/a
Ich habe eine Liste, die schon mit Werten gefüllt ist:

Menüpunkt 1
Menüpunkt 2
...

Es existiert darunter eine Weitere die allerdings leer ist.

Wenn man jetzt z.B. "Menüpunkt 1" auswählt wird die 2te Liste mit Werten gefüllt. Das gleiche Passiert auch wenn man "Menüpunkt 2" auswählt (allerdings mit anderen Werten).

Mein Problem ist jetzt, dass ich z.B. "Menüpunkt 1" anklicke -> die neue Liste wird mit den Werten gefüllt -> ich klicke dann "Menüpunkt 2" an und die Liste wird um die Werte ergänzt.

Damit das nicht vorkommt müsste man in der if-Abfrage erst alle bestehenden Items der neuen Liste löschen?!

-----------

Zu Punkt 2:

Sagen wir mal der "Menüpunkt 1" hat den Wert "punkt-1" bei Data. Der "Menüpunkt 2" den Wert "punkt-2".
Dann müsste ich doch auf die Daten zugreifen können wenn ich statt "label" "data" in meinen Code schreibe (siehe erster Beitrag). Leider funktioniert es nur mit Labels momentan.
  Mit Zitat antworten
Alt 11-03-2009, 13:10   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Also bei mir geht das auch über "data" und deine Combobox kannste doch mit neueBox.removeAll(); leeren, bevor du sie neu füllst.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 11-03-2009, 14:20   #5 (permalink)
dr monk
Gast
 
Beiträge: n/a
mit nur 2 Listen klappt das auch wunderbar. Aber sobald ich 3 Listen (2 EventListener) habe funktioniert es nur noch über die Labels.

Wenn ich zuhause bin werde ich mal die FLA posten die ich dafür gebastelt habe.

Mein momentaner Testaufbau ist dabei:

// Name des Listenpunkts (Data)

Code:
Liste 1: Geschelcht: männlich (mann) 
                            weiblich (frau)

Liste 2: Bei mann: Hanz (hanz)
                         Egon (egon)
                         Peter (peter)
           Bei frau:   Erika (erika)
                         Martina (martina)
                         Heike (heike)
Liste 3: Bei hanz:  Bauer (bauer)
                         Maier (maier)
                         Schultze (schultze)
und so weiter....
Dieser Aufbau ist nur als Test gedacht. Logik fehl am platz

Mit Labels habe ich es schon geschafft diese listen auszugeben. Aber mit Data will es einfach nicht gehn...
(Skript folgt wie gesagt - falls nötig)

Edit: Stellt euch oben im Code die Namen untereinander vor. Das hat es leider beim absenden verhauen...

Edit 2: Datei angefügt
Angehängte Dateien
Dateityp: fla test.fla (483,5 KB, 10x aufgerufen)

Geändert von dr monk (11-03-2009 um 17:06 Uhr) Grund: Formatierung hat mit normalem Text nicht geklappt -> zu Code geändert
  Mit Zitat antworten
Alt 13-03-2009, 05:39   #6 (permalink)
dr monk
Gast
 
Beiträge: n/a
Hat keiner eine Lösung? Mit Labels zu arbeiten ist eher Subotimal
  Mit Zitat antworten
Alt 13-03-2009, 09:57   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
->verschoben

Am einfachsten ist es wohl, den dataProvider der Liste zu überschreiben. Der ist ein einfaches Array. Mal als Ansatz:
PHP-Code:
meinListener.change = function (evt_obj:Object) {
    var array:Array = [[
"Heinz","Egon","Peter"]["Franz","Eugen","Olaf"]];
    
liste2.dataProvider = array[evt_obj.currentTarget.selectedIndex]; 
  Mit Zitat antworten
Alt 13-03-2009, 12:18   #8 (permalink)
dr monk
Gast
 
Beiträge: n/a
Danke für deine Antwort.

Ich habe noch eine neue Test-Datei angelegt wo ich mit dataProvider die Daten erzeuge (vorerst nicht mit arrays, kommt aber spätestens mit XML...)

Das Problem was ich beschrieben habe, hat sich leider nicht geändert. Ich habe in der Datei beim überprüfen der "liste2" "label" angegeben um euch die beabsichtigte Funktion zu zeigen.
Ändert ihr die Abfrage auf "data" wird die Abfrage der "liste2" nicht mehr klappen

grml... Ich werde die Datei per RS oder Netload hochladen müssen, da die FLA mit den 3 Feldern und 15 Zeilen Code 900kb hat. Bis später in dem Fall...
  Mit Zitat antworten
Alt 14-03-2009, 14:08   #9 (permalink)
dr monk
Gast
 
Beiträge: n/a
Wie versprochen (nur etwas später) der Link zur Datei:

http://netload.in/dateiywpk8kQpjo/test.zip.htm

Ich könnte auch den Code posten, finde es persöhnlich (als newbie) oft schwer den zusammenhang zwischen MC und Code zu verstehen. Falls doch der Quellcode gewünscht ist poste ich den auch.
  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 aus.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele