[AS3] removeChild met een for lus

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
Voor een hide&seek spel heb ik in AS3 een 9-tal avatars aangemaakt doormiddel van een for lus:

code:
1
2
3
4
for (var i:int=1; i<10; i++) {
this["avatar"+i] = new Enemy();
this["avatar"+i].alpha = 0;
}


na een tijdje moet een avatar van het veld verwijdert worden.. dat gebeurt zo:

code:
1
removeChild(this["avatar"+i]);


de 'i' klopt hierin wel, maar hij removed het object zo niet. ik krijg namelijk deze error:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
Nu ben ik er achter gekomen dat de removeChild zo gewoon niet werkt. Als ik namelijk simpelweg

code:
1
removeChild(avatar1);


doe haalt hij hem wel weg.. Hoe kan ik dit wel aanpakken?

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450


Acties:
  • 0 Henk 'm!

Verwijderd

Waar heb je de avatar toegevoegd als child?
volgens mij moet je nog in je for loop
this.addChild(this["avatar"+i])
zetten, want zoals het er nu uitziet =is avatar helemaal geen Child van iets...

Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
Sorry, dat heb ik er niet bij gezet. Deze worden toegevoegd doormiddel van de addChild functie verderop in de code.

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450


Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-09 12:01
Flash ActionScript:
1
2
3
4
5
6
7
8
for (var i:int=1; i<10; i++) {
  var enemy:Enemy = new Enemy();
  enemy.name = "avatar" + i;
  enemy.alpha = 0;
}

var child = getChildByName("avatar" + i);
child.parent.removeChild(child);

[ Voor 4% gewijzigd door McVirusS op 18-06-2009 13:22 ]


Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-09 12:01
Inderdaad goed opletten dat de scope klopt. Dus dat de objecten worden verwijderd uit hetzelfde object als waar ze aan worden toegevoegd.

Acties:
  • 0 Henk 'm!

Verwijderd

McVirusS schreef op donderdag 18 juni 2009 @ 13:21:
Flash ActionScript:
1
2
3
4
5
6
7
8
for (var i:int=1; i<10; i++) {
  var enemy:Enemy = new Enemy();
  enemy.name = "avatar" + i;
  enemy.alpha = 0;
}

var child = getChildByName("avatar" + i);
child.parent.removeChild(child);
Volgens mij moet je dan de this.addChild(enemy) wel binnen de for-loop zetten.
Als je dit niet doet is de enemy van i=1 weg als de loop opnieuw begint...
Pagina: 1