Я думаю, я знаю, почему у вас проблемы. Вот эта строка:
for ( i = 0; i < shapes.length; i++ )
Вы говорите i = 0
вместо var i = 0
.
Это означает, что i
является глобальным.
Это означает, что i
в draw_coords
фактически забивает вашу i
в draw()
!
Итак, вы начинаете с первого объекта в draw()
с i
, равным 0
, затем вы входите в draw_coords, и он принимает ту же самую переменную i
и увеличивает ее до чего-то большого, например 10
. Затем, когда первый draw_coords завершен, он возвращается к рисованию и видит, меньше ли i
, который сейчас равен 10
, чем shape.length (что может быть чем-то вроде 6). Это не меньше, поэтому цикл for в draw
считает себя выполненным!
Вы определенно не хотите этого, поэтому поменяйте оба цикла for на var:
for (var i = 0;
И проблема, с которой вы здесь столкнулись, исчезнет.