Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   как реализовать "прогрес бар" копирования файлов ? (http://www.flasher.ru/forum/showthread.php?t=143670)

teda 22.08.2010 21:03

как реализовать "прогрес бар" копирования файлов ?
 
всем привет появилось надобность создать "прогрес бар" отображающий процес копирования.
на другой платформе это делалось так :
1. замерить количество файлов в папке из которой я копирую, и начать запись.
2. ловить событие обновления папки куда я копирую.
3. в "прогресс бар" выводить разницу количества файлов.


я пробую получить количество файлов в папке ,но получаю только файлы и папки первого уровня , ну и не совсем понятно какое событие происходит пре обновление папки :
Код AS3:

myFolder.getDirectoryListingAsync(); 
myFolder.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler);

всем спасибо.

Astraport 22.08.2010 22:07

ProgressEvent.PROGRESS - может быть это удастся использовать.

alatar 23.08.2010 15:33

1. Посчитать количество файлов. Начать копирование.
2. Ловить событие окончания копирования каждого файла.
3. в "прогресс бар" выводить разницу количества файлов.

Цитата:

получаю только файлы и папки первого уровня
Считайте файлы рекурсивно.

teda 23.08.2010 19:45

странные дела ,
пре использование "copyToAsync" рекурсивная функция начинает глючит.
Код AS3:

        <fx:Script>
                <![CDATA[
                        private var browseSourceFolder:File = new File();
                        private        var target:File =new File("c:/teda");
                        private var counter:Number  =0;
                        private var isCount:Boolean=true;
 
                        protected function button1_clickHandler(event:MouseEvent):void
                        {
                                target.createDirectory();
                                browseSourceFolder.addEventListener(Event.SELECT,sourceFolderHendler)
                                browseSourceFolder.browseForDirectory("Select source folder");
                        }
                        private function sourceFolderHendler(e:Event):void
                        {
                                browseSourceFolder = e.target as File;
                                rekysia( e.target as File)
                        }
                        private function rekysia(file:File):void
                        {
                                var tempFolder:File = target.parent;
                                var files:Array = file.getDirectoryListing();
                                for each(var f:File in file.getDirectoryListing())
                                {
                                        if(f.isDirectory)
                                        {       
                                                tempFolder =new File(target.nativePath+"/"+f.name);
                                                tempFolder.createDirectory();
                                                rekysia(f);
                                        }
                                        else
                                        {
                                                counter++
                                                        _lb.text=file.name;
                                                file.copyToAsync((target,true);
 
                                        }
                                }
                        }
                ]]>
        </fx:Script>


alatar 24.08.2010 18:04

Цитата:

рекурсивная функция начинает глючит
как это проявляется?

teda 25.08.2010 12:20

Error: Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful.
at flash.filesystem::File/copyToAsync()

alatar 25.08.2010 12:47

Код AS3:

file.copyToAsync((target,true);

1. Тут лишняя скобка.
2. Что здесь собственно копируется? К тому же в цикле.

teda 25.08.2010 14:14

лишняя скобка опечатка проблема не в ней :)
копируется выбраная папка в другую папку , пре использование синхронного копирования все работает нормально.
но асинхронное копирование ругается на "Functions called in incorrect sequence".

alatar 25.08.2010 17:27

Насколько я понял, копироваться должен выбранный файл (т.е. в данном случае f), а получается, что копируется исходная папка (т.е. file).

teda 29.08.2010 15:34

alatar ,thanx.
чета намудрил я в коде , в общем разочаровался я в "flex file system" далеко ему еще до "wpf".


Часовой пояс GMT +4, время: 20:36.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.