Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   дым. Максимально реалистичный... (http://www.flasher.ru/forum/showthread.php?t=76301)

DCat 02.03.2006 18:59

дым. Максимально реалистичный...
 
http://www.betaruce.com/flash_swf/smoke_3.swf
Как сделать что-нибудь подобное...
Поделитесь уроком плиз... =)

inspace 02.03.2006 19:41

Похоже на кучу круглых градиентных мувиков с меняющимися альфами + фильтры. Движение и радиусы рандомно похоже делается... Мне так кажется.

aksios 02.03.2006 23:06

Цитата:

Сообщение от inspace
Похоже на кучу круглых градиентных мувиков с меняющимися альфами + фильтры. Движение и радиусы рандомно похоже делается... Мне так кажется.

Да да у меня есть этот компонент - все как раз как ты сказал :D

DCat 03.03.2006 00:31

Нет там фильтров... только альфа... и AS...
Дайте плиз у кого есть исходник такого безобразия... желательно с комментами... я конечно могу попытаться с этим разобраться, но если кто-нибудь посодействует в разбирательстве буду оч.признателен...

inspace 03.03.2006 00:50

Я честно не представляю, как можно создавать белые объекты без фильтра.

DCat 03.03.2006 02:41

Какие белые объекты?
Дым чтоли?

Этот дым состоит из кружков с радиальным градиентом... которые аттачатся через attachMovie... (по крайней мере это было бы правильней)
И красные тоже там есть...

Я в программировании не силен, к сожалению... навыки у меня есть, но их недостаточно... Сказать как сделано могу, но написать это врядли осилю =(
осилю, но на это уйдет масса времени... =((

Есть замечательный кружечек с радиальным градиентом... я надеюсь все себе представляют его... (альфа в центре 100%, к краю снижается до 0%)
Его надо размножить и из одной точки разводить в разные стороны, так, чтобы он расходился к верху на угол, скажем, 30°... (это в принципе включает в себя их увеличение/трансформацию, но ее будет не достаточно)
Вот как сделать это?
Как сделать так, чтобы этих кружечков было море и они абсолютно рандово совершали свое движение вверх?
Естетсвенно и альфу нужно менять в пределах от 100 до 0 по мере возвышения... (рассеивание дыма)...

Было бы неплохо, если бы дым еще двигался не по прямой, а по синусоиде...
в примере он движется не прямо вверх, а немного по кривой...

Вот как?

inspace 03.03.2006 05:17

1) "Этот дым состоит из кружков с радиальным градиентом"
Может LCD монитор мне так показывает, но у дыма есть прожилочки. Это действие фильтра.
2) "я надеюсь все себе представляют его" И не только это представляют ;)
3) Создаешь функцию которая каждые N секунд аттачит мувики на сцену и передаёт этим мувикам параметры(скажем начальные радиусы) Три мувика - это потому что там кажется три вида мувиков: два красных одын белый. При каждом вызове функции уменьшаешь альфа и меняешь координату на DX = 2-4*Math.random. В данном случае 2 амплитуда. Когда альфа становится у мувика меньше нуля, уничтожаешь мувик, таким образом не плодишь клипы на сцене.
4) Было бы неплохо, если бы дым еще двигался не по прямой, а по синусоиде...
Ага, а ещё неплохо было бы турбулентности сделать ;)

inspace 03.03.2006 05:19

Забыл. ещё уменьшаешь радиус =) Вообще задача не такая сложная как ты думаешь.

DCat 03.03.2006 07:40

пример-то есть?

Потому что мои эксперименты привели к тому что в отдельной сцене все работает... перевожу все это в MC другой сцены - не работает (по крайней мере я не вижу этих кругляшей приаттаченых)... Надо сделать дым из труб... был бы пример... хотябы простой... было бы проще понять как его строить =(
Разбор дыма из примера в принципе дает понимание того, что надо сделать, но оно не работает в MC...
А я хочу собственный дым, чтобы не тырить ни у кого и не брать готовых... я хочу понять как люди это делают... поэтому и прошу пример =(

1) прожилки?
Там клубы круглые и овальные... кружки трансформируются еще +ом...

AxelRB 03.03.2006 08:42

А если вместо радиальных кружочков сделать битмап альфеный (фотошопное облако) и при движении его вращать, то будет вообще зашибись. Я так облака делал - выглядит ох-но. Правда тормоза были такие... 2-5 fps не больше показывало :((

veterok4 03.03.2006 09:22

Хм...
 
Цитата:

Сообщение от DCat
http://www.betaruce.com/flash_swf/smoke_3.swf
Как сделать что-нибудь подобное...
Поделитесь уроком плиз... =)


Эх, народ нонче пошёл не пуганный декомпилером:)...
Спокойенько бы всё это дельце "заграббил"... и таскал от туда код...

DCat 03.03.2006 10:07

Цитата:

Сообщение от AxelRB
А если вместо радиальных кружочков сделать битмап альфеный (фотошопное облако) и при движении его вращать, то будет вообще зашибись. Я так облака делал - выглядит ох-но. Правда тормоза были такие... 2-5 fps не больше показывало :((

Уж правильней тогда было бы сделать облако во Flash'е... разблурить можно все что угодно в пинципе... и без участия битмапа... менее весомо будет...


> Эх, народ нонче пошёл не пуганный декомпилером
А чего его бояться-то? К тому же декомпилер был практически всегда...
Меня до сих пор удивляет народ, который решает проблему закрытости кода HTML =))
Будто бы там невероятные открытия какие-то делают =)))
1. Кому надо тот уже давно посмотрел что там и как...
2. тупо копировать то, что уже сделано кем-то для других целей... в моей задаче нужен дым, но немного другой (угол нужно поменять наклона + интенсивность) поэтому я и хочу разобраться как делать... а не тупо брать заготовку...
К тому же заготовка не работает в MClip'е... в главной сцене работает при этом нормально...

kayama 03.03.2006 11:09

Заходишь сюда и ищеш "steem" или "steam" в разделе movies/actionscript.

DCat 04.03.2006 16:08

Интересно, каким это образом Steam, когда мне нужен Smoke =)

CREDO 04.03.2006 18:06

Вложений: 1
вот неплохо сделанно

CREDO 04.03.2006 18:09

Код:

function createSmoke () {
    mc = attachMovie ("smoke","smoke" + (++d),d)
    mc._x = Stage.width / 2
    mc._y = Stage.height
    mc._alpha = 0
    mc._xscale = Math.random() * 70
    mc._yscale = Math.random() * 70
    mc.vx = 0
    mc.vy = Math.random() * 5 + 5
    mc.isFadingIn = true
    mc.fadeInRate = Math.random() * 5 + 5
    mc.fadeOutRate = Math.random() * 5 + 5
    mc.fadeInGoal = Math.random() * 50 + 50
    mc.XscaleRate = Math.random() * 5 + 5
    mc.YscaleRate = Math.random() * 5 + 5
    mc.scaleGoal = Math.random() * 80 + 20
    mc.onEnterFrame = smoke
    }
function smoke () {
    this.vx = this.vx + vwind
    this._x = this._x + this.vx
    this._y = this._y - this.vy
    if (this.isFadingIn) {
        this._alpha = this._alpha + this.fadeInRate
        this._alpha >= this.fadeInGoal ?  (this.isFadingIn = false) :  null
        } else {
        this._alpha = this._alpha - this.fadeOutRate
        this._alpha <= 0 ?  undefined undefined :  null
        }
    this._rotation = Math.atan2(this.vy,this.vx) * 180 / Math.PI
    this._xscale = this._xscale + this.XscaleRate
    this._yscale = this._yscale + this.YscaleRate
    }
function createFire () {
    mc = attachMovie ("fire" + random(2),"fire" + (++d),d)
    mc._alpha = Math.random() * 100
    mc._x = Stage.width / 2
    mc._y = Stage.height
    mc._xscale = mc._yscale = Math.random() * 50 + 30
    mc.vx = 0
    mc.tx = mc._x + Math.random() * 20 - 10
    mc.vy = Math.random() * 5 + 12
    mc.scaleIn = true
    mc.scaleRate = Math.random() * 5 + 7
    mc.scaleGoal = Math.random() * 50 + 50
    mc.onEnterFrame = fire
    }
function fire () {
    this.tx = this.tx + vwind * 8
    this.vx = this.vx + (this.tx - this._x) * k
    this._x = this._x + this.vx
    this._y = this._y - (this.vy = this.vy - g)
    this._rotation = Math.atan2(this.vy,this.vx) * 180 / Math.PI
    this._xscale = this._xscale + this.scaleRate
    this._yscale = this._yscale + this.scaleRate
    if (this.scaleIn) {
        if (this._xscale >= this.scaleGoal) {
            this.scaleIn = false
            this.scaleRate = this.scaleRate * -1
            }
        }
        else if (this._xscale <= 0) {
            removeMovieClip(this)
            }
    }
setInterval (createSmoke,20)
setInterval (createFire,0)
setProperty ("",_quality,"LOW")
vwind = -0.3
g = 0.8
k = 0.1


DCat 05.03.2006 01:43

CREDO
Спасибо за пример =)

В коде не было необходимости... он у меня есть... уже давно расковырял этот дым... Только вот не знаю как его запихнуть в МСlip... запихнул, а он не работает =))

А строка this._alpha <= 0 ? undefined undefined : null
выдает ошибку... =)

KUZEN 05.03.2006 01:51

Код пихается в первый кадр рута ... а вообще для начала не мешалобы с азами разобраться, что бы не задавать глупых вопросов ...

DCat 05.03.2006 02:08

В чем конкретно заключается глупость моих вопросов?
с какими азами мне необходимо разобраться? =/

Тот пример, что я показал в первом посте этого топика действительно содержит код в первом и единственном кадре рута...
Но мне нужен дым, который бы запихивался в мувик...

Если никто кроме CREDO не может помочь примерами закрывайте тему... достойнее дыма в моем примере я пока не встречал... =(

KUZEN 05.03.2006 02:15

В том то и глупость, что не можешь сделать всё тоже только для мувика просто поменяв пути ....

DCat 05.03.2006 04:04

KUZEN
Гатство в том, что я могу все без понимания сделать... тупо скопировать, поменять пути и готово...
Но я хочу понять что и как... =)
+ может быть есть примеры каких других дымов... Хотя принцип одинаковый у всех...

Ладно... это флуд уже пошел...
Придется разбираться с тем, что есть... =(

Скажите только как поменять угол движения дымных клубов =)
чтобы двигались по дуге, а не прямо вверх...

sergwizard 05.03.2006 04:20

Вложений: 1
DCat, посмотри этот пример.

KUZEN 05.03.2006 05:01

Да в том то и дело что я предлогаю тебе для начало понять азы , а потом уже лезть в дым ... ладно замяли дело твоё, каждый поступает так как считает нужным ....

DCat 05.03.2006 07:01

sergwizard Спасибище... это почти то, что мне нужно =)

KUZEN Азы чего? =/
Не понимаю чего азы мне нужно понять?

KUZEN 05.03.2006 07:55

Да азы флеша ... покупаем книжку для чайников и читаем всё подряд, а не залезаем чёрт знает куда поковырявшись с флешом пару дней ...

DCat 06.03.2006 03:28

Ваапше-та уж как 2 года как ковыряюсь =)

Не всем же быть мега-программерами AS, чтобы разобираться с дымом... =))

australian incognito 06.03.2006 05:51

!!!
 
Вложений: 1
Привет!
Вот нашел в своей коллекции. А вообще на flashkit.com их еще больше.

KUZEN 06.03.2006 09:11

За 2 года не разобраться с путями ... мдя ... неверное два года , но раз в году )))

DCat 06.03.2006 10:24

australian incognito Спасибо Клевый огонь... только дыма как-то там нет =)

KUZEN
Такое чувство, будто бы ты сейчас пытаешься измерить кой-чего, а мне это вовсе не нужно... это никому не помогает и тебе не поможет тоже... Крутизной мы можем в других темах помериться... в дизайне например... Там я более компитентен... А здесь я прошу совета профов...
Если у меня не было необходимости такие вещи делать программно, и разбираться со всем подряд тупо нет времени, то это вовсе не обозначает что я глуп...

Если ты так хорошо знаешь предмет, то почему бы не помочь? Я же не прошу тебя писать готовый к употреблению код... если есть примеры, я бы хотел на них взглянуть - нет, так нет...
А смысла разводить флуд, а тем более кого-то обвинять в непрофессионализме не вижу... Это ничего никому не дает...

Жень Шень 06.03.2006 11:50

Вложений: 1
Привет!
А такой дым подойдет?
Написан для урока физики по теме "Удельная теплота сгорания на примере дров и каменного угля". Где какой дым, надеюсь, ясно.
Исходник великоват, поэтому "красоту" убрал.

DCat 06.03.2006 12:11

Спасибо... =)
Интересный дым...
Подойдет =)

Уже целая коллекция их собралась =)

KUZEN 06.03.2006 19:25

Цитата:

Сообщение от DCat
australian incognito Спасибо Клевый огонь... только дыма как-то там нет =)

KUZEN
Такое чувство, будто бы ты сейчас пытаешься измерить кой-чего, а мне это вовсе не нужно... это никому не помогает и тебе не поможет тоже... Крутизной мы можем в других темах помериться... в дизайне например... Там я более компитентен... А здесь я прошу совета профов...
Если у меня не было необходимости такие вещи делать программно, и разбираться со всем подряд тупо нет времени, то это вовсе не обозначает что я глуп...

Если ты так хорошо знаешь предмет, то почему бы не помочь? Я же не прошу тебя писать готовый к употреблению код... если есть примеры, я бы хотел на них взглянуть - нет, так нет...
А смысла разводить флуд, а тем более кого-то обвинять в непрофессионализме не вижу... Это ничего никому не дает...

Да никто не обвинял тебя в непрофессионализме и тягаться я ни в чём с тобой не собираюсь ... всё закончили этот бред ...

Lihachevich 06.03.2006 19:34

Люди, не дым а загляденье, только тормозит сильно.
А что если попробовать сделать подругому, попроще. Своткай как нить дым, нареж из облачков дыма много фрагментов, определи за каким облаком какие могут появлятся и сделай рандомное по списку их появление. Конечно тут тоже потребуется сделать функцию их движения (Помоему рандом плюс синус плюс направление подойдет)


Часовой пояс GMT +4, время: 10:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.