我正在开发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。
为什么红色块之间存在间隙?
答案 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);
这造成了差距。