Форум 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)
-   -   Странный эффект работы 2х скриптов. (http://www.flasher.ru/forum/showthread.php?t=114912)

Mirzon 13.08.2008 13:27

Странный эффект работы 2х скриптов.
 
Здравствуйте!
В мувике для создания эффекта минералки скриптом прописано движение пузырьков Всё это в 3-х кадрах.
1-ый кадр:
Код:

maxobject = "250";
for (counter = 1; Number(counter) < Number(maxobject); counter = Number(counter) + 1)
{
    duplicateMovieClip("/round", "round" add counter, counter);
    setProperty("round" add counter, _x, 5 + random(995));
    setProperty("round" add counter, _y, 900 + random(50));
    scale = Number(50 + random(50)) + 10;
    setProperty("round" add counter, _xscale, scale);
    setProperty("round" add counter, _yscale, scale);
}

2-ой кадр:
Код:

for (counter = 1; Number(counter) < Number(maxobject); counter = Number(counter) + 1)
{
    setProperty("round" add counter, _x, getProperty("round" add counter, _x) + random(7) - 3);
    setProperty("round" add counter, _y, getProperty("round" add counter, _y) - (getProperty("round" add counter, _xscale) - 20) / 7 - 1);
    if (getProperty("round" add counter, _y) < 600)
    {
        setProperty("round" add counter, _x, 5 + random(995));
        setProperty("round" add counter, _y, 900 + random(50));
        scale = Number(50 + random(50)) + 5;
        setProperty("round" add counter, _xscale, scale);
                setProperty("round" add counter, _yscale, scale);
    }
}

3-ий кадр:
Код:

gotoAndPlay(_currentframe - 1);
Одновременно с этим в мувике при наведениимышки на пункт меню создается эффект вождение пальцем по воде. И для клипа с изображением пунктов меню прописывается:

Код:

onClipEvent (mouseMove) {
        n++;
        if (n == 5) {
                i++;
                duplicateMovieClip(_root.effect, i, i);
                setProperty("/" add i, _x, _root._xmouse);
                setProperty("/" add i, _y, _root._ymouse);
                n=0;
        }
}

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

Double 13.08.2008 14:29

Код:

duplicateMovieClip(_root.effect, i, i+300);
у Вас очень архаичный синтаксис.

Mirzon 13.08.2008 15:18

Double, спасибо Вам огромное, помогло. А Вы не могли бы объяснить причину такого поведения мувика и почему именно +300.

"у Вас очень архаичный синтаксис." :) Вы могли бы подсказать как можно оптимизировать или привести эти скрипты в человеческий вид? :)

Double 13.08.2008 15:30

можно и меньше ) но не на много ))) у вас 250 пузырьков, которые живут на слоях с 1го и выше. вот эти глубины для кругов на меню занимать и не нужно. в моём случае круги будут располагаться выше 300го уровня. изначально у Вас круги замещали пузырьки именно из-за того, что Вы их создавали на той же глубине, где жили пузыри.
о синтаксисе разговор очень долгий.
Код:

setProperty("round" add counter, _x, 5 + random(995));
теперь это пишут так:
Код:

this["round"+counter]._x = 5 + random(995);
да много чего поменялось со времён 4го флеша )))

Eric Gurt 14.08.2008 06:31

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

Замени коды на:

Код:

_root.maxobject = 250;
for (counter = 1; counter < _root.maxobject; counter++)
{
    duplicateMovieClip("/round", "round" + counter, counter);
    _root["round"+counter]._x = 5 + Math.random()*995;
    _root["round"+counter]._y = 900 + Math.random()*50;

    scale = 50 + Math.random()*50 + 10;
    _root["round"+counter]._xscale = scale;
    _root["round"+counter]._yscale = scale;
}

Код:

for (counter = 1; counter < _root.maxobject; counter++)
{
    _root["round"+counter]._x += Math.random()*7 - 3;
    _root["round"+counter]._y -= (_root["round"+counter]._xscale-20)/7-1;

    if (_root["round"+counter]._y < 600)
    {
      _root["round"+counter]._x = 5 + Math.random()*995;
      _root["round"+counter]._y = 900 + Math.random()*50;

      scale = 50 + Math.random()*50 + 10;
      _root["round"+counter]._xscale = scale;
      _root["round"+counter]._yscale = scale;
    }
}

Код:

gotoAndPlay(_currentframe - 1);
Код:

onClipEvent (mouseMove)
{
        n++;
        if (n == 5)
            {
                i++;
                duplicateMovieClip(_root.effect, "eff"+i, _root.maxobject + i);
                          _root["eff"+i]._x = _root._xmouse;
                          _root["eff"+i]._y = _root._ymouse;
                n=0;
        }
}



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

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