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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.05.2012, 13:31
RJ Presto вне форума Посмотреть профиль Отправить личное сообщение для RJ Presto Найти все сообщения от RJ Presto
  № 31  
Ответить с цитированием
RJ Presto

Регистрация: Nov 2007
Сообщений: 55
Цитата:
Сообщение от in4core Посмотреть сообщение
на каком диске? У вас объект создался ( в поле класса ). Все. у вас готовый объект который ниче не делает и память не нагружает собственно.
bitmapData.applyFilter() - ага а тут мы уже память потревожим. addChild(bitmap) , bitmap.bitmapData.doSome() - ага а тут мы тревожим сильнее потому что еще и визуально ее рендерим
а как вы себе представляете вот этот готовый объект, который в памяти ничего не занимает?
вот, плеер, запомни - мы тут инстанс битмапы как бы создали, но ты память под него не выделяй, пока никто не обратится
так что ли?

Старый 29.05.2012, 18:04
Simplifier вне форума Посмотреть профиль Отправить личное сообщение для Simplifier Найти все сообщения от Simplifier
  № 32  
Ответить с цитированием
Simplifier

Регистрация: Jun 2011
Сообщений: 60
Цитата:
Сообщение от TanaTiX Посмотреть сообщение
zuxul, а где про это можно почитать? Поделись ссылкой.
http://help.adobe.com/ru_RU/as3/mobi...7189-7ff9.html

Старый 29.05.2012, 19:17
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 33  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
Чего то дискуссия свернула куда то не туда. Как в разные промежутки времени создавать битмапы ссылающиеся на одну BitmapData? Т.е. насоздовали битмап и забыли про это, затем понадобилось еще несколько таких же битпап, но где взять ссылку на BitmapData первой группы? Сначала подумал, что можно было бы создать класс в котором бы хранились все ссылки на BitmapData если они используются. В геттере проверяли бы существует ли BitmapData, если да до возвращаем ссылку на нее, если нет то предварительно создаем объект из класса Embed и присваиваем ссылке в классе его BitmapData. Кроме того, что это затрудняем редактирование содержимого библиотеки, ко всему прочему не понятно как обнулить ссылку на BitmapData если нет использующих ее битмап.

Старый 29.05.2012, 19:21
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 34  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Ответ.
__________________
Поймай яблоко 2!

Старый 29.05.2012, 19:26
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 35  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Если высоздали BitmapData и забыли о нем, но хотя бы одна ссылка на него все же существует, тогда создание еще одного экземпляра BitmapData неоправдано увеличит расход памьяти. Так что лучше создать по экземпляру нужных BitmapData (если они постоянно используются, а не позказываются, скажем, в финальных титрах) и передавать ссылки на них нужным Bitmap-ам. Все BitmapData можно собрать в одном месте (склад текстур )

Старый 29.05.2012, 20:48
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 36  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
Цитата:
Сообщение от elder_Nosferatu Посмотреть сообщение
Если высоздали BitmapData и забыли о нем, но хотя бы одна ссылка на него все же существует, тогда создание еще одного экземпляра BitmapData неоправдано увеличит расход памьяти. Так что лучше создать по экземпляру нужных BitmapData (если они постоянно используются, а не позказываются, скажем, в финальных титрах) и передавать ссылки на них нужным Bitmap-ам.
В том то вся и проблема, что так я сделать не могу. Набор картинок очень большой и загрузить его целиком в память нельзя, а как подгружать их избирательно я не представляю.
Цитата:
Сообщение от elder_Nosferatu Посмотреть сообщение
Все BitmapData можно собрать в одном месте (склад текстур )
Вот я в предыдущем своем посте нечто подобное предлагал:
Код AS3:
public class imgStorage {
 
	private static var _Orange_1:BitmapData;
 
	static function get Orange_1():BitmapData {
 
		if (!_Orange_1)
			_Orange_1 = new Background.Orange_1()// если BitmapData нет то создаем ее из класса Embed
 
		return _Orange_1;
	}
}
Ну и можно, наверное, сделать нечто вроде счетчика текущих Bitmap использующих единую BitmapData, расширить класс Bitmap и при создании/удалении Bitmap увеличивать или уменьшать значение счетчика. Если значение счетчика будет == 0, то нужно будет удалить ссылку в imgStorage на эту BitmapData.
Но пока что способ этот выглядит очень криво и деревянно.

Старый 29.05.2012, 21:10
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 37  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
А в чем идея то?
Если Вам нужно кое что из БОЛЬШОГО НАБОРА, тогда либо грузите все и потом имеете моментальный доступ к нужным ресурсам, либо грузите лиш по необходимости, но тогда будет задержка на загрузку перед отображением.
Просто не могу понять Вашу ситуацию...

З.Ы.: В одной из онлайн игр с флешовым клиентом видел хороший прием: как только локация загрузится (со всеми обьектами и неписями - они все же стандартные и 100% будут отображаться) сразу же начинается игра, а текстуры для всех игроков, которые попадают в поле зрения подтягиваются в фоновом режиме. Во время загрузки этих текстур вместо игроков подставляются только силуэты мужской/женской фигуры. Хоть это не очень красиво, но, лично меня, длительная загрузка раздражает больше

Добавлено через 6 минут
Цитата:
Сообщение от PlutDem Посмотреть сообщение
Код AS3:
...
	static function get Orange_1():BitmapData {
 
		if (!_Orange_1)
			_Orange_1 = new Background.Orange_1()// если BitmapData нет то создаем ее из класса Embed
		return _Orange_1;
	}
...
Раз у Вас ресы встроеные, значит они уже "жрут" памьять... Будете Вы их использовать или нет - они уже есть. Другой вопрос, будете лы Вы всем бимапам, что должны отображать одинаковые обьекты, передавать ссылку на одну и ту же БитмапДату, или для каждой создадите по экземпляру?


Последний раз редактировалось elder_Nosferatu; 29.05.2012 в 21:18.
Старый 29.05.2012, 21:32
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 38  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
Цитата:
Сообщение от elder_Nosferatu Посмотреть сообщение
...либо грузите лиш по необходимости...
Вот как раз реализацию этого процесса я и прошу подсказать.
Пример:
Есть склад, на котором могут храниться любые объекты. Мы не можем хранить в памяти BitmapData'ы для всех существующих в мире объектов, поэтому подгружаем BitmapData'ы только тех объектов, которые хранятся на складе. Эти BitmapData'ы нужно где то хранить, что бы если на склад привезут, скажем, Гвозд'и, которые уже есть на складе, мы не создавали новую BitmapData'у гвоздей, а использовали уже имеющуюся. Если со склада увозят все объекты одного типа, то надобность хранить BitmapData'у отпадает и она должна быть автоматически выгружена из памяти.
Цитата:
Сообщение от elder_Nosferatu Посмотреть сообщение
Раз у Вас ресы встроеные, значит они уже "жрут" памьять... Будете Вы их использовать или нет - они уже есть.
Опа! Т.е. вот эта конструкция автоматически добавит в память изображение Orange_1.png?
Код AS3:
[Embed(source = '../../lib/background/Orange_1.png')]
public static var Orange_1:Class;


Последний раз редактировалось PlutDem; 29.05.2012 в 21:37.
Старый 29.05.2012, 21:41
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 39  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
заводить счётчик.
Вот кастомный менеджер ресурсов. (за код сильно не бейте)
https://github.com/k0t0vich/fazenda/...TileManager.as
когда мы говорим getTileByName мы увеличиваем счётчик,
когда говорим deleteResource, счётчик уменьшается.
Но тут надо аккуратно следить.
__________________
Отряд Котовскага

Старый 29.05.2012, 21:45
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 40  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Цитата:
Сообщение от PlutDem Посмотреть сообщение
...
Опа! Т.е. вот эта конструкция автоматически добавит в память изображение Orange_1.png?
Код AS3:
[Embed(source = '../../lib/background/Orange_1.png')]
public static var Orange_1:Class;
Потому такие ресы и зовут встроеными

Добавлено через 3 минуты
Все, чем напичкано основное приложение, при старте попадает в памьять. Если есть внешние данные, тогда Вам (приложению) решать, что загружать в себя (в памьять, выделенную для себя) и что из загруженного выгрузить из себя.

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

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

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


 


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


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