2012-04-05 3 views
2

私はSpark:Pathを使ってFlexでパスを描いています。円の形でパスを引く(マスクを外す?)

Iは、次の画像のように、このパスから円形状を減算する:

enter image description here

(パスは黒と広い)

任意のアイデア?

Shapeオブジェクトを使用してマスクを作成しようとしましたが、円形の穴があるマスクを作成できませんでした。

答えて

8

見つけました。

マスクは使用していません。

私はPathを取り、その周りGroupを包ん:

<s:Group blendMode="layer"> 
    <s:Path id="connector" ... /> 
    <s:Ellipse id="hole" blendMode="erase"> 

私は「層」にblendModeを設定するとするBlendMode erase

+1

良いflex-yソリューション。 – shanethehat

+0

私は今日何か新しいことを学びました。これらのブレンドモードのいずれかについて知らなかった。 – RIAstar

2

あなただけのGraphicsクラスのcurveTo()方法使用し、このためにマスクを使用する必要はありません:これは明らかではありません

enter image description here

var shape1:Shape = new Shape(); 
shape1.graphics.beginFill(0x000000); 
shape1.graphics.moveTo(0,0); 
shape1.graphics.lineTo(80,0); 
shape1.graphics.curveTo(110,30,140,0); 
shape1.graphics.lineTo(300,0); 
shape1.graphics.lineTo(300,20); 
shape1.graphics.lineTo(0,20); 
shape1.graphics.lineTo(0,0); 
shape1.graphics.endFill(); 

あなたを与えますあなたの正確な寸法を使用して、しかし原則を実証します。

+0

と後にパスを楕円を追加しました私は描いていませんよシェイプと一緒に - 私はただそれでマスクしようとしています。私のパスオブジェクトはSpark:Pathであり、Spark:パスにする必要があります。これはフィルタを追加するためです。そのため、このPathオブジェクトは円形の中に「噛む」ことができます。今はっきりしていることを願っています。 –

+0

@gigantt - Flex関連の仕様についてはわかりませんが、より一般的に言えば、パスの寸法を使用して上記のコードを使用して形状の寸法を設定できます。次に、この形状をマスクとしてパスに適用します。うまくいけばそれはSpark:Pathでも使えます。 – shanethehat