Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.10.2006, 16:33
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 1  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
По умолчанию быстрая попиксельная обработка bitmapData

Так и хотел назвать тему "ПОМОГИТЕ !!!!!", "ГОРЮ !!!!!!"," СРОКИ ЛЕТЯТ!!!!", "РЕБЯТА ПОДМОГНИТЕ".
Вобщем есть объект bitmapData. Составляется из других методом copyPixels при каждом кадре заново. По битмапдате разбросаны разноцветные пикселы.

Код:
t = getTimer();
var b:BitmapData = new BitmapData(2000, 2000);
//можно произвести какие-то действия по заливке битмап даты разными пикслеми. copyPixels из других битмапов и т.п.
var ar:Array = []
//назначаем массив с парами цветов которые будем заменять
obj = {}
obj.o = 0xff54d645;
obj.n = 0x2222dd33;
ar.push(obj)
//и так раз 100
//нужно произвести какие-то манипуляции по замене страых цветов на новые
trace(getTimer()-t)   ///нужно меньше 30
Я нашёл три основных решения
1. threshold - как нельзя лучше подходит. Но эта функция слишком медленная. И ищет по одному цвету. Т.е. перерывает весь массив пикселов и заменяет требуемый цвет на другой. Вот если бы в одной функции задать поиск и замену сразу нескольких цветов..... Тогда скорость наверное была бы приемлимой.
2. Последовательный перебор и замена пикселов методами getPixel и setPixel. Картинка 1024*768 обрабатывается > 700 милисекунд. Если создать наследника класса bitmapData и вызывать наследованные функции то скорость немного подрастает.
3. Получить методом getPixels объект ByteArray и по байтово заменить все цвета. Но сам вызов методов setPixels (имея готовый ByteArray) намного медленне чем copyPixels.
По третьему пункту см. топик
http://flasher.ru/forum/showthread.php?t=86918
Вобщем хочу обработать пикселы со скоростью функции copyPixels. Которая очень быстро копирует пикселы. Возможно есть какие-то инкапсулированные возможности bitmapData? Например что бы расширить функцию threshold. Она работает только с одним цветом за время вызова. Но похоже обрабатывает все пикселы в поисках нужного цвета.
Было бы здорово если эта функция заменяла бы несколько цветов, не обрабатывая каждый раз все пикселы заново.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©


Последний раз редактировалось miramax; 25.10.2006 в 16:42.
Старый 25.10.2006, 16:41
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Что-то мне подсказывает, что есть только первый вариант. Остальные явно медленнее…

Кстати, 700 мс не так уж и много.

Старый 25.10.2006, 16:45
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 3  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Цитата:
Сообщение от __etc
Что-то мне подсказывает, что есть только первый вариант. Остальные явно медленнее…

Кстати, 700 мс не так уж и много.
Допустим есть битмапдата в которой всего один пиксел цвета ffffff а все остальные 000000. И в первом и во втором случае время обработки одинаковое, сл-но перебираются все пикселы. Как бы заставить функцию менять не один цвет а несколько?
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

Старый 25.10.2006, 16:58
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 4  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
Распиши конкретно задачу, возможно будут другие решения кроме копирования пикселей в лоб, как вариант создать несколько битмапов и накладывать друг на друга.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 25.10.2006, 17:06
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 5  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Цитата:
Сообщение от MerlinTwi
Распиши конкретно задачу, возможно будут другие решения кроме копирования пикселей в лоб, как вариант создать несколько битмапов и накладывать друг на друга.
Это карта с битмап кэшированием. Есть эффект наведения и выделения страны, области и т.п. На картинке все страны имеют уникальный цвет, но в зависимости от того выделена страна или нет эти пикселы меняются на зелёный или на жёлтый. Из-за плавного зума и пана необходимо прорисовывать такую картинку довольно быстро. Вот именно с этой заменой возникают проблемы. Все методы что я пробовал - слишком медленные.
В принципе есть и другие пути решения, кроме присвоемия и замены уникальных цветов. Но этот самый короткий и удобный.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©


Последний раз редактировалось miramax; 25.10.2006 в 17:09.
Старый 25.10.2006, 17:12
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А floodFill не катит?

Старый 25.10.2006, 17:29
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 7  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Страна может быть извилистой, несколько раз выезжать из-за экрана. На стране, сверху есть реки. floodFill со всех сторон опробовал, подходит только частично и только для простых карт. Может просто я не могу найти правильного пути использования flooFill?.
Неизвестно где и какие пикселы появятся.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

Старый 25.10.2006, 17:30
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Сделай карту рек отдельно и накладывай сверху.

Самым нижним слоем будет карта, на которой только обведены страны.

Можно и моря выше наложить. Т.е. склеить всё copyPixels-ом.

Старый 25.10.2006, 17:30
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 9  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
Что-то я не понял, почему
> Из-за плавного зума и пана необходимо прорисовывать такую картинку довольно быстро.
разве картинка меняется не при выделении страны? Зачем ее перерисовывать при зуме?
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 25.10.2006, 17:31
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Мне интересно, а откуда copyPixels берет начальную инфу которая картинку формирует?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:07.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.