为什么形状之间存在间隙?

时间:2012-05-19 19:00:00

标签: actionscript-3 flex

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

我的问题通过以下屏幕截图说明: 我想在这里放置图像,但似乎我没有足够的声誉。 here is link to screenshot 橙色方形和红色三角形并不重要。

下面的代码是红色方块的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();
    }
}

我真的不知道为什么会有差距。代码非常少,我觉得我错过了一些非常明显的东西。 Board对象在初始化后添加到stage。

为什么红色块之间存在间隙?

1 个答案:

答案 0 :(得分: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);

这造成了差距。