PDA

Просмотр полной версии : Попиксельное считывание картинки


Serbis
23.09.2006, 04:37
Мне необходимо реализовать генерацию 2d кары через битмэп. Т. е. у меня есть изображение на котороп пикселями изображено где какие области на карте должны распологаться, будь то лес, пустыня или вода. Так вот мне нужно считать эту картинку и создать карту из элементов.
Я вообще разработчик игр на Delphi и С,:bb: там я очень часто касался таких вопросов, и в основном создавал трехмерные карты, считывались там изображения очень просто, через системнай канвас или средствами граф библиотеки... Мне в новом проекте выпала очень интересная роль- Написать клиент игры на флешь почти с нулевыми знаниями флешь, ну вот за неделю я довольно хорошо освоился... Чет я заговорился:confused: . Так как это сделать на ActionScript?


И вот еще какой вопрос, возможно каким нибуть макаром импортировать и применить функции из OpenGL32.dll

Хемуль
23.09.2006, 05:01
Мне необходимо реализовать генерацию 2d кары через битмэп. Т. е. у меня есть изображение на котороп пикселями изображено где какие области на карте должны распологаться, будь то лес, пустыня или вода. Так вот мне нужно считать эту картинку и создать карту из элементов.
Я вообще разработчик игр на Delphi и С,:bb: там я очень часто касался таких вопросов, и в основном создавал трехмерные карты, считывались там изображения очень просто, через системнай канвас или средствами граф библиотеки... Мне в новом проекте выпала очень интересная роль- Написать клиент игры на флешь почти с нулевыми знаниями флешь, ну вот за неделю я довольно хорошо освоился... Чет я заговорился:confused: . Так как это сделать на ActionScript?


И вот еще какой вопрос, возможно каким нибуть макаром импортировать и применить функции из OpenGL32.dll
То есть, насколько я понял, у вас тайловый (от англ. tile) мир. Каждый тайл задаётся цветом пикселя в битмапе. То есть, цвет пикселя в какой-то позиции битмапа как бы является индексом тайла, определяющим его тип? Если так, то используйте BitmapData. Вот, почитайте: http://livedocs.macromedia.com/flash/8/main/00001942.html
Клиент для игры должен запускаться в окне броузера или же быть EXE-приложением? Если второй вариант, то в свете вопроса по поводу OpenGL32.dll рекомендую взглянуть на MDM Zinc...

Serbis
23.09.2006, 05:10
У меня сейчас нет возможности проверить, BitmapData работает только во Flash 8 или еще поддерживает Flash MX 2004

Хемуль
23.09.2006, 05:18
2 Serbis:
8 и выше.
Если я вас правильно понял (прочитайте моё первое сообщение в теме и скажите, так ли это), то зачем вам хранить карты в битмапах? Чем вас не устраивают те же XML'и?

Serbis
23.09.2006, 05:50
Мир слишком большой, и мне легче все запихннуть в пару тысяч битмепов.

Хемуль
23.09.2006, 06:06
2 Serbis:
Можно написать простой редактор на том же С++, который сохраняет карты в XML, где тайловую карту рисуешь мышкой.
Мир, сохранённый в битмапе может занимать:
3 байта * количество пикселей (тайлов).
Если же говорить о BMP, то это ещё + 1 Кб для каждого файла на палитру.
С помощью XML можно выиграть в размере подгружаемых данных:
1 или 2 байта * количество тайлов.
К тому же Флеш может грузить внешнюю картинку только вроде из JPG-файлов, которые, как вам известно, со сжатием идут. А потому они не подходят для сохранения карт.
По поводу пары тысяч битмапов... Вы хоть представляете себе, сколько это может занять памяти? К чему вам такие обьёмы информации? Учтите, Флеш всё же создавался, наверное, не для игр...

iNils
23.09.2006, 12:43
К тому же Флеш может грузить внешнюю картинку только вроде из JPG-файлов, которые, как вам известно, со сжатием идут. А потому они не подходят для сохранения карт.8-ка грузит png и gif, а до нее просто загоняли данные форматы в пустые fla, генерили swf и грузили их.

Хемуль
23.09.2006, 14:21
2 iNils:
Понятно. Хотя, думаю, товарищу Serbis'у GIF не подойдёт - палитровый.
Выходит, остаются у нас PNG и BMP... Если воспользоваться тем методом, о котором писали вы, то нашему собеседнику придётся иметь не пару тысяч битмапов, а пару тысяч SWF... И делать их придётся, насколько я понимаю, руками. ^_^

2 Serbis:
Видите, как всё получается? Всё равно неудобно. Лучше придумать какой-то другой формат для хранения данных.

iNils
23.09.2006, 14:45
У меня сейчас нет возможности проверить, BitmapData работает только во Flash 8 или еще поддерживает Flash MX 2004
Только начиная с 8-ки.

Понятно. Хотя, думаю, товарищу Serbis'у GIF не подойдёт - палитровый.
Выходит, остаются у нас PNG и BMP...
Если он расчитывает под 8-ку, то png достаточно.
Если воспользоваться тем методом, о котором писали вы, то нашему собеседнику придётся иметь не пару тысяч битмапов, а пару тысяч SWF... И делать их придётся, насколько я понимаю, руками. ^_^Есль php библиотека ming, которая генерит swf. Полные ее возможности я не знаю, но возможно она может брать указанную картинку, загонять ее в swf отдавать его.

Хемуль
23.09.2006, 20:37
http://ming.sourceforge.net/docs/swfbitmap.php?mode=
^_^

iNils
23.09.2006, 20:44
http://ming.sourceforge.net/docs/swfbitmap.php?mode=
^_^
Значит все такие конвертит только jpeg. Можно еще это посмотреть http://www.quasimondo.com/archives/000407.php