Графика - ошибка перекрытия или как? - PullRequest
0 голосов
/ 17 сентября 2010

У меня здесь довольно большой код ... Но, к счастью, его вообще не нужно упоминать. Это сводится к тому, что ... не удается? Таким образом, в итоге предполагается нарисовать два треугольника (используя AS3 Graphics). Он отлично работает с одним, но когда я помещаю туда второе, это выглядит странно. Я отследил отладку, и я думаю, что ошибка в графике - это мой вывод для реальных точек:

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

(х, у), два треугольника. Это привело бы к квадрату одного цвета (эти треугольники одного цвета) или, возможно, к квадрату, разделенному пополам, если бы я изменил цвета.

Будет ... Это не так.

Вместо этого я получаю ЭТО:

alt text

ИЛИ (что странно), когда я переключаю порядок, в котором нарисованы треугольники: alt text

...

Есть идеи, что происходит? Я читал на другом форуме, что функции beginFill и endFill должны вызываться до и после рисования каждой фигуры - очевидно, это то, что я делал даже до того, как посмотрел - цвет не будет отличаться в другом случае. Итак - есть идеи?

EDIT:

Графические вызовы выглядят так:

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();
}

1 Ответ

0 голосов
/ 18 сентября 2010

Первый gfx.lineTo должен быть gfx.moveTo.

...