|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2004
Адрес: Ramat Gan, Israel
Сообщений: 30
|
TestureAtlas vs Clipped Image
У меня есть картинка размером чуть больше размера экрана. Когда игра поднимается, я должна порезать ее на полосы - количесво полос задается в начале на экране конфигурации (допустим, полос может быть от 3-х до 10-ти, но не больше), после чего я режу картинку на полосы и показываю все полосы - каждая двигается отдельно. Я вижу несколько способов сделать это:
1. Сделать атласы (если картинку можно разрезать на 3-10 частей, то мне понадобится 8 отдельных атласов) под каждое количество полос, загрузить картинку как класс, загрузить соответствуюший атлас, создать TexturedAtlas, создавать по текстуре на каждую полоску и из этих текстур настричь Image-ей. 2. Сделать один атлас со всеми полосками, а дальше, как и в первом случае: загрузить картинку как класс, создать TexturedAtlas, по текстуре на каждую полоску (в смысле, что в моем атласе будут 52 полосы, но мне понадобятся только, нарпимер, 5 (если на экране конфигурации выбрали 5 полос)), и из полученных текстур наделать Image-ей. 3. Не пользоваться алтасами, а загрузить картинку, как класс, сделать соответствующее количество Image-ей со всей картинкой и обрезать каждый из них, чтобы получились полоски. Теперь вопросы: а) В плане скорости написания кода второй вариант мне удобнее всего. Но я думаю, что TexturedAtlas, содержащий 8 разных вариантов нарезки базовой картинки будет занимать в 8 раз больше оперативной памяти, чем TexturedAtlas, содержащий только один вариант, я права? б) Кроме того, если в моем случае я могу нарезать картинку вручную, может, мне стоит съэконимоить ресурсы и не создавать TexturedAtlas вообще? в) Есть ли потом разница в работе с Image-ем, если он обрезан? Какие у него потом будут размеры - оригинальной картинки или урезанной? А что будет храниться в оперативной памяти: вся базовая картинка или только обрезанная? г) Может, есть еще варианты, о которых я не подумала? Заранее спасибо |
|
|||||
Lorem ipsum
|
Не придется ничего "разрезать" в буквальном смысле.
1. Создаем текстуру, ширина и высота которой, будучи равны степени двойки, окажутся достаточными, чтобы вместить в себя исходное изображение, и рисуем в нее изображение (например в верхний левый угол). var texW:int = Math.pow(2, Math.ceil(Math.log(myImage.width) / Math.LN2)); var texH:int = Math.pow(2, Math.ceil(Math.log(myImage.height) / Math.LN2)); var texBMD:BitmapData = new BitmapData(texW, texH, true, 0); texBMD.draw(myImage); var texture:Texture = new Texture.fromBitmap(texBMD); var imgCornerU:Number = myImage.width / texW; var imgCornerV:Number = myImage.height / texH; var stripImages:Array = []; var dU:Number = imgCornerU / numStrips; for (var i:int = 0; i < numStrips; i++) { var image:Image = new Image(texture); // Если не путаю порядок вершин, то так: image.setTexCoordsTo(0, dU * i, 0); image.setTexCoordsTo(1, dU * (i + 1), 0); image.setTexCoordsTo(2, dU * i, imgCornerV); image.setTexCoordsTo(3, dU * (i + 1), imgCornerV); stripImages[i] = image; }
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Apr 2004
Адрес: Ramat Gan, Israel
Сообщений: 30
|
Спасибо огромное!
И размеры полосок будут (myImage.width / numStrips) или myImage.width? |
|
|||||
Lorem ipsum
|
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Apr 2004
Адрес: Ramat Gan, Israel
Сообщений: 30
|
Спасибо. Пошла воплощать
|
|
|||||
Lorem ipsum
|
И все же насчет ширины могу ошибаться. Возможно там же в цикле после инициации текстурных координат нужно будет еще вызвать reajustSize()
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Apr 2004
Адрес: Ramat Gan, Israel
Сообщений: 30
|
Окей, значит, проверим по ходу.
У меня, если можно, еще один делитанстцкий вопрос: я должна поддерживать две резолюции: ширину экрана 2048 и 1024. На данный момент мои фоны по 1024 пикселя в ширину, растянутые на 2048 они выглядят вполне прилично, график доволен и не хочет их увеличивать. Как мне растяннуть их наиболее экономичным способом? Перед началом всей этой процедуры сделать исходному Image scale, и тогда, когда я буду делать new Texture.fromBitmap(texBMD), у меня будет текстура 2048 пикселей в ширину? Еще раз спасибо |
|
|||||
Lorem ipsum
|
У нас принято в одной теме обсуждать один вопрос. Нужно стараться придерживаться )
Вопрос разработки на Starling под разные экраны рассмотрен здесь (англ.)
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Apr 2004
Адрес: Ramat Gan, Israel
Сообщений: 30
|
Извините, буду иметь в виду.
Спасибо за линк, ушла учить матчасть |
Часовой пояс GMT +4, время: 07:13. |
|
« Предыдущая тема | Следующая тема » |
Теги |
setTexCoords , Starling , texture , TexturedAtlas |
|
|