在ActionScript交叉口中的图形对象上绘制多个形状时,
有什么方法可以禁用此默认行为?
我可以简单地使用绘图形状之间的beginfill()和endfill()方法。对我而言,这种方法的问题是,每当我将alpha属性的值设置为其他任何东西时,每种形状都会"融合在一起"。
基本上我想要的是1个固体图,由不同的形状组成(例如圆形),因此当更改alpha值时,该图的不同部分不应可见。
以下方法无效:
-2圆圈被绘制,但交点被取消
var solidShape = new Sprite();
solidShape.graphics.beginFill(0xFF0000)
solidShape.graphics.drawCircle(0,0,100)
solidShape.graphics.drawCircle(0,50,100)
solidShape.graphics.endFill()
-2圆圈正确绘制,但是当我更改alpha值
时它们变得可见var solidShape = new Sprite();
solidShape.graphics.beginFill(0xFF0000)
solidShape.graphics.drawCircle(0,0,100)
solidShape.graphics.endFill()
solidShape.graphics.beginFill(0xFF0000)
solidShape.graphics.drawCircle(0,50,100)
solidShape.graphics.endFill()
solidShape.alpa = 0.5
最简单的方法是在单独的displayObject中绘制每个形状,例如:
var shapes:Sprite = new Sprite();
var shape:Shape = new Shape();
shape.graphics.beginFill(0xFF0000);
shape.graphics.drawCircle(0,0,100);
shapes.addChild(shape);
shape = new Shape();
shape.graphics.beginFill(0xFF0000);
shape.graphics.drawCircle(0,50,100);
shapes.addChild(shape);
shapes.alpha = 0.5;
shapes.blendMode = "layer";
如果您想使用一个对象(例如与自身相交的用户绘制形状)进行操作,则RC的答案将更好地适合您的需求。
flash用'绕组规则'确定图纸的哪些部分在填充区域内。在这种情况下,为圆圈创建的路径都朝着相同的方向发展,这使它们取消。
如果使用高级图形API,则可以更改绕组规则。不幸的是,这也意味着您失去了drawcircle方法的便利性,而必须使用曲线。
这是一个指南,可以帮助您开始使用高级图形API。