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;
}