0

我正在开发 flex 应用程序,应用程序的一部分是网格。应用程序应该是稍后的游戏编辑器。

下面的截图说明了我的问题:我想在此处放置图像,但似乎我没有足够的声誉。 这是屏幕截图的链接 橙色方形和红色三角形无关紧要。

下面这段代码是红色方块的 Sprite (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 回答