Переписал свой код по созданию частиц, теперь удобней с ним работать (двумерный массив).
Чтобы избежать этого "косяка" с зависанием стандартного Твина я решил очищать массив как он заполняется под сотню Спрайтов и их твинов.
По коду видно, я хотел бы, чтобы спрайты и твины создавались снова с 0 в массиве, после того, как их число дойдет до сотни.
Но, увы и ах, ссылка в массив не заменяет старые твины и спрайты. Как мне сделать проверку на существование уже этих твинов и спрайтов и полностью их стереть?
Вы понимаете, думаю, о чем я. Помните игры, экшны, где следы от пуль на стене не бесконечные. Старые особенно. Например Half-Life 1. Там если есть к примеру 50 следов, следующие следы появляются с удалением самых старых следов.
Так же и я хочу сделать. Частиц 100 - начинает с начала. Самые первые частицы и следующие за ними по очереди исчезают.
На выводе - непрерывное создание частиц, никаких зависаний.
Вот код, тоже можно протестировать:

Код AS3:
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.events.Event;
import flash.display.MovieClip;
import flash.display.Sprite;
var where:String = new String();
var c_radius:Number = new Number();
var _ypos:Number = new Number();
var ground:Number = new Number();
var howlong:Number = new Number();
var howlongdrop:Number = new Number();
var maxnumber:Number = new Number(20);
var totalnumber:Number = new Number(0);
var particles:Array = new Array();
ground = stage.stageHeight;
function startspawning()
{
addEventListener(Event.ENTER_FRAME, spawn);
}
function stopspawning()
{
removeEventListener(Event.ENTER_FRAME, spawn);
}
function spawn(e:Event)
{
if (totalnumber > maxnumber)
{
totalnumber = 0;
}
howlongdrop = Math.ceil(Math.random() * 300) / 100;
howlong = Math.ceil(Math.random() * stage.stageWidth);
_ypos = Math.ceil(Math.random() * stage.stageHeight);
c_radius = Math.ceil(Math.random() * 10);
particles[totalnumber] = new Array();
particles[totalnumber][0] = new Sprite();
particles[totalnumber][0].graphics.beginFill(0x000000, 2);
particles[totalnumber][0].graphics.drawCircle(0,0,c_radius);
particles[totalnumber][0].graphics.endFill();
particles[totalnumber][0].y = _ypos;
particles[totalnumber][0].alpha = Math.ceil(Math.random() * 100) / 100;
addChild(particles[totalnumber][0]);
particles[totalnumber][1] = new Tween(particles[totalnumber][0],"x",Strong.easeOut,particles[totalnumber][0].x,particles[totalnumber][0].x + howlong,2,true);
particles[totalnumber][2] = new Tween(particles[totalnumber][0],"y",Bounce.easeOut,particles[totalnumber][0].y,ground,howlongdrop,true);
totalnumber++;
}
startspawning();
Добавлено через 2 минуты
Для теста можете условие про totalnumber>maxnumber полностью удалить - посмотрите, зависания исчезнут, но все начнет заполняться пока не затормозит как невесть что.
Хотелось бы эти вот "зависалки" и удалять
Добавлено через 1 час 11 минут
По сути существует два варианта. Оставить массив расширяться до бесконечности просто делая removeChild у каждой частицы после окончания движения, или же сделать как я хотел - с 100 элементов максимум.
Первый вариант уже есть готовый, но я не знаю, чем чревато бесконечно расширение массива и по моему более оптимизированный вариант с удалением старых, только я не знаю как.