PDA

Просмотр полной версии : Номера каналов в методе copyChannel


chingachgoog
23.10.2008, 13:57
sourceChannel:Number - The source channel. Use a value from the set (1,2,4,8), which represent red, green, blue, and alpha channels, respectively, or a sum of any of the values.

destChannel:Number - The destination channel. Use a value from the set (1,2,4,8), which represent red, green, blue, and alpha channels, respectively, or a sum of any of the values.


Собственно заинтересовала фраза or a sum of any of the values.
Действительно, суммы из чисел 1,2,4,8 - уникальные.
Но, например, iNils в своем переводе метода лишь указал, что

Если задать любое другое значение, то в качестве источника будет принят "мнимый" канал имеющий цвет 0x00 для каждого пикселя.

Выходит, что возможность задать сумму каналов не работает? Или нужен особый синтаксис?

iNils
23.10.2008, 14:06
Первод делался по хелпу из 8-го флеша:
sourceChannel:Number - The source channel. Use a value from the set (1,2,4,8), which represent red, green, blue, and alpha channels, respectively.

destChannel:Number - The destination channel. Use a value from the set (1,2,4,8), which represent red, green, blue, and alpha channels, respectively.

Как видно, фразы "or a sum of any of the values" там не было.

chingachgoog
23.10.2008, 14:12
Все равно пока не нашел, как это работает...

iNils
23.10.2008, 14:49
Я тоже не знаю, в хелпе AS3 этой фразы опять нет.

chingachgoog
23.10.2008, 15:15
Мистика...
Хотя хелп AS3 вообще основан на принципе "догадайся сам":
параметр sourceChannel, например, описан как uint, но вместо короткой записи этого uint (типа 1,2,4,8) предлагается переписывать константы (BitmapDataChannel.RED, BitmapDataChannel.GREEN, BitmapDataChannel.BLUE,
BitmapDataChannel.ALPHA)

iNils
23.10.2008, 15:26
Константы более информативны, я сам стараюсь их использовать, тк упрощает быструю смену значений. В as2 я эмулировал их с помощью геттеров.

Волгоградец
23.10.2008, 16:09
Да. Какая-то ересь. Действительно - можно указывать сумму. Например 3 - это 2 + 1 - т.е. сумма красного и зеленого каналов. Но судя по всему используется побитовое сложение. А это всегда дает ноль. Т.е. в хелпе пример:
var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0xCCССCC);
//...
myBitmapData.copyChannel(myBitmapData, new Rectangle(0, 0, 50, 80), new Point(51, 0), 3, 2);
Получается sourceChannel = 3 = 0xСС & 0x00CC = 0! Это значение подставляем в destChannel = 2 = 0xCC00CC.
Итоговый цвет - 0xCCCCCC & 0xCC00CC = 0xCC00CC.
Может я конечно что-то напутал т.к. действительно информации ноль, но судя по всему это бесполезная фишка.