Actionscript 3 在图形对象上绘制不带过滤器的阴影

Actionscript 3 在图形对象上绘制不带过滤器的阴影,actionscript-3,draw,shadow,Actionscript 3,Draw,Shadow,我有一个关于精灵或形状的复杂图形数据(无论哪个是精确的)。 但我想为一个矩形(例如[10,10,240,25])或另一条路径绘制阴影(内部) /// code before grObj.graphics.drawRect( 10, 10, 240, 25); /// -> draw inner shadow on this objcect somehow /// code after 是否可以执行w\o筛选器 附言 解决: BitmapData(*).apply

我有一个关于精灵或形状的复杂图形数据(无论哪个是精确的)。 但我想为一个矩形(例如[10,10,240,25])或另一条路径绘制阴影(内部)

  /// code before
  grObj.graphics.drawRect( 10, 10, 240, 25);
      /// -> draw inner shadow on this objcect somehow
  /// code after
是否可以执行w\o筛选器

附言


解决:

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

另外()

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

如果是这种情况,您可以通过创建另一个与原始精灵大小相同的精灵来分离过滤器,将阴影过滤器添加到新精灵中,并将hideObject参数设置为true

//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);

thx的答案,但我也知道这样的解决。至于我,这太明显了。在我的例子中,我想在graphisc对象上绘制阴影或其他复杂效果,而不使用任何效果和添加子对象。您可以尝试使用渐变(grObj.graphics.beginGradientFill()),但我认为不可能使用渐变创建您想要的效果。除此之外,我认为唯一的替代方法是使用外部图形编辑器生成您自己的图形资源,并使用这些资源使用位图填充(grObj.graphics.beginBitmapFill())而不是常规填充创建精灵。出于好奇,请问您为什么反对使用过滤器?过滤器会导致使用addChild方法,但我只想在一个图形对象上进行绘图当然很有趣。。。如果我找不到任何适用的决定,我将使用过滤器我的头脑产生了一个想法。创建smth(tmp),应用过滤器,将tmp的内容复制为位图数据,然后通过beginBitmapFill()将其绘制到所需形状(精灵);