PDA

Просмотр полной версии : Задать нужный цвет через flash.geom.ColorTransform


wvxvw
07.11.2006, 06:35
Вот такая вот незадачка... Мануал читал... ничего полезного там не обнаружил, увы...
Нужно из квадратика равномерно закрашеного в цвет 0x999999 получить квадратик закрашеный в цвет 0x8FBE00. Вобщем, сымитировать то, что можно получить в properties -> color -> tint: R=143, G=190, B=0.
При чем свойство ColorTransform.rgb использовать нельзя, можно только непосредственно через задание параметров нового объекта ColorTransform. По принципу:
var _ct:ColorTransform = new ColorTransform(x, x, x, x, x, x, x, x);
Я ей богу умаялся... Или я плохо искал, или в мануале нигде не написано в чем же они меряют цвет, т.е. какие могут быть минимальные и максимальные значения. Методом проб и ошибок получаются самые дурацкие и абсолютно непредсказуемые результаты. Например, изменяя один параметр в сторону увеличения можно получить как красный так и зеленый (иногда желтый) цвет... :(
А что такое alphaOffset и alphaMultiplier не понятно вообще... Ни в чем измеряется, ни на что влияет...
Буду признателен за человеческое объяснение.

terbooter
07.11.2006, 09:30
Если я правильно понял, то при перекраске ручками
properties -> color -> tint: R=143, G=190, B=0.
прозрачность выставляется 100%,
иначе не получить требуемый цвет.

То есть цвет квадратика до перекраски не имеет никакого значения,
тогда


New red value = (old red value * redMultiplier) + redOffset
New green value = (old green value * greenMultiplier) + greenOffset
New blue value = (old blue value * blueMultiplier) + blueOffset
New alpha value = (old alpha value * alphaMultiplier) + alphaOffset

Выставляем множители на значения старого цвета в нули
а оффсеты, это нужные значения

var myCT:ColorTransform = new ColorTransform(0, 0, 0, 0, 143, 190, 0, 255);

wvxvw
07.11.2006, 20:53
спасибо, я понял в чем была ошибка, я думал, что альфа идет перед остальными каналами, а не после...
Только, если можно, тогда еще вопрос. Multiplier'ы могут быть от 0 до 255 или до 100? (на глаз тяжело определить) =)
У оффсета может быть и отрицательное значение?

etc
07.11.2006, 21:00
В принципе они не ограничены, ставь, сколько влезет, пока есть визуальная разница.
Оффсет может быть и отрицательным.

tuzhila
10.01.2007, 11:08
:umnik2: Умники помогите нубу

Я подгружаю .swf таким способом...


var mc0:MovieClip = this.createEmptyMovieClip ("mc0" + this.getNextHighestDepth(), this.getNextHighestDepth())
mc0._x = 866;
mc0._y = 0;
mc0.loadMovie("player/sound0s.swf");


Как программно задать параметр Tint для подгружаемого объекта?

terbooter
10.01.2007, 13:10
import flash.geom.ColorTransform;
import flash.geom.Transform;

_root.createEmptyMovieClip("c",3);
_root.c.loadMovie("333.swf");
var myCT:ColorTransform = new ColorTransform(0, 0, 0, 0, 143, 190, 0, 255);

var trans:Transform = new Transform(c);
trans.colorTransform = myCT;

etc
10.01.2007, 13:46
Что-то у меня есть подозрение, что это надо делать после загрузки.

tuzhila, отказаться от loadMovie и использовать MovieClipLoader. После загрузки (onLoadInit) повесить ColorTransform (пример выше, за исключением загрузки).

Twilight
12.01.2007, 18:09
Ребят, а как программно менять цвет у объекта постепенно? допустим с цвета #999999 до #E00547.
например при наведении на объект мышкой он начинает изменять цвет, а при сведении он менял цвет обратно (при чем хочется учесть то что откат цвета должен происходить с того цвета до которого объект успел видоизмениться).

wvxvw
12.01.2007, 18:24
var _null:Number = 0x000000;
_root.onEnterFrame = function() {
_null += 0x01;
trace(_null);
}

etc
12.01.2007, 18:31
http://dev.etcs.ru/blog/as2/ru/etcs/draw/simplegradient/

Twilight
17.01.2007, 13:38
спасибо огромное, буду разбираться.

tuzhila
22.01.2007, 12:51
Что-то у меня есть подозрение, что это надо делать после загрузки.

tuzhila, отказаться от loadMovie и использовать MovieClipLoader. После загрузки (onLoadInit) повесить ColorTransform (пример выше, за исключением загрузки).

Многоуважаемый а не могли бы Вы быстренько накатать код этого "волшебства" для задания "tint"

etc
22.01.2007, 15:24
Все необходимые примеры есть в хелпе.
Дать ссылки?

tuzhila
22.01.2007, 18:57
Все необходимые примеры есть в хелпе.
Дать ссылки?
aga )

etc
22.01.2007, 20:42
http://livedocs.macromedia.com/flash/8/main/00002538.html
http://livedocs.macromedia.com/flash/8/main/00002083.html