Чтобы ответить на ваши вопросы в последовательности:
1: вы можете использовать ProgressEvent для отображения прогресса загрузки файла.Поскольку File будет диспетчером события, вы можете получить доступ к FileReference, который отправил ход выполнения, как e.currentTarget внутри события, и отсюда вы можете получить доступ к уникальным свойствам этой ссылки на файл, чтобы вы могли точно обновить визуальную загрузку.прогресс для этого конкретного файла.Например:
function uploadSingleFile(file:FileReference):void {
file.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
file.upload(uploadURL);
file.addEventListener(Event.COMPLETE, completeHandler);
}
function onUploadProgress(e:ProgressEvent):void
{
var f:FileReference = e.currentTarget as FileReference;
var fileName:String = f.name; //Now I know which file it is, I can update accordingly
var progress:Number = (e.bytesLoaded / e.bytesTotal) * 100; //shows percent, you might want to round this off using Math.round(number);
}
2: чтобы запустить обратный вызов после загрузки ВСЕХ файлов, вы должны сделать это, сохранив количество первоначально выбранных файлов, затем добавив обратный вызов специально для каждого элемента и, какони завершают, уменьшают общее количество до 0, после чего вы будете знать, что все файлы были загружены:
var totalFiles:int = 0;
function fileSelectHandler(event:Event):void {
for each(var fileToUpload:FileReference in fileRef.fileList){
++totalFiles;
uploadSingleFile(fileToUpload);
}
}
function uploadSingleFile(file:FileReference):void {
file.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
file.addEventListener(Event.COMPLETE, onFileUploadComplete);
file.upload(uploadURL);
file.addEventListener(Event.COMPLETE, completeHandler);
}
function onFileUploadComplete(e:Event):void
{
--totalFiles;
if(totalFiles == 0){
//All files have been uploaded
}
}
3: чтобы браузер отображался на клике, просто добавьте слушатель MouseEvent.MOUSE_DOWNк объекту или кнопке некоторого вида, или даже стадии, что угодно.Примерно так:
var uploadButton:Button = new Button(); // Note this will require the Button component to be included in your library in flash CS
uploadButton.label = "Upload Files";
uploadButton.width = 150; //Or whatever;
uploadButton.x = (stage.stageWidth * .5) - (uploadButton.width * .5);
uploadButton.y = (stage.stageHeight * .5) - (uploadButton.height * .5);
stage.addChild(uploadButton);
uploadButton.addEventListener(MouseEvent.MOUSE_DOWN, onUploadClicked);
function onUploadClicked(e:MouseEvent):void
{
var fileRef:FileReferenceList = new FileReferenceList();
fileRef = new FileReferenceList();
fileRef.browse(new Array( new FileFilter( "Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png" )));
fileRef.addEventListener(Event.SELECT, fileSelectHandler);
}
И, наконец, по поводу учебников и т. Д., Я бы порекомендовал http://gotoandlearn.com для изучения флэш.Я также рекомендовал бы просто проверить документы AS3, так как весь этот nfo можно почерпнуть из простого просмотра рассматриваемого класса FileReferenceList.Пожалуйста, обратите внимание, что я сделал этот код в верхней части моей головы, поэтому у меня не было проверки IDE или чего-либо еще.Однако это должно работать просто отлично.Надеюсь это поможет.:)
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReferenceList.html
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html#upload()
http://adobe.com/go/as3lr