Bild vom MovieClip runterladen

meste

Erfahrenes Mitglied
Hy @ all!

Ich habe ein MC in dem Bilder vom einer XML-Datei lade.
Alles funktioniert tadellos. Nur möchte ich das wenn man auf ds Bild (MC) klickt, das dass jeweilige Bild runtergeladen werden kann.

Wäre sehr dankbar für ne schenelle Antwort.



m.e.s.t.e
 
Hi,

entweder, Du startest eine getURL-Aktion auf den Pfad des Bildes (was allerdings in den meisten Fällen dazu führen wird, dass das Bild im Browser geöffnet wird - Abhilfe würde hier .B. ein auslieferndes PHP-Script schaffen, welches einen entsprechenden Header setzt), oder Du verwendest die download-Methode des FileReference-Objekts - diese öffnet direkt einen "Speichern-unter"-Dialog.

Gruß
.
 
... danke für die Antwort.

Habe in der Hilfe nach FileReference gesucht uns fündig geworden, allerdings funktioniert es nicht.
Daher mal eine Frage vorweg. Funktioniert nur Online oder klappt es auf dem Lokalen Rechner?
Hier mal der Code
Code:
mc_mask.onRelease = function(){
	import flash.net.FileReference;
	
	var listener:Object = new Object();
	
	listener.onSelect = function(file:FileReference):Void 
	{ trace("onSelect: " + file.name); }
	
	listener.onCancel = function(file:FileReference):Void 
	{ trace("onCancel"); }
	
	listener.onOpen = function(file:FileReference):Void 
	{ trace("onOpen: " + file.name); }
	
	listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void 
	{ trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal); }
	
	listener.onComplete = function(file:FileReference):Void 
	{ trace("onComplete: " + file.name); }
	
	listener.onIOError = function(file:FileReference):Void 
	{ trace("onIOError: " + file.name); }
	
	var fileRef:FileReference = new FileReference();
	fileRef.addListener(listener);
	var url:String = images[currImg];
	if(!fileRef.download(url)) 
	{ trace("dialog box failed to open."); }
}

Erklärung zur images[currImg] auf Zeile 26:

images[] ist das Array, welches alle Bilder hat.
currImg ist das aktuell angezeigter Bild.

Beim Debuggenhat die Variable url auch den richtigen Pfad.


Eine Frage hätte ich noch.
In der XML-Datei habe ca. 600 Pfade zu den Bilder, mit einem tool von mir eingefügt.
Was mich einbisschen wundert ist, das Flash die Datei recht scnell ausliest und man die Bilder gleich durchlaufen kann.
Jedoch weiss ich nicht ob es ein Möglichkeit gibt abzuwarten bis die XML-Datei bsp. mit 1000 oder 3000 Pfade ausgelesen hat. Gibt es da sowas wie einen Preloader ähnlichen funktion?

Danke im vorraus


m.e.s.t.e
 
Zuletzt bearbeitet:
Hi,

wenn in den Array-Elementen absolute Pfade stehen, sollte der Download auch in der Flash-Vorschau funktionieren. Ansonsten solltest Du die Datei auf Deinem Server testen.

Setze zudem den Import der Klasse ausserhalb des Maushandlers: Externe Klassen müssen schon beim Export in die SWF eincompiliert werden, und können nicht innerhalb einer Ereignisprozedur importiert werden.

@XMl-Preloader: Für das XML-Objekt stehen ebenfalls die Methoden getBytesLoaded sowie getBytesTotal zur Verfügung, mit denen Du Dir (z.B. in einer onEnterFrame-Methode) einen Preloader basteln kannst.

Gruß
.
 
Hy,

habe das jetzt Online probiert. Das Speichernfenster öffnet sich, aber die Datei wird nicht runtergeladen. Nachdem Bestätigen wird das Speichernfenster geschlossen ohne eine Meldung. Ne Idee woran das liegen könnte?
Danke


Gruß
m.e.s.t.e
 
Hi,

schwer zu sagen, ohne die Quellen einzusehen (poste Deine .fla doch mal).

Ich würde übrigens alle Deklarationen (FileReference-Objekt, Listener und -Methoden) direkt auf der Zeitleiste anlegen, und im onPress-Ereignis nur die download-Methode aufrufen.

Gruß
.
 
Zurück