Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Событие завершение поиска в асинхронными режиме. (http://www.flasher.ru/forum/showthread.php?t=126283)

Shogun4ever 15.06.2009 23:37

Событие завершение поиска в асинхронными режиме.
 
Здравствуйте!

Зделал класс для рекурсивного поиска файлов в асинхронными режиме.

Сам класс:
Код AS3:

package flashmaster.classes.application
  { 
    import flash.filesystem.File;
    import flash.events.Event;
    import flash.events.FileListEvent;
    import flash.events.EventDispatcher;
    import flashmaster.classes.application.ApplicationEvent;
 
    public class DirectoryParser extends EventDispatcher
      {
        public  var files:Array; 
        public  var directories:Array;
        public  var total_directories:int;
        public  var total_files:int;
        private var extensions:Array;
        private var tmp_dir:File;
        private var tmp_list:Array;
        private var searching:Boolean;
        private var parse_subdirectories:Boolean;
        private var file:File;
        private var ext_ok:Boolean;
        private var all_ext:Boolean;
 
        public function DirectoryParser(main_dir:File,extens:Array=null,parse_sub:Boolean=true):void
          {
            extensions = extens;
            all_ext = extens == null || !extens.length;
            parse_subdirectories = parse_sub;
 
            files = new Array();
            directories = new Array();
 
            tmp_dir = main_dir;
            tmp_dir.addEventListener(Event.COMPLETE, parsing_complete);
            parse_directory(tmp_dir);
          }
 
        public function parse_directory(main_dir:File):void
          {
            tmp_dir = main_dir;
 
            tmp_dir.addEventListener(FileListEvent.DIRECTORY_LISTING, get_files);
            tmp_dir.getDirectoryListingAsync();
          }
 
        private function get_files(e:FileListEvent):void
          {
            tmp_list = e.files;
 
            for each(file in tmp_list)
              {
                ext_ok = (!all_ext && file.extension!=null && extensions.indexOf(file.extension.toLowerCase())!=-1) ? true : all_ext;
 
                if (file.isDirectory)
                  {
                    total_directories++;
                    if (parse_subdirectories) { parse_directory(file); }
                    directories.push(file);
                  }
                else if (ext_ok)
                  {
                    total_files++;
                      files.push(file);
                  }
                trace(file.name);
              }               
          }
 
        private function parsing_complete(e:Event):void
          {
            trace("COMPLETE");
          }
      }
  }

Проблема в том что выполнение в асинхронными режиме и нужно узнать когда скрипт закончил поиск. Знаю что просто должно быть, но чет никак не могу найти решение.

Буду благодарен если ктото поможет.

Спасибо.

etc 16.06.2009 08:15

Отправьте событие по окончанию обработки.

Shogun4ever 16.06.2009 17:09

Цитата:

Сообщение от __etc (Сообщение 828315)
Отправьте событие по окончанию обработки.

Я знаю что нужно отправить событие и как это зделать, но вот когда имино это зделать??
Как узнать что обработка закончелась? :wacko:

etc 16.06.2009 17:20

http://help.adobe.com/en_US/AS3LCR/F...ispatcher.html
http://help.adobe.com/en_US/AS3LCR/F...event:complete

Shogun4ever 16.06.2009 22:34

Цитата:

Сообщение от __etc (Сообщение 828443)


Не знаю к чему эти линки если я написал что знаю как ими пользоватся.

Дело в том что в папке могут быть N подпапок и N файлов... Скрипт проходит по всем из них рекурсивно.

Нужно узнать когда он прошолся по всем папкам, подпапкам и файлам. :o

etc 16.06.2009 23:05

Первая ссылка была ответом на ваш первый вопрос, а вторая на второй соответственно. В особенности по второй ссылке прямой ответ на ваш вопрос на ясном английском языке.

Shogun4ever 17.06.2009 02:31

Цитата:

Сообщение от __etc (Сообщение 828549)
Первая ссылка была ответом на ваш первый вопрос, а вторая на второй соответственно. В особенности по второй ссылке прямой ответ на ваш вопрос на ясном английском языке.


Жесть!!

Ну и к чему ты предлагаешь прикрепить Event.COMPLETE ?? Функции могут вызывается N раз и соотвествено будут N событий.

В первом посте весь класс.

etc 17.06.2009 07:54

Я предлагаю вам подписаться на событие Event.COMPLETE tmp_dir и отправлять его от имени DirectoryParser.

Shogun4ever 17.06.2009 15:26

Цитата:

Сообщение от __etc (Сообщение 828622)
Я предлагаю вам подписаться на событие Event.COMPLETE tmp_dir и отправлять его от имени DirectoryParser.


Сделал изменения в классе.
tmp_dir не возвращает ни каких Event.COMPLETE

etc 17.06.2009 15:31

Сделал («рус.»)!

Не возвращает потому что подписываетесь не там и не у того, что нужно.


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

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