2009-09-14 59 views
2

這很簡單繪圖命令創建一個追溯紅色矩形11×11像素:的drawRect太大

_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);因爲這看起來像一個黑客。

+0

這是Flash處理矢量圖形的方式。這不是黑客。 – LiraNuna 2009-09-14 04:08:56

回答

3

當你繪製一個10x10 矩形,就像在你的第二個代碼片段中一樣,Flash會繪製你所期望的。但是在你的第一個片段中,你正在繪製一個向量邊一個10x10的矩形。理論上,Flash可以通過繪製圍繞10x10矩形的12x12邊緣,或通過繪製與10x10矩形(因此圍繞8x8矩形)重疊的10x10矩形來滿足該請求。在實踐中,閃光分開了差異,選擇在兩個邊緣上包圍形狀,並在另外兩個邊緣上重疊。但即使如此,如果您開始繪製半像素等,您可能會發現其行爲細微差異,因爲矢量繪製是一項複雜的業務,而且Flash的渲染器經過高度優化。

對於像素級控制畫線的位置,您應該分別使用moveTo()lineTo()來繪製它們。