Предполагая, что вы раскомментируете эту строку TweenMax, функция drawLine()
вызывает moveCircle()
..., которая добавляет анимацию для каждого круга, которая снова вызовет drawLine()
- и все повторяется. Я предполагаю, что это добавляет тонны * слушателей и подростков, что приводит к сбою. Вы должны добавить проверку, которая предотвращает добавление других анимаций, в то время как анимация для этого круга еще выполняется.
Также, lineCanvas.graphics.clear();
должен быть перемещен перед циклом, иначе он очистит линии, нарисованные для других кругов, если они есть.
Подходящие библиотеки хороши, вы должны использовать одну, если можете. Они очень помогают даже с простой задачей анимации.
Изменить:
* Мне нравятся цифры. Предполагая, что частота кадров составляет 24 кадра в секунду, вы действительно получаете очень много подростков. Растет экспоненциально. 1 анимация при инициализации, 2 анимации в первом кадре, 4 во втором и т. Д. Когда первая анимация закончится (если бы она делала это до аварии), у вас получилось бы симпатичное число бегущих 2 ^ 24-1. 16777215 подростков. Для каждого круга.
А если серьезно, чтобы исправить это, вы можете использовать TweenMax.isTweening(circleArray[i])
, чтобы проверить, запущена ли уже анимация движения. Я думаю drawLine
не должен звонить moveCircle
. Функция moveCircle
теперь должна вызываться только один раз, чтобы запустить анимацию движения - или, если вы хотите, чтобы она повторялась, каждый раз, когда анимация завершается (onComplete
).