drawRect太大了

时间:2009-09-14 03:47:25

标签: flash actionscript-3

这个非常简单的绘图命令可以创建一个11x11像素的跟踪红色矩形:

_sp.graphics.lineStyle( 1, 0xFF0000, 1, true, LineScaleMode.NORMAL, CapsStyle.NONE, JointStyle.MITER, 3 );
_sp.graphics.drawRect( 10, 10, 10, 10 );

制作10x10像素的秘诀是什么?

如果我使用相同的drawRect参数填充矩形,则结果为10x10像素:

_sp.graphics.beginFill( 0xFF0000, 1 );
_sp.graphics.drawRect( 10, 10, 10, 10 );
_sp.graphics.endFill( );

我宁愿不画drawRect(10,10,9,9);因为这似乎是一个黑客。

1 个答案:

答案 0 :(得分:3)

当您绘制10x10 矩形时,就像在第二个代码段中一样,Flash会绘制您期望的内容。但是在你的第一个片段中,你正在绘制一个矢量边围绕一个10x10的矩形。理论上,Flash可以通过绘制围绕10x10矩形的12x12边缘,或者通过绘制与10x10矩形重叠的10x10矩形(因此围绕8x8矩形)来满足该请求。在实践中,Flash分割差异,选择在两个边缘上包围形状并在另外两个边缘上重叠它。但即便如此,如果你开始使用半像素等等,你可能会发现行为略有不同,因为矢量绘图是一项复杂的业务,而Flash的渲染器是高度优化的。

对于绘制线条的位置的像素级控制,您应该使用moveTo()lineTo()单独绘制它们。

相关问题