Я создал игру во 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
, как рекомендовано пакетом в ответах ниже, устранило проблему для меня.