首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColorTransform去除阴影

ColorTransform去除阴影
EN

Stack Overflow用户
提问于 2011-03-23 23:55:12
回答 4查看 1.3K关注 0票数 1

我在舞台上有带阴影滤镜的电影剪辑。当我对该影片剪辑应用ColorTransform时,阴影就会消失。

代码语言:javascript
复制
        var ct:ColorTransform = new ColorTransform;
        ct.color = 0x99CC00;
        lamp.transform.colorTransform = ct;

如何保存阴影?

EN

回答 4

Stack Overflow用户

发布于 2011-03-24 00:41:01

这个想法是为了

  1. 保存剪辑lamp的滤镜(阴影),
  2. 应用转换,
  3. 将剪辑放在主剪辑中,
  4. 将滤镜重新应用于此未转换的父级。

代码:

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2011-03-24 00:18:46

ColorTransform将转换整个MovieClip,不幸的是,其中包含了过滤器。我建议你分层lamp,并将变换应用到最上面的层,保持最下面的层(阴影)不变。

测试示例:

代码语言:javascript
复制
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
}

即使重新应用阴影滤镜,你也可以看到它仍然是由变换设置的略带绿色的。

票数 2
EN

Stack Overflow用户

发布于 2011-12-20 17:53:30

您应该使用嵌套的显示对象来实现这一点...

例如,您可以在另一个电影剪辑中创建一个电影剪辑。将颜色变换应用于内部影片剪辑,并将阴影应用于外部影片剪辑。对我来说很有吸引力:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5408027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档