AS3 / AIR: управление данными изображения во время выполнения - PullRequest
1 голос
/ 21 июля 2009

Я разрабатываю игру с AS3 и AIR. У меня будет большое количество изображений, которые мне нужно загрузить для отображения элементов. Было бы неплохо не встраивать все изображения, которые нужны игре, тем самым избегая их одновременного хранения в памяти. Это нормально в небольших проектах, но здесь не имеет смысла.

Мне любопытно узнать о стратегиях загрузки изображений во время выполнения. Поскольку все файлы довольно малы и локальная (в моем текущем проекте) загрузка их по запросу может быть лучшим решением, но я хотел бы услышать, что люди думают об этом.

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

Ответы [ 3 ]

1 голос
/ 21 июля 2009

хорошей идеей было бы создание внешних SWF-файлов, встраивающих изображения, которые, вероятно, будут использоваться вместе, если это вообще возможно ... что-то вроде projectiles.swf, ta .SWF .... я не знаю ... что-то, что имеет смысл ... может быть, разделить активы по уровням, или что-то ... взять простой интерфейс, который позволяет извлекать активы из SWF ... для Например, пусть всегда будет класс Assets со статическим методом getAll, который возвращает Object, сопоставляя строковые идентификаторы с соответствующими классами, так что вы получите что-то вроде:

function onComplete(e:Event) {//this is the handler for the loading operation
     var map:Object = (e.target as LoaderInfo).applicationDomain.getDefinition("Assets").getAll();//should return something like {"bullet1":Bullet1,"bullet2":Bullet2,...}
     //do whatever you need to do with it
}

Преимущества:

  • изображения сжимаются одно против другого, поэтому общий размер файла будет уменьшен ...
  • Вы резко уменьшаете количество запросов на своем сервере ...
  • вы не получите n-сто файлов, следуя некоторым соглашениям об именах и путях, или даже нет (также вам нужно где-то иметь индекс файла, чтобы знать, какие файлы существуют, а какие нет). ..
  • вы можете легко перекомпоновать ваше приложение, загрузив другой SWF, вместо того, чтобы загружать n-сто изображений отдельно ...
  • конечным преимуществом этого подхода является то, что у вас будут классы, которые вы можете просто создать, вместо того, чтобы загружать изображения снова и снова ... первая операция является синхронной, последняя - нет ... если вы действительно нужно сделать это, рассмотреть возможность загрузки изображения в двоичном виде в ByteArray с использованием URLLoader, а затем получить его на сцене с Loader::loadBytes ...

вы можете сгенерировать swfs на стороне сервера, используя swfmill, для автоматизации процесса ...

Greetz

back2dos

0 голосов
/ 15 января 2011

Решение, на котором я остановился, состояло в том, чтобы создать многоразовый класс загрузки синглтона, который управляет загрузкой и хранением данных по требованию. Он управляет «заданиями», которые могут быть LOCAL или REMOTE, в которых хранятся ссылки и сами загруженные данные, которые отображаются в классе менеджера после его полной загрузки.

Хотя мне действительно нравится предложение back2dos, управление (повторное) созданием SWF-файла каждый раз, когда происходит изменение актива, не является оптимальным для моих целей.

0 голосов
/ 21 июля 2009

для вашего проекта Вы можете принять решение, используя amfphp и mysql blob-storage. по этой ссылке вы можете понять, как работает mysql blob-storage.

http://www.anyexample.com/programming/php/php_mysql_example__image_gallery_%28blob_storage%29.xml

и для amfphp, пожалуйста, посетите http://www.amfphp.org/

а также, пожалуйста, проверьте этот AMFPHP Live JPEG Encoder, http://www.bytearray.org/?p=90

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