Доступ к экземплярам MovieClip, которые уже находятся на сцене в классе документа?

Я создал игру во Flash, и из-за характера игры у меня есть много видеоклипов, размещенных на сцене вручную во Flash CS4. Они не добавляются программно как дочерние элементы к сцене, поэтому мне трудно получить к ним доступ в классе документа. Пока что единственный метод, который я мог использовать, - это сделать stage.addChild(active_area); (например), но есть много видеоклипов с разными названиями, поэтому этот метод кажется неправильным.

Я обнаружил, что мои MovieClips не являются дочерними элементами сцены, а фактически MainTimeline, поскольку, когда я for перебираю stage.getChildAt(i);, отслеживается только один дочерний элемент, root1.

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

[РЕДАКТИРОВАТЬ]


Похоже, моя проблема заключалась не в том, что я не мог получить доступ к MovieClips, а в том, что я не изменял значения MovieClips, поэтому я не регистрировал в них никаких изменений.

Вот код после того, как я его исправил:

    function manage_cursor(e:Event):void {
        prevX=currX;
        prevY=currY;
        currX=stage.mouseX;
        currY=stage.mouseY;
        var i:int;

        if (currY > (stage.stageHeight/2)) {

            for (i = 0; i < this.numChildren; i++) {
                if (this.getChildAt(i).name!="active_area" && stage_kelp.y > kelp.min_y_mod) {
                    this.getChildAt(i).y-=1;                    
                }
            }
        }
        if (currY < (stage.stageHeight/2)) {
            for (i = 0; i < this.numChildren; i++) {
                if (this.getChildAt(i).name!="active_area" && this.stage_kelp.y < kelp.max_y_mod) {
                    this.getChildAt(i).y+=1;
                }
            }
        }

    }

Раньше проблема заключалась в том, что я проверял stage.numChildren;, использовал stage.getChildAt(i) и изменял этот дочерний элемент, которым была линия времени. Это дало мне эффект перемещения всех моих других MovieClip на сцене, поэтому я предполагал, что их значения y меняются, но они не менялись, поэтому ни одно из моих условных операторов не запускалось, давая мне иллюзию того, что я не был не получаю доступа к MovieClips. Изменение stage на this, как рекомендовано пакетом в ответах ниже, устранило проблему для меня.


person BumbleShrimp    schedule 15.12.2011    source источник


Ответы (2)


Попробуйте использовать этот код в своем Document Class:

trace(this["movieclip_name"]);

this относится к MainTimeline в вашем Document Class.

person package    schedule 15.12.2011

Вы пробовали экспортировать MovieClip для ActionScript и присвоили ему идентификатор? Обычно после этого вы можете просто использовать идентификатор для доступа к MovieClip.

person Crash Castles    schedule 15.12.2011
comment
Я дал пакет ответ, потому что его ответ устранил мою проблему, но как только я начал перебирать this.numChildren(i) вместо stage.numChildren(i);, ваш ответ также сработал, поэтому я проголосовал за вас. - person BumbleShrimp; 15.12.2011
comment
Не беспокойся! Спасибо, удачи, извините, я забыл проголосовать за ваш вопрос ранее. - person Crash Castles; 16.12.2011