Създадох игра във флаш и поради естеството на играта имам много филмови клипове, поставени на сцената ръчно във 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
, както се препоръчва от пакета в отговорите по-долу, реши проблема за мен.