Доступ к экземплярам MovieClip, которые уже находятся на сцене в классе документов? - PullRequest
1 голос
/ 15 декабря 2011

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

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

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

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


Похоже, моя проблема была не в том, что я не мог получить доступ к 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) и модифицируя тот дочерний элемент, который был временной шкалой.Это дало мне эффект от всех других моих MovieClips на стадии перемещения, поэтому я предполагал, что их y значения были изменены, но они не были, таким образом, ни одно из моих условных выражений не сработало, создавая иллюзию, чтоЯ не получил доступ к MovieClips.Изменение stage на this, как рекомендовано пакетом в ответах ниже, решило проблему для меня.

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

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

3 голосов
/ 15 декабря 2011

Попробуйте этот код в вашем Document Class:

trace(this["movieclip_name"]);

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

...