1

プロジェクト用のマップ エディターを作成していますが、六角形を描画して単色で塗りつぶす必要があります。私は正しい形をしていますが、私の人生では、それを埋める方法を理解することはできません. それがShape、Sprite、またはUIComponentであるかどうかが原因であると思われます。ポリゴン自体について私が持っているものは次のとおりです。

import com.Polygon;
import mx.core.UIComponent;

public class greenFillOne extends UIComponent {
    public var hexWidth:Number = 64;
    public var hexLength:Number = 73;

    public function greenFillOne() {
        var hexPoly:Polygon = new Polygon;
        hexPoly.drawPolygon(40,6,27+(hexWidth*.25),37,0x499b0e,1,30);
        addChild(hexPoly);
    }
}
4

2 に答える 2

6

Polygon クラスは標準の Adob​​e ライブラリではないため、詳細はわかりません。ただし、標準のフラッシュ API を使用することを前提とすれば、関数を拡張するためにコードを追加することは問題ありません。/関数のgraphics.beginFill前に a を実行していることを確認する必要があります。で終了します。graphics.lineTographics.moveTographics.endFill

例えば、

var g:Graphics = someShape.graphics;
g.beginFill(0xFF0000,.4); // red, .4 opacity 
g.moveTo(x1,y1);
g.lineTo(x2,y2);
g.lineTo(x3,y3);
g.lineTo(x1,y1);
g.endFill();

これにより、.4 赤で塗りつぶされた三角形が描画されます。

于 2009-10-08T22:31:03.680 に答える
1

グレンへのコメントとして回答すると文字数制限を超えてしまうため、ここに記載します。私のアクション スクリプト ファイルは UIComponent を拡張します。変数 hexPoly:Polygon = new Polygon; を作成したとき。六角形の輪郭をレンダリングしますが、何をしても塗りつぶしません。polygon.as を調べてメソッドを複製しましたが、スプライトとして機能しました。そのため、ポリゴンをスプライトとしてラップする方法を見つけるか、そのままにしておく必要があります。

var hexPoly:Sprite = new Sprite;
hexPoly.graphics.beginFill(0x4ea50f,1);
hexPoly.graphics.moveTo(xCenter+(hexWidth*.25)+Math.sin(radians(330))*radius,offset+(radius-Math.cos(radians(330))*radius));
hexPoly.graphics.lineTo(xCenter+(hexWidth*.25)+Math.sin(radians(30))*radius,offset+(radius-Math.cos(radians(30))*radius));
hexPoly.graphics.lineTo(xCenter+(hexWidth*.25)+Math.sin(radians(90))*radius,offset+(radius-Math.cos(radians(90))*radius));
hexPoly.graphics.lineTo(xCenter+(hexWidth*.25)+Math.sin(radians(150))*radius,offset+(radius-Math.cos(radians(150))*radius));
hexPoly.graphics.lineTo(xCenter+(hexWidth*.25)+Math.sin(radians(210))*radius,offset+(radius-Math.cos(radians(210))*radius));
hexPoly.graphics.lineTo(xCenter+(hexWidth*.25)+Math.sin(radians(270))*radius,offset+(radius-Math.cos(radians(270))*radius));
hexPoly.graphics.endFill();
addChild(hexPoly);
于 2009-10-09T16:11:45.817 に答える