Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.01.2012, 22:20
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 1  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
По умолчанию Как понять что рекурсивный обход папок закончился

Здраствуйте
Что-то я запутался, подскажите пожалуйста
вот есть у меня структура папок (на скрине)

Хотелось бы получить такой набор:

1.1.foto - список файлов
1.1.txt - список файлов
1.1.video - список файлов
1.2.foto - список файлов
1.1.txt - список файлов
итд

"1.1.foto" - это текстовый ID

Я написал такой код
Код AS3:
protected var dir:File;
 
			protected var _currentDir:DIR;
 
			protected var _recurtionDepth:int=4;
 
			protected var _currentRecurtionDepth:int=0;
 
			protected function windowedapplication1_applicationCompleteHandler(event:FlexEvent):void
			{
				var parentDir:DIR=new DIR("data");
				_currentDir=parentDir;
				listDirectory("data",parentDir);
				trace("recurtion finish "+ObjectUtil.toString(parentDir));
			}
 
			protected function listDirectory(dirName:String,dirObject:DIR):void
			{
				dir=File.applicationDirectory.resolvePath(dirName);
				try
				{
					dir.getDirectoryListingAsync();
					dir.addEventListener(FileListEvent.DIRECTORY_LISTING, directoryListCompleteHandler);
					dir.addEventListener(IOErrorEvent.IO_ERROR,fileIOErrorHandler);
				}
				catch(error:Error)
				{
					trace("DIRECTORY DOES NOT EXIST");
				}
			}
 
			private function directoryListCompleteHandler(event : FileListEvent) : void
			{
				_currentRecurtionDepth+=1;
				dir.removeEventListener(FileListEvent.DIRECTORY_LISTING, directoryListCompleteHandler);
				dir.removeEventListener(IOErrorEvent.IO_ERROR,fileIOErrorHandler);	
 
				var cont : Array = event.files;
				var tmpObject:Object;
				var arr:Array=new Array();
				var itemsID:String="";
				for (var i : uint = 0;i<cont.length;i++)
				{
					if(cont[i].isDirectory)
					{
						var _dir:DIR=new DIR(cont[i].name);
						_currentDir.directories.push(_dir);
						listDirectory(cont[i].nativePath,_dir);
					}
					else
					{
						_currentDir.files.push(cont[i].nativePath);
					}
				}
			}
 
			protected function fileIOErrorHandler(event:IOErrorEvent):void
			{
				trace("dir does not exists");
			}
Код AS3:
package VO
{
	public class DIR
	{
 
		protected var _id:String;
		protected var _directories:Vector.<DIR>=new Vector.<DIR>();
		protected var _files:Array=new Array();
 
		public function DIR(id:String,directories:Vector.<DIR>=null,files:Array=null)
		{
			_id=id;
			if(directories)
			{
				_directories=directories;
			}
		}
 
		public function get id():String
		{
			return _id;
		}
 
		public function set directories(val:Vector.<DIR>):void
		{
			_directories=val;
		}
		public function get directories():Vector.<DIR>
		{
			return _directories;
		}
 
		public function set files(val:Array):void
		{
			_files=val;
		}
		public function get files():Array
		{
			return _files;
		}
 
	}
}
Как мне понять что "просмотр" папки data закончился ?
И вообще, меня терзают смутные сомнения, а не заморочился ли я и возможно, сделать можно гораздо проще ?
Изображения
 


Последний раз редактировалось djyamato; 26.01.2012 в 22:23.
Старый 26.01.2012, 22:52
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 2  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
http://cookbooks.adobe.com/post_Recu...sing-9410.html
Там где строчка
Код AS3:
//it's a file yupeee
fileList.push(files[f].nativePath);
проверяете тип файла и пихаете в соответствующий массив
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 27.01.2012, 11:12
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 3  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
http://www.flasher.ru/forum/blog.php?b=497 посмотрите можете, что-то использовать
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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