Форум 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=214537)

Visors 14.09.2017 19:20

Загрузка случайного фото из папки
 
Вложений: 1
Здравствуйте, уважаемые господа.
Помогите решить вопрос.

У меня есть макрос загрузки одной конкретной фотографии во флэш.

В папке с файлом флэша - лежат несколько фотофайлов с разными названиями.
Их количество и названия постоянно обновляются.

Как при помощи Air - заставить скрипт загружать во флэш случайную картинку из папки при каждом запуске?

Имеющийся код:
Код AS3:

import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
 
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
addChild(loader);
loader.load(new URLRequest("1.jpg"));
function onComplete(e:Event):void {
        e.target.removeEventListener(Event.COMPLETE, onComplete);
}


alexandrratush 18.09.2017 10:33

Привет.
В AIR для работы с файлами существует целый пакет классов.

Visors 19.09.2017 03:52

alexandrratush, ясно.
А как и в коде применить ?

caseyryan 19.09.2017 06:21

1) Сначала создаем объект File, с указанием в конструкторе директории, в которой лежат картинки.
2) Берем список этой директории и в случайном порядке выбираем картинку.
3) Грузим.
4) Профит
Код AS3:

var file:File = new File("C:\Картинки");
if (file.exists) {
  var pictures:Array = file.getDirectoryListing();
  var randomImageFile:File = pictures[int(Math.random() * pictures.length)];
  // тут грузим полученную картинку
}

Еще можно перед выбором проверить расширение файла, чтобы это точно была картинка. Как это сделать смотрим в документации к методу extension и в гугле
Собственно, выглядеть код может примерно так
Код AS3:

var extension:String = randomImageFile.extension.toLowerCase(); // приводим в нижний регистр, чтобы упростить проверку, если расширение написано заглавными
switch (extension) {
  case "png":
  case "jpeg":
  case "jpg":
  case "bmp":
      // то, что нужно, продолжаем загрузку
      break;
  default:
      // не картинка, вызываем код снова
      break;
}

Дальше есть два основных пути
1) Грузить этот файл в программу как поток байт, через FileStream, а потом этот поток скормить Loader'у, в методе loadBytes(), чтобы получить на выходе нужную картинку
2) Взять nativePath у этого файла (в некоторых ОС nativePath не используется, вместо него нужно использовать url) и загрузить как обычно по адресу, через Loader#load

Как это сделать - гугл в помощь. Примеров сотни. Найти их очень легко.

Visors 06.10.2017 06:09

caseyryan, спасибо за ответ.


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

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