Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   остановить все клипы из fla (http://www.flasher.ru/forum/showthread.php?t=209539)

Dmitriy154 20.11.2014 00:29

остановить все клипы из fla
 
Здравствуйте! Столкнулся с такой проблемой. Наделал клипов в файле fla (и только). Возник вопрос, как остановить все клипы.
this.stop() и stop () не сработало. Если по отдельности, например car.stop() (где car экземпляр клипа), то все получается, но а если этих экземпляров куча. Как обратиться к главному классу fla файла. Спасибо!

in4core 20.11.2014 00:44

Пробегитесь рекурсией по всем вложенностям и стопаните их

Dmitriy154 20.11.2014 00:52

а что есть рекурсия и как она работает? Рекурсия повторный вызов самой себя для функции, а какой примерно код. И если можно еще вопросик, есть экземпляр car, представляющий авто, в него вложены клип вращения колес. Каким кодом можно заставить их остановиться, ничего не слушают.
Извините за тупые вопросы, уже ночь на дворе

Партизан 20.11.2014 11:18

К примеру, так остановятся все мувики вложенные в car
Код AS3:

for (var i:int = 0; i < car.numChildren; i++ ){
    var mc:MovieClip = car.getChildAt(i) as MovieClip;
    if(mc)mc.stop();
}


Dmitriy154 20.11.2014 13:19

Спасибо Партизан! А не подскажите как обратится из вложенного экземпляра к главному родителю, к главному мувиклипу. Подскажите, монтажный кадр в fla файле, что из себя представляет в AS 3

ChuwY 20.11.2014 18:17

stop all mc actionscript
Второй ответ в гугле.

Dmitriy154 20.11.2014 19:03

гугл не помогает, ответ Партизана тоже не помог, буду разбираться.

ChuwY 20.11.2014 19:30

Ну как это гугл не помог.

Код AS3:

function stopAllClips(mc:MovieClip):void
{
    var n:int = mc.numChildren;
    mc.gotoAndStop(1);
    for (var i:int=0;i<n;i++)
    {
        var clip:MoviceClip = mc.getChildAt(i) as MovieClip;
        if (clip)
            stopAllClips(clip)
    }
}

Код AS3:

stopAllClips(this)

В мейнклассе. и все.

Dmitriy154 20.11.2014 20:23

Я не знаю в чем дело, вроде все должно срабатывать но нет. Я сделал в fla файле пример
на главной шкале создал красный прямоугольник который двигается (клип - red, имя экземпляра - redE), в данном экземпляре я создал второй синий прямоугольник, тоже движется вперед-назад (клип - blue, имя экземпляра - blueE), в синем экз-ре я создал белый квадратик (клип - white, имя экземпляра - whiteE), тоже движется. На главной шкале в ключевом кадре нажимаю f9 и пытаюсь остановить все три, но получается только отдельными записями:
Код AS3:

stop(); //останавливаю красный экз-р
redE.stop(); //останавливаю синий экз-р
redE.blueE.stop(); //останавливаю белый экз-р

Все вышеперечисленные советы не срабатывают. Т.е я хотел бы либо рекурсивной функцией их остановить, либо есть какой метод
Свой fla файл и Main.as вылаживаю тут.
Подскажите рабочий способ в моем случае остановить все вложенные анимации. Спасибо

samana 20.11.2014 20:50

Вы забыли вызвать функцию, как написал ChuwY.
Код AS3:

stopAllClips(this)

То-есть после того как вы написали тело функции, эта функция сама по себе не сработает, надо её вызвать.


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

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