2016-05-01 13 views
1

クリックしたときにムービークリップの色を変更しようとしていますが、シャドウフィルタを黒色にします。ColorTransformが他のフィルタカラー(AS3)を変更しないようにします。

var cty:ColorTransform = new ColorTransform(); 
cty.color = 0xFFFF00; //color transform yellow 
var shdw:DropShadowFilter = new DropShadowFilter(); 
shdw.color = 0x000000; <----clearly set to black 
shdw.distance = 3; 
shdw.angle = 45; 
shdw.strength = 1; 
shdw.blurX = 3; 
shdw.blurY = 3; 
thisclip.filters=[shdw]; 

thisclip.addEventListener(MouseEvent.CLICK,myevent); 
function myevent(e:MouseEvent):void 
{ 
thisclip.transform.colorTransform = cty; 
thisclip.filters=[shdw]; <------ tried adding a refresher but doesnt work 
} 

問題は色後の影を変更することであるが、オブジェクトと同じ色に変更され、シャドウフィルタの色を変更することなく、色を変更する方法があります?

答えて

1

問題は色後の影を変更することであるが にオブジェクトと同じ色を変化させ、シャドウフィルタの色を変更することなく、色 を変更する方法があります?

はあなたが変換色にしたいあなたはドロップシャドウ化したいアイテムとアイテムを分離する必要があります。 1つの方法は、thisclipの "コンテナ"を作成し、コンテナ自体に影を適用し、次にthis clipの色のみを変換することです。私はあなたがそうのような彼らの通常のインスタンス名で任意の追加の子供たちを参照することができます(私が示したように)コードによってコンテナMCを作成する場合

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 

} 

はただ覚えている...私は何を意味するかを示すために、あなたのコードを修正しました: contMC.thisclip.transform.colorTransform = cty;

先端#1:がないようにするには、あなたがそれにインスタンス名contMCカット/ペースト(thisclip MCをステージ上のコンテナMCを作成するかのようにthisclip.transform.colorTransform = cty;

しかし、あなたは今のコードでそれを参照します追加するコンテナ、あなたのthisclip自身がMC(またはスプライト)を持っている場合は、代わりにそのインスタンス名でそのコンテンツをターゲットにすることができ、いくつかの「着色される」内容を保持:someContentがある一方で
thisclip.someContent.transform.colorTransform = cty;
(ここではthisclip、影付きの容器になり内部MCを色変換する)。

先端#2:私はあなたがどんなMCは色変換に応えるクリックした可能性がどのように表示するようにラインe.currentTarget.transform.colorTransform = cty;(ただし、使用されていないので、コメントアウトされた)を追加しました。ただ、彼らはそうのようなイベントを聞いていることを確認してください。...チェックし、最終的に.colorTransform = cty;ことを設定する前に、cty.color = some new Value;if内のステートメントを使用して、クリックした項目ごとに応じて色を調整すると(今は複数持つことができます
clipInstanceName.addEventListener(MouseEvent.CLICK, myevent);

+0

はうまくいった、ありがとう – Koden

関連する問題