[AS2] Eenvoudig duplicateMovieClip probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Scyth
  • Registratie: Juli 2001
  • Laatst online: 16-03-2024

Scyth

Fat finger, three beer

Topicstarter
Er staat op de stage de movieclip "XMLPageLEFT". Deze wil ik een X aantal keer duplicaten, elk met een opvolgend nummer. Hiervoor gebruik ik onderstaande loop, maar op een of andere manier 'verdwijnt' bij iedere iteratie van de loop de movieclip die in de vorige loop nét aangemaakt is. De code hieronder is precies zoals ik het op dit moment in mijn script heb staan.

Wat zie ik over het hoofd?

code:
1
2
3
4
5
for(var c=0; c<XMLPagesArray.length; c++) {

    duplicateMovieClip('XMLPageLEFT',("XMLPage_"+c), this.getNextHighestDepth());
    
}


Even ter illustratie; als ik dit stukje code toevoeg;

code:
1
2
3
4
5
6
7
8
9
10
for(var c=0; c<XMLPagesArray.length; c++) {
  duplicateMovieClip('XMLPageLEFT',("XMLPage_"+c), this.getNextHighestDepth());

  for (var i in this) {
    if (typeof (this[i]) == "movieclip") {
      trace("movie clip '"+this[i]._name+"' is at depth "+this[i].getDepth());
    }
  }

}


... om te kijken welke instances er allemaal op de stage staan, blijf ik dus bij iedere loop het laatst-toegevoegde item zien, de rest is gewoon 'weg'.

Iemand?

Dell Studio XPS 16
Project: BavBierSub 1.0 BavBierSub 2.0


Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Misschien bestaan ze wel maar ze liggen precies boven elkaar... even de coordinaten van nieuwe instances aanpassen om dit te controleren dus.

Die trace loop vertrouw ik niet helemaal trouwens... volgens mij kun je de stage niet zomaar als een array benaderen (aangenomen dat this naar je stage verwijst).

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Bozozo schreef op zaterdag 26 juni 2010 @ 18:07:

Die trace loop vertrouw ik niet helemaal trouwens... volgens mij kun je de stage niet zomaar als een array benaderen (aangenomen dat this naar je stage verwijst).
Je benadert de stage dan ook niet als array, je itereert slechts over al zijn (itereerbare, dynamic) properties.

Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Nou, daar valt wat betreft typeof(this[i]) toch wel over te twisten.

[ Voor 6% gewijzigd door Bozozo op 27-06-2010 11:34 ]

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Bozozo schreef op zondag 27 juni 2010 @ 11:34:
Nou, daar valt wat betreft typeof(this[i]) toch wel over te twisten.
Nee, daar valt helemaal niet over te twisten. De 'i' is daar namelijk geen numerieke index, maar de naam van een property op de object instance waaraan 'this' refereert, in dit geval de stage.

Zo zijn bijvoorbeeld de breedte en hoogte v/d stage, op te halen met

Flash ActionScript:
1
2
var stageWidth:Number = this["width"];
var stageHeight:Number = this["height"];



Het is eerder te beargumenteren dat het ophalen van een array-index een specialisatie is van het op deze manier uitlezen van properties, dan andersom...

Acties:
  • 0 Henk 'm!

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Je hebt helemaal gelijk :)

Ik zie dan geen oplossing voor de TS... deze code zou moeten werken lijkt me.

TabCinema : NiftySplit


Acties:
  • 0 Henk 'm!

  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

In de AS2 livedocs staat een andere syntax:
Flash ActionScript:
1
2
3
4
5
6
var duplicate:MovieClip;
for(var i:Number = 1; i < ln; i++) {
    var newY:Number = i * (container._height + spacer);
    duplicate = container.duplicateMovieClip("clip-" + i, i, {_y:newY});
    trace(duplicate); // _level0.clip-[number]
}


waarbij container de te dupliceren mc is. Nu kan je niet blind afgaan op de as2 livedocs, daar staan de nodige fouten in.

p.s. Waarom eigenlijk nog as2 :X

Raar... Is zo gek nog niet


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Tsjilp schreef op dinsdag 29 juni 2010 @ 12:44:
In de AS2 livedocs staat een andere syntax:
Er is zwoel een duplicateMovieClip method op de MovieClip class als een global function genaamd duplicateMovieClip.
Pagina: 1