gotoAndStop() und getURL(Javascript) funktionieren nicht [Flash 8]

Rainer-Bekannter

Grünschnabel
Hallo, liebe Flasher...

Ich habe da leider zwei kleine Pobleme, welche ich auch durch extremes googeln nicht lösen konnte.

Ich habe einen kleinen mp3-Player erstellt, der eine XML einließt und daraus dann die Daten lädt. Diese XML wird mittels PHP dynamisch erzeugt.

Die Schleife wird auch richtig durchgangen, also er ließt alle Datein ein, nur das Weiterleiten Funktioniert nicht. So habe ich die schleife programmiert:

Code:
myLoader.onLoad = function() {
	anzLadeversuche++;
	
	if(myLoader.loaded) {
		for(itm in myLoader.firstChild.attributes) {
			_global[itm] = myLoader.firstChild.attributes[itm];
		}
		for(var i:Number=0; i<myLoader.firstChild.childNodes.length; i++) {
			info[i] = myLoader.firstChild.childNodes[i].attributes.ghost;
		}
		gotoAndStop("ready");
	}
	else {
		if(anzLadeversuche<maxLadeversuche) {
			myLoader.load(mySource);
		}
		else {
			playdis.text='error...'
		}
	}
}

Wenn man die Seite das erste Mal lädt, dann leitet der Player nicht ans Bild ready weiter. Habe es auch schon mit gotoAndStop(2) versucht, weil da der AS mit dem abspielen geschrieben ist, aber auch das klappt nicht. Wenn man aber die Seite neu lädt, dann klappt der Player wunderbar und auch dauerhaft.

Mein zweites Problem: Ich habe da Links, die PHP-Seiten in Popups aufgehen lassen, was auch wunderbar funktioniert, bis man auf einen Save-Button klickt, der eine mp3 / pdf runterlädt. Danach geht kein Popupbutton mehr. Save und Abspielen geht aber weiterhin.

So sieht ein der AS auf dem einem der Buttons aus:

Code:
on (release) {
    getURL("javascript:window.open('copy.php','copy','width=400,height=350,scrollbars=no,toolbars=yes,top='+((screen.availHeight/2)-(175))+',left='+((screen.availWidth/2)-(200))+'');void(0);");
}

Und so der Save-Button:

Code:
on (release) {
    getURL("http://www.smooth-ent.de/download.php?type=tracks&id=" + id);
}

Die ID übergebe ich so drum.swf?id=20 an den Film.

Tut mir wirklich leid, dass ich so viel schreibe aber ich versuche alles so genau wie möglich zu erklären. Wenn ich das nicht geschafft habe, kann man sich das hier noch einmal ansehen und die fla habe ich hier hochgeladen. Bei der Website ist ein kleiner Preloader eingebaut, den man leider nicht umgehen kann.

Weiß vielleicht jemand zu einem oder beiden Problemen eine Lösung, ich bin über jede Hilfe sehr dankbar.

Gruß

Michael
 
Hi,

1. die gotoAndStop-Methode arbeitet bei mir im Test fehlerfrei. Die Abfrage
Code:
if(!myLoader.loaded) {
ist allerdings unsinnig, da die loaded-Eigenschaft des XML-Objektes immer auf true gesetzt wird, wenn die onLoad-Methode aufgerufen wird (diese Eigenschaft dient eher als Ersatz, wenn keine onLoad-Methode verwendet wird). Überprüfe das erfolgreiche Laden lieber so:
Code:
myLoader.onLoad = function(success) {
	anzLadeversuche++;
	
	if(success) {

2.
Code:
this.loadVariables();
Was soll der Aufruf von loadVariables ohne Parameter an dieser Stelle?

3. Das Popup-Problem kann ich bei mir nicht nachvollziehen. Vielleicht kannst Du Dein Problem umgehen, wenn Du für das Abspeichern der Datei statt getURL die download-Methode des FileReference-Objektes verwendest.

Gruß
.
 
Code:
this.loadVariables();
kommt da rein, weil ich in aller Verzweiflung 1000 Wege versucht habe und das ist leiden drin geblieben. Hatte ich auch festgestellt, aber da hatte ich die Datei schon hochgeladen.

Gut das du mir das mit den XML-Object sagst. Ich habe den Script zum Teil aus einem Flash 8-Buch genommen und zu meinen Zwecken umgeformt und da wurde das nicht erwähnt. Ich werde das gleich mal ausprobieren.

Könntest du mir deinen dritten Vorschlag ein wenig erläutern, weil ich das noch nicht kenne. Also, noch nen kleinen Gedankenanstoß und dann will ich mal googeln. Ich habe soetwas noch nie gehört. Was ich nicht erzählt habe: die Links weisen auf PHPs, die den Download erzwingen oder dynamisch eine PDF erstellen. Falls das damit etwas zu tun haben könnte.

Dank dir schon einmal für deine schnelle Antwort...

Michael
 
Hi,

die Klasse FileReference existiert seit Flash 8 und erlaubt neben dem Upload von Dateien (ähnlich dem Input von Typ "file" in html-Formularen) den Download von externen Quellen (mit "Ziel speichern unter ...". Näheres erfährst Du aus der Referenz unter "FileReference-Klasse".

Gruß
.
 
Hello noch einmal...

Also, da ich zugeben muss, dass ich ein wirklich blutiger Anfänger bin, wollt ich doch lieber mal vorher fragen, ob das Sinn machen würde, die FileReference zu nutzen, da ich mit den Links auf PHPs verweise, die mir dann den Download mitzählen, weil das schon wichtig ist.

Also, gibt es sonst auch ne andere Möglichkeit, ohne viel Aufwandt den Counter hochzuzählen und den Download zu erzwingen, denn nicht jeder Browser lädt die Files, sondern manche spielen die auch ab, und das will ich ja gerade so verhindern..

Sorry für die vielen Kleinigkeiten, aber ich habe, ohne zu übertreiben, bestimmt schon 50 h an diesem player gesessen und wollte schon das eine oder andere mal meinen Rechner die Schuld geben und ihn verschrotten...

Danke für die Hilfe

Michael
 
Zuletzt bearbeitet:
Hi,

diese Probleme umgehst Du mit dem FileReference-Objekt (obwohl eigentlich alle gängigen Browser eine Quelle vom Typ application-x/octet-stream zum Download anbieten sollten).

Probier mal folgendes aus:

Auf der Hauptzeitleiste:
Code:
import flash.net.FileReference;

var fileRef = new FileReference();
und auf Deinem Button:
Code:
on (release) {
    _root.fileRef.download("http://www.smooth-ent.de/download.php?type=tracks&id=" + id, "audiofile.mp3");
}

Schau auch mal in die Doku unter ActionScript-Klassen > FileReference (flash.net.FileReference) > download (FileReference.download-Methode)

Gruß
.
 
Guten Na Bernd...

Also, dass finde ich wirklich einmal gediegen. So nette und so ausdauernde Hilfe, da kann ich mich eigentlich garnicht genügend für bedanken.

Ich werde es gleich morgen ausprobieren, aber bis hierher einmal vielen Dank.

Gruß

Michael
 
Hallo,

besten Dank, Herr Menzel,

das funktioniert wunderbar. Wenn ich nun den Namen der MP3 als Variable übergebe und Anstelle von dem audiofile.mp3 in dem Button einfüge, dann wird das doch als Name der MP3 ausgegeben, oder muss ich dabei etwas besonderes beachten? Gibt es vielleicht auch eine Möglichkeit, das Speicherfenster zentriert aufgehen zu lassen?

Grüße

Michael
 
Hi,

der zweite Parameter der download-Methode legt den standardmäßig vorgegebenen Dateinamen fest - zu beachten wäre dabei nichts, ausser dass der Benutzer den natürlich noch selbst im Downloaddialog ändern kann.

Auf die Position des Dialogs hast Du keinen Einfluss - es wird einfach der Standard-Speicherdialog des Clients aufgerufen.

Gruß
.
 
Ich noch einmal...

Danke für die Hilfe. Habe nun auf deinen Ratschlag mit der Überprüfung des Ladens umgesattelt. Was die User letzentlich mit dem Namen der Datein machen ist mir nicht wichtig. Wichtig ist nur, dass die Datein unterschiedliche Namen haben, damit jemand, der nicht darauf achtet nicht mit der Soll-ersätzt-werden?-Meldung gestört wird.

Danke für die Hilfe. hast mir wirklich ne Menge an Zeit gesparrt, mit diesen kleinen SourceCodes.

Naja, würd mich gerne irgendwann revangieren, aber das wird sicher nicht in der nächsten Zeit sein, weil ich leider gerade anfange...

Kann man leider nichts machen...

Denoch vielen Dank...

Gruß

Michael

P.S. Hattest du den Player einmal auf der Seite ausprobiert, wegen dem weiterleiten? Weil das nun das einzige ist, was noch nicht will. Und leider macht das keinen schönen Eindruck, besonders, weil die Seite mich so viel Arbeit gekostet hat und das das Gesamtbild ein wenig runterzieht. Will nicht unbedingt dem Herrn Wenzel Löcher in den Bauch fragen. Hat noch jemand anderes eine Idee, was das Problem sein könnte?

Edit: Mir ist gerade aufgefallen, dass der Flash-Player das willkührlich macht. Mal lädt er ein Paar Buttons mit, dann mal wieder nicht. Aber alles nur, so lange er den Player noch nicht im Cache hat. Beim zweiten Mal ist alles wunderbar.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück