![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2012
Сообщений: 166
|
Вот в вашем примере аналогично идет постоянное создание shadow_mc без зачистки лишних теней, таким образом образуется шлейф от тени на сцене. А как сделать так чтобы отслеживание было постоянным и создание shadow_mc было либо единичным, либо контролировалось количество экземпляров на сцене путем удаления лишних.
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Надо класс писать, который все объекты должны расширять. В этом классе описать методы для добавления тени и удаления.Вы же не собираетесь из главного класса запихивать один и тот же мувик во все объекты? Тень же у всех разная, да и анимироваться должна, показывать ходьбу и прочее вместе с объектом. Тут нет смысла пытаться сделать "сначала по-простому". Класс, методы в любом случае нужны сразу.
При сортировке, во внешнем цикле, когда берете объект из массива сразу вызываете у него удалитьТени(), например. А потом уже запускаете цикл по источникам и в нем добавляете новые тени. Но я бы так наверное не стал делать. А может, и стал бы) Собственно, для такого приложения лучше MVC использовать. Но это Вам уже не раз говорили.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2012
Сообщений: 166
|
Мозг сломал... моих знаний недостаточно, чтобы осилить этот эффект в полной мере.
В данный момент единственное на что меня хватило это сделать динамические тени всех объектов относительно только 1го источника света... и то эти тени появляются в единственном экземпляре(для каждого объекта) по мере появления объектов на сцене т.е. через ADDED_TO_STAGE. Можно ли хотя бы как то сделать приоритет между источниками света на который будут реагировать тени? Условие: какой источник света ближе. относительно того и будут реагировать тени. Как такое условие может выглядеть, если уже есть условие: если источник находится ближе 600 пикселей проявляется тень(уровень alpha меняется) и искажается относительно этого источника. Как бы легко написать условие если речь идет об простых объектах, но в моем случает речь идет о массивах в циклах.. и такой вид работать не будит: 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- точки всех источников света 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; } } } }
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|