2010-09-17 15 views
0

我在這裏有一個相當大的代碼......但幸運的是,根本不需要提及。它歸結爲什麼......失敗了?所以,最終這應該繪製兩個三角形(使用AS3圖形)。它適用於一個,但是當我在那裏放一秒時,它看起來很奇怪。我痕量調試它,我認爲是錯誤的圖形 - 這是我得出的實際點輸出:圖形 - 重疊的錯誤還是什麼?

DRAW 
- POINT (50 , -50) 
- POINT (-50 , 50) 
- POINT (50 , 50) 
DRAW 
- POINT (-50 , -50) 
- POINT (50 , -50) 
- POINT (-50 , 50) 

(X,Y),兩個三角形。這將導致一種顏色的正方形(這些三角形是一種顏色),或者如果我要改變顏色,則可能是正方形的一半。

會......不。

相反,我得到這個:

alt text

OR(這是奇怪),當我切換,其中三角形繪製的順序: alt text

...

有什麼想法發生了什麼? 我已經閱讀過另一個論壇,其函數beginFill和endFill應該在繪製每一個形狀之前和之後被調用 - 顯然這就是我在查看之前所做的 - 顏色不會有別於其他的方式。那麼 - 有什麼想法?

編輯:

的圖形調用這個樣子:

for (var vi:int = 0; vi < triangles.length; vi++){ 
    gfx.beginFill(0xFF0000, 0.5 + (0.5 * vi)); 
    trace("DRAW"); 
    trace("- POINT (" + triangles[vi].points[0].x + " , " + triangles[vi].points[0].y + ")"); 
    trace("- POINT (" + triangles[vi].points[1].x + " , " + triangles[vi].points[1].y + ")"); 
    trace("- POINT (" + triangles[vi].points[2].x + " , " + triangles[vi].points[2].y + ")"); 
    gfx.lineTo(triangles[vi].points[0].x, triangles[vi].points[0].y); 
    gfx.lineTo(triangles[vi].points[1].x, triangles[vi].points[1].y); 
    gfx.lineTo(triangles[vi].points[2].x, triangles[vi].points[2].y); 
    gfx.lineTo(triangles[vi].points[0].x, triangles[vi].points[0].y); 
    gfx.endFill(); 
} 
+0

對Graphics對象的實際調用會很有幫助。 – Aaron 2010-09-18 01:22:19

+0

增加了他們...這是一個實際的錯誤還是? – 2010-09-18 09:44:44

回答

0

第一gfx.lineTo應該是一個gfx.moveTo

+0

哦,現在我明白了。 :D忘記在每個三角形之前調用moveTo ...這會導致從上一個三角形的最後一個點開始的一條線。不管怎麼說,還是要謝謝你。 – 2010-09-18 12:50:31