2017-02-07 21 views
1

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

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

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

ответ

3

Вы не можете получить доступ к вещам в Библиотеке, поскольку библиотека представляет собой концепцию времени разработки. Если вы хотите сбросить все экземпляры 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); 
} 
+0

Ummmm - вы можете получить доступ к библиотеке во время выполнения до тех пор, пока элемент дается связь. http://stackoverflow.com/questions/22940461/loading-and-unloading-content-from-library-in-as3, но я все еще иду к +1, потому что этот рекурсивный алгоритм действительно решит проблему. – Zze

+0

@Zze, при всем уважении, Библиотека - это палитра прототипов, и вы не можете получить доступ к ее содержимому. Вы можете создавать экземпляры с помощью «нового» оператора, если они связаны с классами AS3, но это его масштаб. Вы не можете удалить элементы из библиотеки, вы не можете их изменять. Хуже того, вы не можете даже перечислить связанные, если не знаете соответствующие классы AS3. – Organis

+0

Это правильно, однако все, что я сказал, это то, что вы можете ** получить доступ к библиотеке. Вы можете создать экземпляр из него. Я не указал никаких других функциональных возможностей. Я просто думаю, что «Вы не можете получить доступ к предмету в Библиотеке» неверно - как вы только что сказали выше. Возможно, это может быть «вы не можете манипулировать вещами в библиотеке». Не утверждая, что библиотека является суб-средней - ха-ха – Zze