Показать сообщение отдельно
Старый 30.07.2008, 12:19
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 10  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
chingachgoog! Очень любопытные исследования. Я, увлекся ими.

Цитата:
Ладно, используем getColorBoundsRect:

Код:
colorBoundsRect = myBitmapData.getColorBoundsRect(0xffff00ff, 0x705400ff, true);
trace(colorBoundsRect) // (x=0, y=0, w=250, h=200)
Обратите внимание: в маске канала R (RGB) параметр установлен в 0xFF, а в параметре цвета этого же канала установлено "левое" (реальное) значение в 0x54. Результат - все показывает верно.

Меняем параметр цвета на правильный (заданный), т.е. на 0х55:


Код:
colorBoundsRect = myBitmapData.getColorBoundsRect(0xffff00ff, 0x705500ff, true);
trace(colorBoundsRect) // (x=0, y=0, w=250, h=200)
Опять правильно! Как такое возможно?!
Ну, я думаю, проблема здесь в конфликте попиксельного смешивания прозрачности цвета (параметр transparent) и альфа-составляющей значений маски и искомого цвета.
Грубо говоря, установите, параметр transparent в false, и данный пример заработает, т.е.:

Код:
myBitmapData = new BitmapData(300, 200, false, 0x705500FF);
Я, не совсем понимаю, зачем использовать transparent==true и при этом еще манипулировать альфа-каналом в кокретных используемых значениях. Практичнского значения это не имеет.
Используйте, лучше transparent==false и значения альфа-канала.

Буду исследовать дальше.
__________________
Случайность, господа, это знаете ли непознанная необходимость.


Последний раз редактировалось Alex_beginner; 30.07.2008 в 12:46.