Функция
freeSceneBitmap ( )
освобождает память, используемую буферами файлов всех битовых карт сцены. Используйте эту функцию, если память фрагментирована большим количеством карт.
Выбрать файл для сохранения и загрузки битовых карт можно так же с помощью функций
getBitmapOpenFileName caption:Символьная_строка_1
fileName:Символьная_строка_2
getBitmapSaveFileName caption:Символьная_строка_1
fileName:Символьная_строка_2
Если пользователь закрывает диалог, не выбрав файла, возвращается значение undefined, в противном случае возвращается строка – полный путь выбранного файла. Первый параметр задает заголовок диалога, второй – текст в строке ввода имени файла. Если в результате работы функции getBitmapSaveFileName будет выбран существующий файл, то будет выдан запрос на подтверждение перезаписи файла.
Примеры
Первый пример показывает, как с помощью MAXScript записать анимационный файл
T = teapot ( ) -- Создадим чайник, чтобы было что анимировать.
animate on at time 10 \ -- Установим контекст анимации и времени
rotate T 180 z_axis -- и повернем чайник.
b = bitmap 160 120 filename:"c:\\t.avi" -- Создадим битовую карту
for i =1 to 10 do -- Организуем цикл по кадрам
( at time i -- Устанавливаем временной
-- контекст,
render 160 120 to:b -- выводим результат в
-- битовую карту,
save b -- и сохраняем ее.
) -- Если сохранить ПОСЛЕ цикла,
-- запишется только последний кадр.
close b -- Закроем выходной файл. Это так же
-- освободит ссылку на битовую карту
-- и занимаемую ей память.
Второй пример читает битовую карту из файла и выводит в окно интерпретатора программу, которая сама создает такую же карту, что и прочитанная. Вы можете скопировать полученную программу в свой скрипт и использовать, например, при создании кнопки с картинкой
(
b = selectbitmap ( ) -- Откроем исходный файл
bname="bitmap_"+(getfilenamefile b.filename) -- Определим имя функции
w=b.width -- Определим высоту и ширину картинки
h=b.height
format "----------\nfn load_% = (\n" bname -- Определение функции
format "local % = bitmap % %\n" bname w h -- Создание карты в
--функции
-- запись функции, распаковывающей данные о пикселях
format "fn unpack val = for p in val collect (r = p/256^2; g = p/256-r*256; b = mod p 256; color r g b)\n"
for r = 0 to h-1 do -- Для каждой строки карты
-- получим функцию для записи колонок карты
( format "setpixels % [0,%] (unpack #(" bname r
pixels=getpixels b [0,r] w -- чтение колонки карты
for c=1 to w do -- цикл по пикселям
( p=pixels[c] -- получим пиксель
-- Упакуем цветовые данные в целое число
format "%" (((p.r as integer)*256+(p.g as integer))*256+(p.b as integer))
if c != w then -- Если пиксель не последний
format ", " -- поставим запятую
else
format "))\n" -- иначе перейдем на новую строку
)
)
format "return %\n" bname -- возврат битовой карты
format ")\n----------\n" -- завершение функции
)
Потоки
Файловый поток
Класс файловый поток предоставляет средства для ввода и вывода в текстовый файл.
Литералы
Литералов для файлового потока не предусмотрено
Конструкторы
Функция
createFile Символьная_строка
создает новый файл с именем, заданным символьной строкой, и возвращает файловый поток в случае успешного завершения. В противном случае возвращается значение undefined. Открытие уже существующего файла осуществляется с помощью функции
openFile Символьная_строка_1 mode:Символьная_строка_2
Первая строка – имя открываемого файла, вторая – необязательный именованный параметр, означающий режим открытия. Второй параметр может принимать одно из двух значений. “a” означает открытие для добавления записей в файл, “r” – открытие только для чтения.
