私は Actionscript 3 にやや慣れていません。フラッシュで svg エクスポート/インポートを構築しており、プレビューを svg と同じように動作させる必要があります。フラッシュでは、パスが重なっている場合は削除されます。エリア全体を埋めるにはどうすればよいですか?
パスはこれで作成されます:
object.graphics.moveTo(xpos[i], ypos[i]);
object.graphics.lineTo(px, py);
結果は
私は Actionscript 3 にやや慣れていません。フラッシュで svg エクスポート/インポートを構築しており、プレビューを svg と同じように動作させる必要があります。フラッシュでは、パスが重なっている場合は削除されます。エリア全体を埋めるにはどうすればよいですか?
パスはこれで作成されます:
object.graphics.moveTo(xpos[i], ypos[i]);
object.graphics.lineTo(px, py);
結果は
これは、グラフィックス パスのワインディングが原因です。
ワインディング ルールの定義
flash.diplay.GraphicsPathWinding
Flash では、デフォルトのワインディング ルールは奇数偶数です。
を使用して作成されたグラフィックの場合は、drawPath にワインディングをdrawPath
追加GraphicsPathWinding.NON_ZERO
します。
import flash.display.GraphicsPathWinding;
graphics.drawPath(new <int>[], new <Number>[], GraphicsPathWinding.NON_ZERO);
lineTo()
、drawCircle()
、またはなどの便利なメソッドを使用して描画されたグラフィックスの場合、次のように、描画された形状ごとにdrawRect()
次のことができます。beginFill()
endFill()
var g:Graphics = graphics;
g.beginFill(0x123456)
g.drawRect(100, 100, 50, 50);
g.endFill();
g.beginFill(0x123456)
g.drawRect(125, 125, 50, 50);
g.endFill();
それ以外の:
var g:Graphics = graphics;
g.beginFill(0x123456)
g.drawRect(100, 100, 50, 50);
g.drawRect(125, 125, 50, 50);
g.endFill();