我在舞台上有带阴影滤镜的电影剪辑。当我对该影片剪辑应用ColorTransform时,阴影就会消失。
var ct:ColorTransform = new ColorTransform;
ct.color = 0x99CC00;
lamp.transform.colorTransform = ct;如何保存阴影?
发布于 2011-03-24 00:41:01
这个想法是为了
lamp的滤镜(阴影),代码:
var lampFilters:Array = lamp.filters.slice(); //save filters
lamp.filters = []; //empty filters
var ct:ColorTransform = new ColorTransform();
ct.color = 0x99CC00;
lamp.transform.colorTransform = ct; //apply your transformation
var superLamp:Sprite = new Sprite();
superLamp.addChild(lamp); //nest the clip
addChild(superLamp);
superLamp.filters = lampFilters; //re-apply the filters发布于 2011-03-24 00:18:46
ColorTransform将转换整个MovieClip,不幸的是,其中包含了过滤器。我建议你分层lamp,并将变换应用到最上面的层,保持最下面的层(阴影)不变。
测试示例:
var ball:Sprite = new Sprite();
ball.graphics.beginFill(0x00FF00, 1);
ball.graphics.drawCircle(50, 50, 50);
ball.graphics.endFill();
ball.filters = [new DropShadowFilter()]; //default black
ball.addEventListener(MouseEvent.CLICK, changeColor);
addChild(ball);
//...
private function changeColor(evt:MouseEvent):void {
var ball:Sprite = evt.target as Sprite;
var ct:ColorTransform = new ColorTransform();
ct.color = 0x99CC00; // green-ish
ball.transform.colorTransform = ct;
ball.filters = [new DropShadowFilter(4, 45, 0xFFFFFF)]; //now white
}即使重新应用阴影滤镜,你也可以看到它仍然是由变换设置的略带绿色的。
发布于 2011-12-20 17:53:30
您应该使用嵌套的显示对象来实现这一点...
例如,您可以在另一个电影剪辑中创建一个电影剪辑。将颜色变换应用于内部影片剪辑,并将阴影应用于外部影片剪辑。对我来说很有吸引力:)
https://stackoverflow.com/questions/5408027
复制相似问题