Как получить доступ ко всем фрагментам роликов (и фрагментам роликов внутри фрагмента ролика) одновременно с as3?

Я использую Adobe Animate (или Adobe Flash Professional) и часто перемещаюсь по временной шкале с помощью as3. Я хочу сбросить все видеоклипы (и видеоклипы внутри moviclip), когда сцена достигает точного кадра. как:

 if (this.currentFrame == 120) 
    { 
        allMovieClips.gotoAndPlay(1);
    } 

Я подумываю получить доступ ко всем видеоклипам в библиотеке, но не знаю, как это сделать. Есть ли способ сделать это?


person Nguyễn Phương    schedule 07.02.2017    source источник


Ответы (1)


Вы не можете получить доступ к вещам в библиотеке, поскольку библиотека - это концепция времени разработки. Если вы хотите сбросить все экземпляры MovieClip, которые в настоящее время прикреплены к рабочей области, выполните следующие действия:

import flash.display.Sprite;
import flash.display.MovieClip;

// Start resetting them from the topmost timeline.
reset(root as Sprite);

function reset(target:Sprite):void
{
    // First, browse all the children of the target.
    for (var i:int = 0; i < target.numChildren; i++)
    {
        var aChild:Sprite = target.getChildAt(i) as Sprite;

        // If a child is a container then go recursive on it.
        if (aChild) reset(aChild);
    }

    // Second, if the target is not only the container
    // of other things but a MovieClip itself then rewind it.
    if  (target is MovieClip)
        (target as MovieClip).gotoAndPlay(1);
}
person Organis    schedule 07.02.2017
comment
ummmm - вы можете получить доступ к библиотеке во время выполнения, если элемент имеет ссылку. stackoverflow.com/ questions / 22940461 /, но я все равно собираюсь добавить +1, потому что этот рекурсивный алгоритм действительно решит проблему. - person Zze; 07.02.2017
comment
@Zze, при всем уважении, библиотека - это палитра прототипов, и вы не можете получить доступ к ее среде выполнения. Вы можете создавать экземпляры вещей с помощью оператора new, если они связаны с классами AS3, но не более того. Вы не можете удалять элементы из библиотеки, вы не можете их изменять. Хуже того, вы не можете даже перечислить связанные, если не знаете соответствующие классы AS3. - person Organis; 07.02.2017
comment
Это правильно, однако все, что я сказал, это то, что вы можете получить доступ к библиотеке. Вы можете создать его экземпляр. Я не указывал никаких других перечисленных функций. Я просто думаю, что вы не можете получить доступ к тому, что в библиотеке, неверно - как вы только что сказали выше. Возможно, вы не можете управлять вещами в библиотеке. Не спорю, что библиотека ниже среднего - ха-ха - person Zze; 07.02.2017