Файл Foreach в папке во Flash? - PullRequest
0 голосов
/ 03 июня 2010

У меня сейчас работает программа для создания слайдшоу изображений, и она берет папку с жестко заданным количеством изображений. Я хотел бы изменить это, чтобы он мог взять в папке и отображать все из них независимо от номера. Есть ли способ сделать это во флэш-памяти? Я думаю что-то вроде цикла foreach на Perl или другом языке сценариев. Можно сохранить количество изображений в текстовом файле, но я также не знаю, как это прочитать во флэш-памяти. Я работаю в ActionScript 3. Любая помощь будет принята с благодарностью.

Спасибо -Майк

Ответы [ 2 ]

1 голос
/ 05 июня 2010

@ Zarate правильно, что вам нужно использовать серверный язык сценариев.

Если вы выбираете PHP, посмотрите на readdir, который «Возвращает имя файла следующего файла из каталога». [ PHP Manual ]

Вот класс PHP, который я создал для получения имен файлов всех файлов в каталоге:

class DirectoryContentsHandler
{
    private $directory;
    private $directoryHandle;
    private $dirContents = array();

    public function __construct($directory)
    {
      $this->directory = $directory;
      $this->openDirectory();
      $this->placeDirFilenamesInArray();
    }

    public function openDirectory()
    {
      $this->directoryHandle = opendir($this->directory);
      if(!$this->directoryHandle)
      {
        throw new Exception('opendir() failed in class DirectoryContents at openDirectory().');
      }
    }

    public function placeDirFilenamesInArray()
    {
      while(false !== ($file = readdir($this->directoryHandle)))
      {
        if(($file != ".") && ($file != ".."))
        {
            $this->dirContents[] = $file;
        }
      }
    }

    public function getDirFilesAsArray()
    {
      return $this->dirContents;
    }

    public function __destruct()
    {
      closedir($this->directoryHandle);
    }
}

Вот как использовать класс, указанный выше:

$directoryName = 'some_directory/';
//Instantiate the object and pass the directory's name as an argument
$dirContentsHandler = new DirectoryContentsHandler($directoryName);
//Get the array from the object
$filesArray = $dirContentsHandler->getDirFilesAsArray();
//Display the contents of the array for this example:
var_dump($filesArray);

Кроме того, вы можете либо отобразить содержимое массива и отправить его в виде строки переменных в SWF, либо (это лучший выбор, если будет много изображений) использовать PHP для создания файла XML, содержит имена файлов, а затем отправить этот файл в SWF. Оттуда используйте Actionscript для анализа XML, загрузки файлов изображений и отображения их на стороне клиента.

1 голос
/ 03 июня 2010

Попробуйте это:

var folder : File = new File('path');
folder.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler);
folder.getDirectoryListingAsync();

--

private function dirListHandler(event : FileListEvent) : void
{
   for each(var file : File in event.files)
   {
      trace(file.url);
   }
}

Для этого вам необходимо скомпилировать и приложение AIR.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...