[MX 2004] duplicateMovie mit dynamischem onRelease

luke_the_duke

Erfahrenes Mitglied
Hallo zusammen!

folgendes Problem:

Ich habe einen MC mit einem Button darin. Ich möchte den onRelease-Befehl der duplizierten Buttons dynamisch gestalten, d.h. jeder Button lädt die entsprechende txt.Datei (bzw. die richtige SQL-Spalte oder was auch immer).
Das Problem ist, dass die dynamische Generierung des txt-Dateinamens nicht funktioniert. Es lädt auf alle Buttons die letzte Version des Namens. Wie kann ich den endgültig zuweisen?

Hier mein script

PHP:
trace(this);
snr = 1;
// Zähler 
myY = _root.can_butt._y+60;

while (snr<=5) {
	duplicateMovieClip(_root.can_butt, "butt_klon"+snr, snr);
	//das snr am Ende is das wichtigste !
	trace(filenr);
	this["butt_klon" add snr]._y = myY;
	this["butt_klon" add snr].butt.onRelease = function() {
		loadVariablesNum("gallery"+snr+".txt", 1);
		_root.BIOS = new LoadVars();
		_root.BIOSpfad="gallery"+snr+".txt", 1;
		_root.BIOS.sendAndLoad(_root.BIOSpfad, _root.BIOS, "POST");
		_root.BIOS.onLoad = function() {
			_root.textfeld.htmlText = _root.BIOS.output;
		};
	};

	trace(this["butt_klon" add snr].butt);
	myY = this["butt_klon" add snr]._y+60;
	snr++;
	filenr += 1;
	//Schleifenende 
}

Das script für den duplicate habe ich von Datic aus diesem Forum. Dankeschön!

Gruss

Luki
 
Hi,

es ist doch immer wieder interessant, welche Mutationen ein einmal in Umlauf gebrachtes Script so mitmacht, und zu welchen Zwecken es 'missbraucht' werden kann...
Also: Vergiss erstmal obige Antwort, die ist nämlich schlicht falsch.
Das Problem besteht darin, das du zu einem Zeitpunkt, der nach der in einer Schleife erfolgenden dynamischen Generierung der Buttons und Aktionen liegt, auf die Schleifenvariable 'snr' zugreifst, um einen dynamischen Pfad zu generieren.
Das klappt natürlich nicht, weil die Schleifenvariable ja zu dem Zeitpunkt bereits hochgezählt ist, und du somit immer die höchstzahlige Variante deines Pfades hast.

DIe Lösung besteht darin, während des Schleifendurchlaufs dem erstellten Objekt seine ID zuzuweisen, oder aber zB mit substring() den Namen des Objekts zu splitten, so das du das per 'snr' angehängte Kürzel extrahieren kannst. Der Einfachheit halber machen wir das jetzt mal per ID:

PHP:
trace(this); 
snr = 1; 
// Zähler 
myY = _root.can_butt._y+60; 

while (snr<=5) { 
    duplicateMovieClip(_root.can_butt, "butt_klon"+snr, snr); 
    //das snr am Ende is das wichtigste ! 
    trace(filenr); 
    this["butt_klon" add snr]._y = myY; 
    this["butt_klon" add snr].ID = snr; // Anlegen der Eigenschaft ID während der Schleife 
    this["butt_klon" add snr].butt.onRelease = function() { 
        _root.BIOS = new LoadVars(); 
        _root.BIOSpfad="gallery"+ this.ID +".txt"; // Zugriff auf ID statt snr
        _root.BIOS.sendAndLoad(_root.BIOSpfad, _root.BIOS, "POST"); 
        _root.BIOS.onLoad = function() { 
            _root.textfeld.htmlText = _root.BIOS.output; 
        }; 
    }; 

    trace(this["butt_klon" add snr].butt); 
    myY = this["butt_klon" add snr]._y+60; 
    snr++; 
    filenr += 1; 
    //Schleifenende 
}

die Pfade sind jetzt nicht getestet, müssten aber stimmen ...
du hattest ausserdem die Syntax von loadVariablesNum und dem LoadVars Objekt vermischt. Von der Benutzung von LoadVariablesNum rate ich dir ganz entschieden ab, und für das LoadVars Objekt musst du keine Ebene mit zB ', 1' angeben....

Grüsse
B
 
Hat perfekt geklappt!
Musste nur die ID-Definition auch auf den Button legen und nicht nur in den MC:

PHP:
   this["butt_klon" add snr].butt.ID = snr;// Anlegen der Eigenschaft ID während der Schleife

Noch `ne Frage: Findest du das schlecht, wenn man die Scripte anderer Mitglieder verwendet?

Gruss Luki
 
Ups,

stimmt, wegen der Referenzierung mit this - on Press, war halt nicht getestet.

Nö, das ist schon in Ordnung, weil wir posten sie ja sozusagen für die breite Masse.
Ich habe halt nur ein altes Script von mir wieder erkannt, das ursprünglich in einem ganz anderen Kontext gebraucht wurde. Da kann man sich schon mal amüsieren.
Das ganze Forum hier atmet ja den Geist von Open Source, und ich unterstütze das natürlich voll und ganz, und jeder, der hier postet weiss, das seine Scripte unter Umständen eine lange Karriere vor sich haben.
Was nützt auch ein guter Code per Copy & Paste, wenn man ihn nicht versteht, und also auch nicht anpassen kann. Es wird immer der Mensch hinter dem Code bleiben, der wertvoll ist, nie der Code selber. Trotzdem würde ich dir natürlich nicht so ohne weiteres meine neuesten Experimente vor die Füsse werfen , he, he ...

Grüsse
B

P.S.: Du musst die ID nur auf dem Button definieren, nicht auch zusätzlich im MC, da onPress nur die Eigenschaften des Buttons mit this. angesprochen werden, nicht auch noch die des umgebenden MC
 

Neue Beiträge

Zurück