Problem beim Hinzufügen und Entfernen vom Komponenten

Rambomaster

Mitglied
Hallo

Ich möchte gerne einen DateField Komponent bei einem Klick auf einen Button hinzufügen oder entfernen.

Hier ein Bild wie es etwa aussehen soll: http://img223.imageshack.us/img223/6334/bild1eg9.png

Das Hinzufügen und Entfernen klappt eigentlich, nur wenn ich zum Beispiel zwei hinzugefügt, einen gelöscht und wieder einen hinzugefügt habe, kann ich beim letzten DateField kein Datum mehr eintragen.

Hier ein Bild nachdem ich zwei Komponenten hinzugefügt und einen entfernt habe: http://img182.imageshack.us/img182/6412/bild2oa1.png

Und hier nachdem ich wieder ein Komponent hinzugefügt habe: http://img223.imageshack.us/img223/2159/bild3hh8.png

Ich habe den Bereich rot eingerahmt der sich verändert hat.
Wenn ich also wieder einen Komponenten Hinzufüge, wird irgendetwas (weiss nicht was das genau ist :D) vom 3. Komponenten gelöscht. Ich denke das ist die Ursache wesshalb ich kein Datum mehr auswählen kann in diesem 3. Feld.

Kann mir jemand bei diesem Problem behilflich sein?
Ich habe Flash Professional 8.

Hier noch der Code: (Sollte mit Ctrl+C funktionieren ;), Background und Titel fehlt)
Code:
var anzahl = 1;
var maxAnzahl = 5;
var wDateSize = 150;
var hDateSize = 22;
var xStartPos = 50;
var yStartPos = 40;
var date = new Array();

this.createClassObject(mx.controls.Button, "addDate", 100, { label: "+" });
addDate.setSize(22, 22);
addDate.move(210, 40);
removeDate._visible = true;
this.createClassObject(mx.controls.Button, "removeDate", 101, { label: "-" });
removeDate.setSize(22, 22);
removeDate.move(240, 40);
removeDate._visible = false;

date[0] = (createClassObject(mx.controls.DateField, "date0", 0));
date[0].setSize(wDateSize, hDateSize);
date[0].move(xStartPos, yStartPos);

addDate.onRelease = function() {
	yStartPos += 30;
	date[anzahl] = createClassObject(mx.controls.DateField, "date"+ anzahl, anzahl);
	date[anzahl].setSize(wDateSize, hDateSize);
	date[anzahl].move(xStartPos, yStartPos);
	addDate.move(210, yStartPos);
	removeDate.move(240, yStartPos);
	anzahl++;
	if(anzahl > 1) {
		removeDate._visible = true;
	}
	if(anzahl == maxAnzahl) {
		addDate._visible = false;
	}
}

removeDate.onRelease = function() {
	yStartPos -= 30;
	date[anzahl-1]._visible = false;
	delete date[anzahl-1];
	addDate.move(210, yStartPos);
	removeDate.move(240, yStartPos);
	_childCounter--;
	anzahl--;
	if(anzahl == 1) {
		removeDate._visible = false;
	}
	if(anzahl < maxAnzahl) {
		addDate._visible = true;
	}
}
 
Zuletzt bearbeitet:
Hi,

mal ein Schuss ins Blaue hinein: Hiermit
Code:
delete date[anzahl-1];
Entfernst Du die Objektreferenz aus dem Array-Element, nicht die Komponente. Versuch mal, die Komponente mit removeMovieClip/unloadMovie (bin mir aus dem Kopf nicht sicher, worauf per createClassObjekt instanzierte Komponenten reagieren) und entferne das Arrayelement explizit per Array.splice().

Gruß
.
 
Hallo

Danke für die Antwort, aber es funktionierte leider nicht mit removeMovieClip oder unloadMovie, es sei denn ich hab da was falsch gemacht ;)

Code:
removeMovieClip(date[anzahl-1]);
oder
Code:
unloadMovie(date[anzahl-1]);

Aber ich glaube removeMovieClip und unloadMovie sprechen nicht die Komponenten an. Aber ich lasse mich gerne belehren :D

Gruss Rambomaster
 
Hi,

bei mir klappts mit removeMovieClip.

Idealerweise solltest Du es aber mit UIObject.destroyObject() probieren. Beachte, dass diese Methode keine Referenz, sondern den Instanznamen als Parameter erwartet.

Gruß
.
 
Zurück