Проблема заключается в том, что после того, как цвет изменить тень меняется на тот же цвет, как объект, есть ли способ, чтобы изменить цвет без изменения цвета тени фильтра ???
Вы должны отделить элемент, который вы хотите быть дроп-слежка и элемент, который вы хотите цвет преобразованного. Один из способов - создать «контейнер» для thisclip
и применить тень к самому контейнеру, а затем преобразовать только цвет this clip
. Я изменил свой код, чтобы показать, что я имею в виду ...
var cty:ColorTransform = new ColorTransform();
cty.color = 0xFFFF00; //# yellow
var shdw:DropShadowFilter = new DropShadowFilter();
shdw.color = 0x000000; //# black
shdw.strength = 1;
shdw.distance = 3; shdw.angle = 45;
shdw.blurX = shdw.blurY = 3; //# linked since same value for both
var contMC : MovieClip = new MovieClip;
addChild(contMC); //# add to stage
contMC.addChild(thisclip); //# add "thisclip" into container MC
contMC.x = 0; contMC.y = 0; //# set your own position
//thisclip.filters=[shdw];
contMC.filters=[shdw];
thisclip.addEventListener(MouseEvent.CLICK, myevent);
function myevent(e:MouseEvent):void
{
thisclip.transform.colorTransform = cty;
//e.currentTarget.transform.colorTransform = cty; //# use this for ANY listening object
}
Просто помните, если вы создаете контейнер MC с помощью кода (как я показал) вы можете ссылаться на любые добавленные детей их обычными именами экземпляров, как так: thisclip.transform.colorTransform = cty;
Но если создать контейнер MC на сцене (с именем экземпляра contMC
и вырезать/вставить thisclip
MC в него, то теперь ссылаться на него в коде, как: contMC.thisclip.transform.colorTransform = cty;
Совет № 1: Для того, чтобы избежать добавление контейнер, если сама ваша thisclip
имеет MC (или Sprite), проведение некоторых «окрашиваться» содержание вы можете вместо того, чтобы предназначаться, что содержание его имя экземпляра:
thisclip.someContent.transform.colorTransform = cty;
(здесь thisclip
становится контейнер с тенью, в то время как someContent
является внутренний MC будет преобразован в цвет).
Совет № 2: Я добавил строку e.currentTarget.transform.colorTransform = cty;
(но закомментирована так не используется), чтобы показать, как вы могли бы иметь какой-либо нажал MC реагировать на цвет преобразования. Просто убедитесь, что они слушают событие так:
clipInstanceName.addEventListener(MouseEvent.CLICK, myevent);
(теперь вы можете иметь несколько IF проверки и регулировки цвета соответственно на щелкнули пункта с использованием cty.color = some new Value;
внутри if
заявления, прежде чем окончательно установив, что .colorTransform = cty;
...
отлично поработал, спасибо – Koden