PDA

Просмотр полной версии : Дейстивительно хороший фeйepверк + вопрос.


ccwds
03.08.2007, 20:37
Нашел действительно хороший эффект:
http://www.flashkit.com/movies/Effects/Eye_Candy/Particle-Katnap_K-11810/index.php
По сравнению, с ним, все остальные флеш-интерпретации - детский лепет. А ведь клыент достаточно часто хочет такого (то ли музыки и цветов, то ли убить кого-то ;) ) - то юбилей на сайте, то с новым годом поздравить кого-то... :yahoo:
Наконец-то применяются фильтры!
Но вот чего я сам не смог, та это с налета сделать так, чтобы был возможен разноцветный салют. Чтобы каждый раз был разный цвет, когда прошлый потух, проблем нет, а вот чтобы щелкнуть несколько раз (щелчок не при чем, понятно, что можно по интервалу), но сам факт, чтобы на экране одновременно могли быть несколько взрывов разных цветов - этого я достичь не мог, слишком сильно все завязано на общей обработке частиц всего салюта.
Если есть гении, которые способны в памяти удержать все функции, как гроссмейстер при игре на многих досках, они могли бы помочь не только мне, но и получить полноценную заготовку для подобных случаев. :cool:

ccwds
06.08.2007, 14:37
Я, в принципе, поэтому и помещал в раздел "AS для профи"... :) (Это не обсуждение действий администрации ;) )

etc
06.08.2007, 14:46
Разделы разделены не по уровню обитающий, а по уровню вопросов.
Вы хотите, чтобы вашу работу сделали за вас? У вас есть исходник, разбирайте, пожалуйста. Будут конкретные вопросы — велкам.

Aziz Zaynutdinoff
06.08.2007, 15:04
интересно, где там фильтры применяются? хм…
Там обычный зелёный квадрат, который уходит _alpha = 100 --> 0, вот и весь GlowFilter (которого там нет :) )

+ ко всему он тормозит очень (как раз за счет использования большого кол-ва fade'ов) и очень сильно заметны квадраты, что дает эффекту абсолютную некрасивость чтоли.

ccwds
06.08.2007, 16:36
Aziz Zaynutdinoff GlowFilter там применяется. Причем достаточно интересно. Как раз это дает эффекту реалистичность. Ты сантиметров на 10 отодвинься от монитора, тогда квадраты в глаза бросаться не будут. :)

__etc Нет, я не прошу, чтобы сделали все за меня. Там просто GlowFilter применяется на весь fw_mc, где и находятся все частицы салюта. Я пробовал генерить несколько мувиков - типа fw_mc1 и fw_mc2, чтобы на них мог отдельно накладываться фильтр другого цвета, но не преуспел. Все равно одна из функций упрямо пишет в четный mc, когда надо в нечетный, к примеру.
То есть максимум, что бы мне хотелось, это разделить генерение салютов на два mc.
Грубо говоря, четные выстрелы генерятся в одном мувике, нечетные - в другом.

Ляксей
06.08.2007, 21:07
Простите за оффтоп, но мне кажется, что возможности данного эффекта немного преувеличины. Да смотриться симпатично, но для того чтобы считатьэто супер-пупер фейрверком, надо бы добавить ещё фич:
изменение цвета
вторичные взрывы
имитацию 3D
разные типы частичек и поведения
ну и прочих фенечег :)

ccwds
07.08.2007, 14:37
__etc, ну к примеру, вопрос, как распараллелить вычисления, которые ведутся все время по onEnterFrame, кроме как засунуть их два фрейма? Мне в голову даже листенера "выполнять с частотой кадров в мувике" не приходит. :o

screamge
07.08.2007, 16:24
А что там гениально сложного? Делайте массив из возможных цветом и далее при каждом нажатии считывайте следующий "нод" из массива. Если надо что бы цвета выдавались рендомно добавляете рэндом от 0 и до длины массива. Можно написать конечно и функцию (класс) отвечающий за генерацию цвета, но я сомневаюсь чтобы салют коричнего цвета был бы красив.

ccwds
07.08.2007, 18:18
screamge Там можно нажать три раза подряд (ну, точнее, сколько задашь.) Если нажимать после того, как один салют исчезнет, то конечно, можно делать другого цвета. Но вот добиться, чтобы вылетел салют другого цвета, пока предыдущий еще горит - сложно.
Там функции в onEnterFrame обслуживают все частицы на экране, поэтому в какую из функций не суй динамическое изменение цвета, цвет изменится одновременно у всех салютов на экране. :(

silin
07.08.2007, 19:19
ccwds, фактически ты уже ответил на свой вопрос: т.е. нужно, чтобы мувик с салютами обслуживал не массив систем частиц, а только одну (один салют), дальше либо на клик мыши повесить генерацию такого мувика (с кастомным цветом), либо заранее положить на сцену сколько надо таких мувиков (по числу максимально одновременно допустимых), а по клику инициализировать следующий (по кругу), опять же с нужным цветом..

ccwds
07.08.2007, 19:28
Так вот не сложно там продублировать хоть функции, хоть генерацию мувиков, я другого не представляю - как в этом исходнике блок, исполняющийся по onEnterFrame разрулить.

Ну вот то есть

onEnterFrame = function () {
// ну здесь была еще функция по нажатию, ее не указываю, ее можно откуда угодно по интервалу вызывать.
fw_bit.colorTransform(fw_bit.rectangle, fade);
// for all particles in the array
for (i in particles) {
currparticle = particles[i];
// draw the particle at its current location
fw_bit.setPixel32(currparticle.x, currparticle.y, particlecolor);
// move it for the next frame
positionParticle(currparticle);
for (j in currparticle.fArr) {
makeExplode_move(currparticle.fArr[j]);
if(currparticle.fArr[j].det==true){
currparticle.fArr[j] = null;
}
}
if(currparticle.exploded == true){
currparticle.x = Stage.width*2;
currparticle.y = Stage.height*2;
}
}
};

Как это хозяйство дублировать? Не по количеству цветов же в разных мувиках делать такие onEnterFrame-ы?

silin
07.08.2007, 19:47
несложно, как было сказано, нет там ничего запредельно сложного, но это работа, довольно кропотливая, которая требует времени..
почему ты думаешь, что кому-то приспичит отложить свои дела и сделать ее за тебя, потому что твой "клыент достаточно часто хочет.."?
хотя всякое бывает, есть смысл подождать..

ccwds
07.08.2007, 20:13
OK. Я просто думал, что существует какой-то более современный прием, использующий возможности последних флешей, которого я не знаю. Типа, "а засунь-ка ты эти функции вот куда".
Не, ну самый универсальный прием, куда это засунуть, я представляю.
Не подсказывайте. ;) ;) ;)

Еще раз перед всеми извиняюсь и повторяю, что у меня не было в мыслях, чтобы за меня сделали всю работу.