PDA

Просмотр полной версии : transformObject


Whatsername
09.06.2004, 12:34
colorObject.setTransform(transformObject)
Если свойству transformObject присвоить чрезвычайно высокое значение (например, transformObject.rb = 100000) то задаваемый цвет вычитается полностью. Почему так происходит?

Кстати, если присвоить transformObject.rb еще большее значение, скажем, 135000 - все встает на свои места, и количество цвета обрезается по максимальному значению (255)

Nox Noctis
09.06.2004, 12:52
clr = new Color(mc);
clr.setRGB(0xFFFFFF*1.5);

...какой цвет покажется? как ты думаешь? :)
(а ведь задано значение в полтора раза больше максимального...)

Whatsername
09.06.2004, 14:30
да, настоящий припротивный цвет вместо белого =)
видно я чего-то не догоняю... почитаю еще раз про Color, спасибо =)

Nox Noctis
09.06.2004, 14:41
цвет кодируется шестью байтами RRGGBB

если число больше трехбайтового (больше 16777215 по десятичной системе счисления) - старшие байты просто отбрасываются.

а в трансформе rb gb bb - это по одному байту.. если больше - старшие байты отбрасываются

Whatsername
10.06.2004, 10:35
Спасибо, Нокс,
в принципе, мне понятно, о чем ты говоришь. И, как я понимаю, при 100000 происходит переполнение.. думаю, мне не хватает знаний по архитектуре компьютера, сегодня возьму что-нибудь почитать об этом.

Nox Noctis
10.06.2004, 12:26
сейчас ломает экспериментировать, чтобы убедиться что всё именно так как я сказал :)

в принципе всё зависит только от того как построено преобразование аргументов в методе setTransform класса Color... надо влезть ручками покопаться :)

Whatsername
10.06.2004, 12:55
а чего экспериментировать? Все так и есть - как ты сказал.

Whatsername
10.06.2004, 21:58
нет, не дает мне эта штука покоя
посоветовался с нашим программером на работе - он тоже в непонятках.

я набросал исходник, если у тебя, канеш, есть время попробуй задать значение transformObject.rb 255 (11111111) - все славно, но если задать 255555 (111110011001000011 ) красный уходит в 0. О как

Whatsername
10.06.2004, 21:59
color

Dindin
10.06.2004, 22:47
clr = new Color(mc);
clr.setRGB(255<<16|0<<8|0); // красный
clr.setRGB(0<<16|255<<8|0); // зелёный
clr.setRGB(0<<16|0<<8|255); // синий


Так, по моему, проще... или нет?

sergwizard
11.06.2004, 02:46
clr = new Color(mc);
clr.setRGB(255<<16|0<<8|0); // красный
clr.setRGB(0<<16|255<<8|0); // зелёный
clr.setRGB(0<<16|0<<8|255); // синий

Но ведь можно и еще проще:
clr = new Color(mc);
clr.setRGB(0xFF0000);//красный
clr.setRGB(0x00FF00);//зеленый
clr.setRGB(0x0000FF);//синий

Но, в принципе я с Dindin(ым) согласен: зачем использовать setTransform там, где можно использовать setRGB()? А setTransform оставить для тех случаев, где происходит именно трансформация цвета. Примерно так.

Dindin
11.06.2004, 02:58
Серж, просто насколько я понял, чувак бьётся над переводом цветовых кодов из системы в систему. Вот я и попытался намекнуть, что из десятичной в двоичную проще всего переводить побитовым смещением :)

Dindin
11.06.2004, 03:02
Оригинал написал(а) dm_nev
нет, не дает мне эта штука покоя
посоветовался с нашим программером на работе - он тоже в непонятках.

я набросал исходник, если у тебя, канеш, есть время попробуй задать значение transformObject.rb 255 (11111111) - все славно, но если задать 255555 (111110011001000011 ) красный уходит в 0. О как

11111111 00110111 00110111 - (без пробелов) - цветовой код для 255 55 55.
Ты не учитываешь, что на каждый цвет отводится по одному байту.

Whatsername
11.06.2004, 15:14
please, набирите в моей .swf 255555 и вы присовоете rb значение 255555, но увидите, что фига! - цвет вычитается полностью... 0 (ноль). Никакого смещения красного.


почему?


Вот и все, что меня беспокоит. все.

Dindin
11.06.2004, 15:43
Где именно набрать?

Whatsername
11.06.2004, 15:57
в текстовом поле :D
ты чё меня разыгрываешь?

Dindin
11.06.2004, 16:09
Это ты меня разыгрываешь :D в твоём мувике нет ни одного текстового поля :)

Whatsername
11.06.2004, 16:51
Din, открой первую страницу, нажми ctrl + f и введи color.zip

Dindin
11.06.2004, 17:12
пардон, открыть первую страницу ЧЕГО? Чем дальше - тем путанее :)

Whatsername
11.06.2004, 17:21
ТОПИКА (и с пошлыми розовыми кофточками ТОПИК не имеет ничего общего)



Скачай вот это:

Dindin
11.06.2004, 17:31
RTFM!

Whatsername
11.06.2004, 18:33
ты о чем :mad: ???

Dindin
11.06.2004, 19:26
READ THE FU..ING MANUAL!!!

Nox Noctis
11.06.2004, 19:38
господа, не надо грязи.. чакры слипнутся :)

вопрос:
please, набирите в моей .swf 255555 и вы присовоете rb значение 255555, но увидите, что фига! - цвет вычитается полностью... 0 (ноль). Никакого смещения красного.
почему?
Вот и все, что меня беспокоит. все.
ответ:
в принципе всё зависит только от того как построено преобразование аргументов в методе setTransform класса Color...

никто из макромедии вам не обещал, что в этой функции вообще идёт работа с двоичными смещениями, правда? и вообще никто ничего не говорит о том как обрабатываются "неправильные" аргументы.

то что я предположил было бы логично - но видимо работает как всегда :)

Whatsername
11.06.2004, 20:16
спасибо всем... аминь