Выяснил, что вариант через цикл вычислять допустимый размер битмап-даты не катит - слишком медленно. Но у меня получилось, что максимальный размер, который можно снять - примерно 21874х24434. Далее уже будет ошибка BitmapData. Но истинно ли это для других компьютеров? Ведь в доках сказано, что возможный размер BitmapData зависит от системы, начиная с Flash Player 11.
Вот сегодня пробовал работать с памятью. Так и не понял, каким образом можно вычислить размер (в байтах) моей BitmapData, и главное, как узнать количество памяти, доступной в системе для флеша?
Код AS3:
var sizeX = mySprite.width*scale;
var resmem:String = Number(Math.pow(sizeX,2) *4 / 1024 / 1024).toFixed( 2 )+ "Mb";
var mem:String = Number( System.totalMemory / 1024 / 1024 ).toFixed( 2 ) + "Mb";
var freemem:String = Number( System.freeMemory / 1024 / 1024 ).toFixed( 2 ) + "Mb";
trace("resmem: "+resmem+" total used memory: "+mem + " total free memory: "+freemem);
//пример resmem: 1740.29Mb total used memory: 27.64Mb total used memory: 2.25Mb
Размер битмапдаты высчитывал приблизительно. Остальное выдаёт какие-то совсем уж необычные результаты, вроде "свободно 27 Мб, использовано 2.25 Мб"... Динамически что ли память берётся? Тогда вопрос, как мне узнать, что она вот-вот закончится?
|