Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3-如何在我更改MovieClip颜色后在其上添加斜面过滤器_Actionscript 3_Colors_Filter - Fatal编程技术网

Actionscript 3 AS3-如何在我更改MovieClip颜色后在其上添加斜面过滤器

Actionscript 3 AS3-如何在我更改MovieClip颜色后在其上添加斜面过滤器,actionscript-3,colors,filter,Actionscript 3,Colors,Filter,当我改变颜色的时候 var blue:ColorTransform = new ColorTransform(); blue.color = 0xFF00B8E7; MovieClip.transform.colorTransform = blue; 我加上这个 var myBevel:BevelFilter = new BevelFilter(); myBevel.type = BitmapFilterType.INNER; myBevel.distance = 3; my

当我改变颜色的时候

var blue:ColorTransform = new ColorTransform();
blue.color = 0xFF00B8E7;
MovieClip.transform.colorTransform = blue;
我加上这个

var myBevel:BevelFilter = new BevelFilter();   
myBevel.type = BitmapFilterType.INNER;   
myBevel.distance = 3;   
myBevel.highlightColor = 0xFFFFFF;   
myBevel.shadowColor = 0x000000;   
myBevel.blurX = 5;    
myBevel.blurY = 5;  
MovieClip.filters = [myBevel];  
结果是,只改变了颜色

如何在我更改的新颜色上添加此倒角

我到处找,找不到问题的答案。 所以我希望你们能帮助我! 斜面似乎将所有颜色作为我更改的新颜色,而不是我指定的颜色

myBevel.highlightColor = 0xFFFFFF;   
myBevel.shadowColor = 0x000000;

尝试应用转换的顺序:

...;
myMovieClip.transform.colorTransform = blue;
...;
myMovieClip.filters = [myBevel];
VS:


斜面也可能在使用颜色变换时提供自己的填充。您可能需要尝试倒角的shadowAlpha和highlightAlpha属性。将它们设置为0.1,然后查看您的电影剪辑是否为蓝色阴影

colorTransform将应用于整个movieclip,包括所有子项和过滤器。如果你尝试一个阴影,你会明白我的意思

方法1: 您可以使用斜面过滤器创建父对象,并使用colorTransform附加movieclip

    var parentObject:Sprite = new Sprite();
    addChild(parentObject);

    var mc:Sprite = new Sprite();
    mc.graphics.beginFill(0xFFFF00);
    mc.graphics.drawCircle(100,100, 100);
    mc.graphics.endFill();

    var blue:ColorTransform = new ColorTransform();
    blue.color = 0xFF00B8;

    var myBevel:BevelFilter = new BevelFilter();
    myBevel.type = BitmapFilterType.INNER;
    myBevel.distance = 3;
    myBevel.highlightColor = 0xFFFFFF;
    myBevel.shadowColor = 0x000000;
    myBevel.blurX = 5;
    myBevel.blurY = 5;

    parentObject.filters = [myBevel];
    parentObject.addChild(mc); 
    mc.transform.colorTransform = blue;
方法2: 为了避免使用父对象来处理斜面,我使用了两个带有AdjustColor的ColorMatrixFilter来完成您要查找的内容。最终将使用3个过滤器,一个用于使对象变白,一个用于更改为所需颜色,以及最后一个倒角过滤器。如果您使用的是Flash以外的IDE,如Flex或FlashDevelop,则需要将fl.motion.AdjustColor包/类的“Common/Configuration/ActionScript 3.0/libs/Flash.swc”中的Flash.swc包含到库中

    var mc:Sprite = new Sprite();
    mc.graphics.beginFill(0xFF0000);
    mc.graphics.drawCircle(100, 100, 100);
    mc.graphics.endFill();
    addChild(mc); 

    // White out the entire shape first
    var whiteAC:AdjustColor = new AdjustColor();
    whiteAC.brightness = 100;
    whiteAC.contrast = 100;
    whiteAC.saturation = -100;
    whiteAC.hue = 0;            
    var whiteMatrix:Array = whiteAC.CalculateFinalFlatArray();
    var whiteCMF:ColorMatrixFilter = new ColorMatrixFilter(whiteMatrix);

    // Now use ColorMatrixFilter to change color
    var colorMatrix:Array = hexToMatrix(0x0000FF);
    var colorCMF:ColorMatrixFilter = new ColorMatrixFilter(colorMatrix);

    // Create bevel
    var myBevel:BevelFilter = new BevelFilter();
    myBevel.type = BitmapFilterType.INNER;
    myBevel.distance = 3;
    myBevel.highlightColor = 0xFFFFFF;
    myBevel.shadowColor = 0x000000;
    myBevel.blurX = 5;
    myBevel.blurY = 5;

    mc.filters = [whiteCMF, colorCMF, myBevel];

    function hexToMatrix ( hex:uint, alpha:Number = 1 ) 
    {
        var r:Number = ((hex & 0xFF0000) >> 16);
        var g:Number = ((hex & 0x00FF00) >> 8);
        var b:Number = ((hex & 0x0000FF));

        var matrix:Array = [];
        matrix = matrix.concat([r, 0, 0, 0, 0]); // red
        matrix = matrix.concat([0, g, 0, 0, 0]); // green
        matrix = matrix.concat([0, 0, b, 0, 0]); // blue
        matrix = matrix.concat([0, 0, 0, alpha, 0]); // alpha
        return matrix;
    }

它没有效果。我照你说的做了,但什么也没变。它仍然是蓝色而不是黑色,其他的想法?但我没有parentObject。这只是一个形状自定义,我想改变颜色和添加斜角。我刚刚在你的代码中发现了一个错误。该颜色不是有效的颜色。拆下最后一个E7。0xFF00B8:你是对的,但这不是我所希望的解决方案,因为如果我有两个MovieClips,我需要制作两个假的parentObjects等等,但它是有效的。
    var mc:Sprite = new Sprite();
    mc.graphics.beginFill(0xFF0000);
    mc.graphics.drawCircle(100, 100, 100);
    mc.graphics.endFill();
    addChild(mc); 

    // White out the entire shape first
    var whiteAC:AdjustColor = new AdjustColor();
    whiteAC.brightness = 100;
    whiteAC.contrast = 100;
    whiteAC.saturation = -100;
    whiteAC.hue = 0;            
    var whiteMatrix:Array = whiteAC.CalculateFinalFlatArray();
    var whiteCMF:ColorMatrixFilter = new ColorMatrixFilter(whiteMatrix);

    // Now use ColorMatrixFilter to change color
    var colorMatrix:Array = hexToMatrix(0x0000FF);
    var colorCMF:ColorMatrixFilter = new ColorMatrixFilter(colorMatrix);

    // Create bevel
    var myBevel:BevelFilter = new BevelFilter();
    myBevel.type = BitmapFilterType.INNER;
    myBevel.distance = 3;
    myBevel.highlightColor = 0xFFFFFF;
    myBevel.shadowColor = 0x000000;
    myBevel.blurX = 5;
    myBevel.blurY = 5;

    mc.filters = [whiteCMF, colorCMF, myBevel];

    function hexToMatrix ( hex:uint, alpha:Number = 1 ) 
    {
        var r:Number = ((hex & 0xFF0000) >> 16);
        var g:Number = ((hex & 0x00FF00) >> 8);
        var b:Number = ((hex & 0x0000FF));

        var matrix:Array = [];
        matrix = matrix.concat([r, 0, 0, 0, 0]); // red
        matrix = matrix.concat([0, g, 0, 0, 0]); // green
        matrix = matrix.concat([0, 0, b, 0, 0]); // blue
        matrix = matrix.concat([0, 0, 0, alpha, 0]); // alpha
        return matrix;
    }