Форум 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=100292)

RomLex 23.08.2007 19:45

Радио волны!
 
Привет!
Делаю сейчас радио волны! Конечно можно все нарисовать и проанимировать! Но мне очень хочется посмотреть на код!
Значит так:
Есть мувик волны, в нем шейп-анимация типа маштабируется!
вот код который я вставляю в 1 кадр:
Код:

attachMovie("volna","volnaa",1,{_x:276, _y:16.2});
        volnaa.onEnterFrame = function()
                {
                if (volnaa._alpha>=0)
                {
                        volnaa._alpha -= 1;
                } else {
                        removeMovieClip("volnaa");
                }
                };

это все работает!
Мне надо его зацыклить скажем так:
Код:

function volna() {
        attachMovie("volna","volnaa",2,{_x:276, _y:16.2, _alpha:50});
        volnaa.onEnterFrame = function() {
                if (volnaa._alpha>=0) {
                        ima._alpha -= 1;
                } else {
                        removeMovieClip("volnaa");
                        volna();
                }
        };
}
volna();

но это не то что мне нужно! в этом примере новая волна появляется после удаления предыдущей.

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

Прошу помощи!

Kikasso 23.08.2007 20:01

Цитата:

Сообщение от RomLex
в этом примере новая волна появляется после удаления предыдущей.

Само собой, ведь вы их аттачите с одним и тем же именем и на один и тот же уровень.

__ant 23.08.2007 20:08

С помощью setInterval, а аттачить с разными именами и уровнями.

Mr. Fixit 23.08.2007 20:19

используй:
Код:

for(var i=0, i<4; i+=1)
setInterval(createVolna, 1000);

пусть твоя функция создает сразу 4 волны. и Все би ок!

RomLex 23.08.2007 20:32

Так понятно! вот и вопрос!

подскажите ка правильно написать! вернее совместить "i" вместе с этим цыклом!

RomLex 23.08.2007 20:34

Цитата:

Сообщение от Mr. Fixit
используй:
Код:

for(var i=0, i<4; i+=1)
setInterval(createVolna, 1000);

пусть твоя функция создает сразу 4 волны. и Все би ок!

куда именно это вставить? не понимаю :eek:

RomLex 23.08.2007 20:40

и еще почему alhpa делаю всего - 1, а в трейсе мне пишет:
48.828125
47.65625
46.484375
45.3125
44.140625
42.96875
41.796875
40.625

в чем дело?????

Mr. Fixit 23.08.2007 21:06

Цитата:

Сообщение от RomLex
куда именно это вставить? не понимаю :eek:

это не вставляй, а используй.

Цитата:

а в трейсе мне пишет
значит в коде неправильно написано.. что-то.
Или перезагрузи Flash.

RomLex 23.08.2007 21:16

Вложений: 1
Это понятно, что эти вещи и надо узать. Я делаю так:
Код:

function volna1() {
        for (i=1; i<=4; i++) {
                xxx = "ima1"+i;
                trace(xxx);
                attachMovie("aura_all",xxx,i,{_x:276+(10*i), _y:16.2, _alpha:50});
                xxx = this.onEnterFrame=function () {
                        if (xxx._alpha>=0) {
                                xxx._alpha -= 1;
                                trace(xxx._alpha);
                        } else {
                                removeMovieClip(xxx);
                        }
                };

        }
}
setInterval(volna1(),100000);

и сразу отключается onEnterFrame=function () пробывал писать просто xxx.onEnterFrame=function () {
тоже не работает!

ну каже быть, не ужели тежелый вопрос я задаю?

и на счет альфы посылаю голый клип, совсем простой, вот посмотри что пишет он в трейсе?!!!

Mr. Fixit 23.08.2007 21:21

ты пиши или setInterval или onEnterFrame.

Отладчик выводит так потому что ты используешь сразу эти две функции.

RomLex 23.08.2007 21:23

А если сразу обозначить сгенирированное имя вот так:
Код:

function volna1() {
        for (i=1; i<=4; i++) {
                xxx = "ima1"+i;
               
                attachMovie("aura_all",xxx,i,{_x:276+(10*i), _y:16.2, _alpha:50});
                trace(xxx);
                ima11.onEnterFrame=function () {
                        if (ima11._alpha>=0) {
                                ima11._alpha -= 1;
                                trace(ima11._alpha);
                        } else {
                                removeMovieClip(ima11);
                        }
                };

        }
}
setInterval(volna1(),100000);

То тут сразу видно, что первая волна изменяет пораметр альфа и исчезает!!!

Вы мне подскажите главное как для ХХХ передать onEnterFrame?

RomLex 23.08.2007 21:37

Цитата:

Сообщение от Mr. Fixit
ты пиши или setInterval или onEnterFrame.

Отладчик выводит так потому что ты используешь сразу эти две функции.

но я вывожу onEnterFrame для созданного клипа а setInterval для вызова функции, не понимаю в чем проблема?

Mr. Fixit 23.08.2007 22:41

вставь...
Код:

function create () {
        for (var i = 0; i<4; i += 1) {
                _root.attachMovie ("aura", "aura_"+i, i, {_x:276+(10*i), _y:160, _alpha:50});
        }
}
function process () {
        for (var i = 0; i<4; i += 1) {
                if (_root['aura_'+i]._alpha>0) {
                        _root['aura_'+i]._alpha -= 1;
                } else {
                        removeMovieClip (_root['aura_'+i]);
                        create ();
                }
        }
        updateAfterEvent ();
}
setInterval(process, 10);


Mr. Fixit 23.08.2007 22:45

ps: выносить ссылку на function create () под setInterval(process, 10) не надо, так как в цикле if та ссылка и начинает работу, при ложном условии операнда.

RomLex 24.08.2007 13:26

все правильно, но мне нужно, как бы по-понятней выразится! Вот смотри, в цикле ФОР появляются сразу 4 волны, да. Надо чтоб они не сразу появлялись а с интервалом. Скажем у волны есть жизнь 3 сек, т.е. пока она не станет прозрачной! И следующая волна должна появляться те тогда, когда пред. волна исчезнет а скажем через 0,5 сек. после появления пред. волны.
Вот что мне надо! :confused:

RomLex 24.08.2007 14:11

Мне надо что то вроде этого:

Код:


i = 1;
function create() {
        xxx = "aura_"+i;
        _root.attachMovie("aura_all",xxx,i,{_x:276, _y:160, _alpha:50});
        i++;
        if (_root.xxx._alpha>0) {
                _root.xxx._alpha -= 1;
                trace("alpha"-i);
        } else {
                removeMovieClip(_root.xxx+i);
        }
}
setInterval(create,500);

в этом примере волны появляются как надо! НО: не работает IF, а соответственно волны не исчезают, клип нагружается, вобщем получается каша... Вопрос: как мне заставить условие выполняться?


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

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