0

私はフレックスアプリケーションに取り組んでおり、アプリケーションの一部はグリッドです。アプリは後でゲームエディタになるはずです。

私の問題は次のスクリーンショットで示されています。ここに画像を配置したかったのですが、十分な評判がないようです。 ここにスクリーンショットへのリンクがあります オレンジのような正方形と赤い三角形は関係ありません。

以下のこのコードは、赤い四角のスプライト(DisplayObjectContainer)です。私はflexを使い始めており、そのグリッドを非常に迅速に実行したかったので、コードは乱雑です。

public class Board extends Sprite
{
    var board:Array;

    public function Board(blockLength:Number)
    {
        super();
        x = 0;
        y = 0;
        // Setting up two dim array
        board = new Array(10);
        for (var k:int = 0; k < board.length; k++) 
        {
            board[k] = new Array(10);
        }

        // Orange-like box
        graphics.lineStyle(1, 0xA3A3A3);
        graphics.beginFill(0xCCAA00); 
        graphics.drawRect(x,y,100, 100);
        graphics.endFill(); 

        // red blocks
        for (var i:int = 0; i < 10; ++i) 
        { 
            for(var j:int = 0; j < 10; ++j)
            {
                var block:Block = new Block(i*blockLength, j*blockLength);  
                board[i][j] = block;
                this.addChild(block);
                block.drawBlock(blockLength);                   
            }
        }           
    }
}

赤い四角は次のように定義されています。

public class Block extends Shape
{

    public function Block(x:Number, y:Number)
    {
        super();
        this.x = x;
        this.y = y;
    }

    public function drawBlock(length:Number)
    {
        graphics.lineStyle(1, 0xB3B3B3);
        graphics.beginFill(0xFF0000); 
        graphics.drawRect(x,y,length, length);
        graphics.endFill();
    }
}

なぜギャップがあるのか​​、私には本当にわかりません。コードはほとんどなく、非常に明白なものが欠けているように感じます。ボードオブジェクトは、初期化後にステージに追加されます。

赤いブロックの間にギャップがあるのはなぜですか?

4

1 に答える 1

2

あなたが疑うかもしれないように答えるのは簡単です-あなたはこれらのギャップを作っています:)。

それを変更してみてください:

graphics.drawRect(x,y,length, length);

それに:

graphics.drawRect(0,0,length, length);

なんで?

最初に、正方形の登録ポイントの位置を設定します。

    this.x = x;
    this.y = y;

ただし、その登録ポイントに対してrectの位置を設定します。

graphics.drawRect(x,y,length, length);

それがギャップを作った。

于 2012-05-19T19:24:04.020 に答える