画底圆角

时间:2011-02-16 20:02:49

标签: flash actionscript-3 adobe air

如何在不使用库的情况下在其底部绘制仅舍入的形状?

enter image description here

  var _myShape:Shape = new Shape();
      _myShape.graphics.lineStyle(4,0x000000,1,true,....);
      _myShape.graphics.drawRoundRect(0,0,50,50,10);

3 个答案:

答案 0 :(得分:1)

请参阅此页:Why is drawRoundRectComplex() not documented in ActionScript?

你需要“drawRoundRectComplex”

编辑:如果您不能使用Flex SDK,那么您唯一的其他“真实”绘图选项就是使用lineTocurveTo的组合。最简单的方法是从Flex SDK中的GraphicsUtil类复制代码。我不清楚它是否被认为是开源的,所以我不打算在这里发布。

答案 1 :(得分:1)

如果您不想使用Flex库(正如您对Glenn的回答所评论的那样)并且如果您只关注填充,则可以在精灵上使用掩蔽技术。

var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xFF0000, 1.0);
sprite.graphics.drawRoundRect(0, 0, 300, 200, 100, 100);
sprite.graphics.endFill();

var spriteMask:Shape = new Shape();
spriteMask.graphics.beginFill(0);
spriteMask.graphics.drawRect(0, sprite.height / 2, sprite.width, sprite.height / 2);
spriteMask.graphics.endFill();

sprite.mask = spriteMask;
sprite.addChild(spriteMask);

addChild(sprite);

包括笔画有点棘手,但仍有可能。

答案 2 :(得分:0)

您可以使用GlowFilter来模拟笔画,虽然它比真正的笔画更贵。

你也不需要面具 - 只需画两个盒子。

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

s.graphics.beginFill(0xff0000);
s.graphics.drawRoundRect(0,0,50,50,10);
s.graphics.endFill();

s.graphics.beginFill(0xff0000);
s.graphics.drawRect(0,0,50,20);
s.graphics.endFill();

s.filters = [new GlowFilter(0x0, 4, 8,8, 40)];