在Graphics对象上绘制没有滤镜的阴影

时间:2010-09-27 12:53:47

标签: actionscript-3 draw shadow

我在精灵或形状上有一个复杂的图形数据(无论哪个都是精确的)。 但是我想为一个Rect(例如[10,10,240,25])或其他路径绘制阴影(内部也是如此)。

  /// code before
  grObj.graphics.drawRect( 10, 10, 240, 25);
      /// -> draw inner shadow on this objcect somehow
  /// code after

是否可以执行过滤器?

PS。 http://ipicture.ru/uploads/100927/RHZF1K6Exu.png


求解:

BitmapData(*).applyFilter( *,*,*,*); // play with this function :)

http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/BitmapData.html#applyFilter()

1 个答案:

答案 0 :(得分:0)

我假设您不想为对象添加过滤器,因为您计划添加colorTransform并且不希望过滤器也更改颜色。

如果是这种情况你可以做的是通过创建与原始相同大小的另一个sprite来分隔过滤器,在hideObject参数设置为true的情况下为新的sprite添加一个阴影过滤器。

//display object
var grObj:Sprite = new Sprite();
grObj.graphics.beginFill(0xFF0000, 1);
grObj.graphics.drawRect(0, 0, 240, 25);
grObj.graphics.endFill();

//filter object
var dsFilter:Sprite = new Sprite();
dsFilter.graphics.beginFill(0);
dsFilter.graphics.drawRect(0, 0, grObj.width, grObj.height);
dsFilter.graphics.endFill();

dsFilter.filters = [new DropShadowFilter(4.0, 45, 0, 1.0, 4.0, 4.0, 1.0, 3, true, false, true)];

//display list
grObj.x = dsFilter.x = 10;
grObj.y = dsFilter.y = 10;

addChild(grObj);
addChild(dsFilter);
相关问题