Мозг сломал... моих знаний недостаточно, чтобы осилить этот эффект в полной мере.
В данный момент единственное на что меня хватило это сделать динамические тени всех объектов относительно только 1го источника света... и то эти тени появляются в единственном экземпляре(для каждого объекта) по мере появления объектов на сцене т.е. через ADDED_TO_STAGE.
Можно ли хотя бы как то сделать приоритет между источниками света на который будут реагировать тени?
Условие: какой источник света ближе. относительно того и будут реагировать тени.
Как такое условие может выглядеть, если уже есть условие: если источник находится ближе 600 пикселей проявляется тень(уровень alpha меняется) и искажается относительно этого источника.
Как бы легко написать условие если речь идет об простых объектах, но в моем случает речь идет о массивах в циклах..
и такой вид работать не будит:

Код AS3:
if ((Point.distance(enAllPoint[i],lsAllPoint[q]) <= 600) && ((Point.distance(enAllPoint[i],lsAllPoint[q])<(Point.distance(enAllPoint[i],lsAllPoint[q])))
//или
if ((Point.distance(enAllPoint[i],lsAllPoint[q]) <= 600) && ((Point.distance(enAllPoint[i],lsAllPoint[q])<(Point.distance(enAllPoint[i],lsAllPoint[w])))
//enAllPoint - точки всех объектов от которых идет тень
//lsAllPoint- точки всех источников света
А вообще вот весь код.

Код AS3:
public function svetit(e:Event):void
{
for (var i:int=0; i<enAllPoint.length; i++)
{
enAllPoint[i] = new Point(enAll[i].x,enAll[i].y);
Shadows.shAll[i].x = enAllPoint[i].x;
Shadows.shAll[i].y = enAllPoint[i].y-1;
for (var q:int=0; q<lsAllPoint.length; q++)
{
lsAllPoint[q] = new Point(lsAll[q].x,lsAll[q].y);
if (Point.distance(enAllPoint[i],lsAllPoint[q]) <= 600)
{
mAngle = Math.atan2(lsAllPoint[q].y - Shadows.shAll[i].y,lsAllPoint[q].x - Shadows.shAll[i].x) * 180 / Math.PI;
dAngle = Shadows.shAll[i].rotation - mAngle;
if (dAngle > 180)
{
dAngle = -360 + dAngle;
}
else if (dAngle < -180)
{
dAngle = 360 + dAngle;
}
if (Math.abs(dAngle) < rotationSpeed)
{
Shadows.shAll[i].rotation -= dAngle;
}
else if (dAngle > 0)
{
Shadows.shAll[i].rotation -= rotationSpeed;
}
else
{
Shadows.shAll[i].rotation += rotationSpeed;
}
var lightX:Number = lsAllPoint[q].x;
var lightY:Number = lsAllPoint[q].y;
if (enAllPoint[i].x > lightX)
{
Shadows.shAll[i].scaleX = 1+((enAllPoint[i].x-lightX)/200);
}
else
{
Shadows.shAll[i].scaleX = 1+((lightX-enAllPoint[i].x)/200);
}
shadowB = enAllPoint[i].x - lightX;
shadowA = enAllPoint[i].y - lightY;
shadowC= Math.sqrt((shadowA*shadowA)+(shadowB*shadowB));
Shadows.shAll[i].alpha =(lightArea/shadowC)-lightPower;
}
else
{
Shadows.shAll[i].alpha =0;
}
}
}
}