AS2: цикл по элементам мувиклипа - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть веб-сайт Flash AS2, и мне нужно, чтобы все кнопки были в экземпляре мувиклипа (для определения конкретного свойства для каждого).Я искал час или больше, но я только что получил решения для AS3!Может ли кто-нибудь мне помочь?

Спасибо всем!

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

Ух ты, AS2, давно этого не видел.

В AS2 клипы, созданные во время выполнения (с помощью кода), имеют положительные значения глубины, а клипы, созданные во время создания (с помощью преобразования в символ), имеют отрицательные значения глубины.

Самый простой способ циклического просмотра - использовать для ... в . Вот пример того, что заключено в красивую многократно используемую функцию, которая также позволяет вам циклически перебирать все вложенные клипы внутри целевого клипа:

var clips:Array = getChildrenOf(this,true);
var numClips:Number = clips.length;
for(var i:Number = 0 ;  i < numClips ; i++) trace("clip["+i+"]: " + clips[i]._name + " at depth " + clips[i].getDepth() + " in " + clips[i]._parent._name);

function getChildrenOf(target:MovieClip,recursive:Boolean):Array{
    var result:Array = [];
    for(var i in target){//loop through all properties
        if(target[i] instanceof MovieClip) {//look for movieclips
            result.push(target[i]);//found a clip add it to the result array
            if(recursive) result = result.concat(getChildrenOf(target[i],true));//concatenate children of clips at this level,recurse
        }
    }
    return result;
}

Второй параметр является необязательным, поэтому, если вы его опустите (например, getChildrenOf (this);), вы получите детей только на 1-м уровне глубины внутри целевого фрагмента ролика (например, это дети, но не «внуки») ) * +1010 *

НТН

0 голосов
/ 27 апреля 2011

Сначала вы получаете глубину в мувиклипе, используя:

var depth:int = movieclip.getDepth();

А затем вы просто перебираете мувиклип с циклом for, пока не достигнете значения, полученного из getDepth:

for(var i:int = 0; i < depth; i++){
    trace(movieclip.getInstanceAtDepth(i));
}

Это позволит получить все экземпляры внутри мувиклипа.

Узнайте больше о методах из справочника на случай, если этот код не заработает, так как он не протестирован.

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/2/help.html?content=00001301.html

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/2/help.html?content=00001302.html

...