Достъп до копия на MovieClip, които вече са на сцената в Document Class?

Създадох игра във флаш и поради естеството на играта имам много филмови клипове, поставени на сцената ръчно във 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) и модифицирах това дете, което беше TimeLine. Това ми даде ефекта, че всичките ми други филмови клипове на сцената бяха преместени, така че бях под предположението, че техните y стойности се променят, но не бяха, следователно нито един от моите условни елементи не се задейства, създавайки ми илюзията, че не съм нямам достъп до филмовите клипове. Промяната на 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
Дадох отговора на package, защото отговорът му реши проблема ми, но след като започнах да преминавам през this.numChildren(i) вместо stage.numChildren(i);, вашият отговор също проработи, така че ви гласувах в полза. - person BumbleShrimp; 15.12.2011
comment
Няма проблем! Оценявам го, успех, съжалявам, че забравих да гласувам за въпроса ви по-рано. - person Crash Castles; 16.12.2011