|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Шит в смысле "таблица", "сетка". Допустим у тебя 12 иконок для какого-то тулбара, все одного размера 24х24 пикселя.
Собираешь их на одной картинке вплотную друг к другу, допустим 4 иконки в ряду, 3 ряда. Шит.
Теперь тебе не надо 12 раз писать [Embed] и создавать 12 классов, эмбедишь только эту картинку.
В рантайме создаешь ее экземпляр и получаешь ссылку на битмапдату. В цикле как по двумерному массиву "нарезаешь" ее обратно на 12 картинок, каждую битмапдату 24х24 сохраняешь в массив. И когда надо отобразить, создаешь Битмап и передаешь ему нужную битмапдату из массива.
Пока не почитаешь и не попрограммируешь битмапы/битмапдаты, для тебя эти объяснения останутся темным лесом. Надо просто знать, что эти классы из себя представляют и что умеют. Если коротко, Bitmap — экранный объект, умеющий показывать битмапдату. BitmapData содержит информацию о пикселях, по сути это двумерный массив чисел (цветов пикселей) с кучей всяких методов для работы с ними. Несколько Битмапов могут одновременно показывать одну и ту же битмапдату, что позволяет оптимально использовать память — ведь большая картинка это миллионы пикселей, так что битмапдата занимает прилично памяти. Одним из методов БитмапДаты является copyPixels(), который позволяет скопировать из одной битмапдаты в другую любой участок, прямоугольник заданных размеров и координат. Так что в цикле, смещая координаты этого прямоугольника по всей площади спрайтшита на 24 пикселя, мы можем снять все 12 иконок в отдельные новые битмапдаты 24х24, сложить их в массив и пользовать на своё усмотрение.
Добавлено через 11 минут
Когда говорят "атлас", подразумевают более сложную ситуацию, когда у картинок разные размеры и они разбросаны нерегулярно по большой картинке. Тогда нужна "карта" с координатами, то есть просто список, что такая-то картинка таких-то размеров находится в таких-то координатах (описание например в XML), и соответственно в рантайме их "снимаешь" не автоматически в цикле, а по данным из этого атласа.
Добавлено через 15 минут
Самый наверное классический пример спрайтшита — набор игральных карт для какого-нибудь покера.
Представь что пришлось бы каждую карту отдельно эмбедить и создавать под нее класс. 60 картинок.
А так их можно заэмбедить/загрузить одним изображением и нарезать на отдельные карты в рантайме.
|