Im vorigen Beispiel wurde vorgestellt, wie man mit Adobe AIR auf Dateien per Drag-and-Drop zugreift. Nun ein weiteres Beispiel, das stattdessen den Dialog „Datei öffnen“ verwendet.
Flash – und somit AIR – hat mit File.browseForOpen
eine Funktion, die den nativen Öffnen-Dialog des jeweiligen Betriebssysten startet. So lassen sich Dateien auf die Weise öffnen, wie es der Nutzer gewohnt ist. Die zur Verfügung stehende Dateiauswahl kann durch einen FileFilter
anhand der Dateiendungen eingeschränkt werden.
Das Beispielprogramm hat einen Button, mit dem der „File open“ Dialog aufgerufen wird. Der Namen der selektierten Datei wird nach der Auswahl in einem Textfeld ausgegeben.
Der Code der Anwendung lautet:
[as]
import flash.filesystem.*;
import flash.events.Event;
import flash.net.FileFilter;
// neues File
var myFile:File = new File();
// Filter für Dateiendungen
var txtFilter:FileFilter = new FileFilter(„Text“, „*.txt;*.xml“);
var bildFilter:FileFilter = new FileFilter („Bilder“, „*.jpg; *.png“);
function myOpenButton_CLICK(e:MouseEvent):void {
try {
// Öffnen-Dialog von Flash aufrufen
myFile.browseForOpen(„Bitte wählen Sie eine Datei“, [txtFilter, bildFilter]);
// event listener hinzufügen
//(funktion wird aufgerufen, wenn datei ausgewählt wurde)
myFile.addEventListener(Event.SELECT, fileSelected);
}
catch (error:Error) {
trace(error.message);
}
}
// event listener für Öffnen-Button
myOpenButton.addEventListener(MouseEvent.CLICK, myOpenButton_CLICK);
function fileSelected(event:Event):void {
// file in Variable abspeichern
var f:File = event.target as File;
// Dateinamen anzeigen
myTextField.text = f.nativePath;
}
[/as]
Download: Quelldateien
Link: flash.filesystem.File (Livedocs / AS3 Language Reference)
[ad]
Probleme mit Adobe Flash Player!
Wie soll ich mit AIR-datei schliessen?
Hallo, nur eine Nebenbemerkung:
Wer von euch zusätzlich ein Flugsimulatorfan ist , dem sei gesagt, daß diese .air Dateien seit langem von Microsoft in ihren FS benutzt werden.
Somit schießt dieses „wunderbare“ Adobe Progi alle Flusis ab.
Toll, oder?
Harald Klose
Hi,
super Tut, aber was muss ich für ein FileFilter anlegen, wenn ich Ordner auswählen möchte und keine Dateien?
".;" und "/" gehen nicht.
Grüße
Gute Frage! Weiß ich leider aber auch nicht. Wenn du etwas herausfindest, gib Bescheid.
Hi,
du brauchst keinen Filter zu setzen um einen Ordner auszuwählen. Es gibt dafür eine eigene Methode in der File Class, "browseForDirectory()". Die Methode ist asynchron, d.h. also du musst vorher ein Event abfangen.
Hier ein keines Beispiel zur Verdeutlichung;)
var file:File = new File();
file.addEventListener(Event.SELECT, dirSelected);
file.browseForDirectory("Select a directory");
function dirSelected(e:Event):void {
trace(file.nativePath);
}
Eventuell ist es genau das was du suchst.
Hoffe konnte behilflich sein.
Gruß
Hi Falko,
vielen Dank für den Hinweis!