[actionscript] duplicateMovieClip neemt properties niet mee

Pagina: 1
Acties:

  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
In Flash MX:
Flash ActionScript:
1
2
3
4
this.createEmptyMovieClip("container",1);
this.container.createEmptyMovieClip("child1",2);
this.container.child1.attachMovie("vierkant_in_library", "v1", 3);
this.container.duplicateMovieClip("container_copy", 4, { _x: 100 } );

Ik wil een met actionscript gegenereerde movieclip, met daaraan vast een movieclip uit de library, dupliceren.
Ik heb begrepen dat variables in een movieclip die wordt gedupliceerd, niet worden meegenomen. Dit geldt dus ook voor attached movieclips. Heeft iemand een idee hoe dit wel op te lossen is?

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Creeer een init object voordat je een movieclip kopieert.

Flash ActionScript:
1
2
3
4
5
6
7
8
init = new Object();
for ( var item in myMovieClip ) {
    init[ item ] = myMovieClip[ item ];
}

// nu kopieren

myMovieClip.duplicateMovieClip( "myCopyMC", 2, init );


HTH :)

"You're only as good, as what you did last week."


  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
Thanks, maar dat lijkt ook niet te werken met attached movieclips:

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
this.createEmptyMovieClip("container",1);
this.container.createEmptyMovieClip("child1",2);
this.container.child1.attachMovie("vierkant_in_library", "v1", 3);
this.container.child1.createEmptyMovieClip("grantchild1",5);

with (this.container.child1.grantchild1) {
    lineStyle(5, 0x000000, 100);
    lineTo(50,50);
}

init_obj = new Object();
for ( var item in this.container ) {
    init_obj[ item ] = this.container[ item ];
}

this.container.duplicateMovieClip("container_copy", 4, init_obj );
this.container_copy._x = 200;

trace(this.container_copy.child1.v1); 
//output: _level0.container.child1.v1

Flash lijkt het object (v1) te kopieeren, maar dat is niet te zien op de stage. Ook de lijn in this.container.child1.grantchild1 wordt niet gekopieerd.

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Komt omdat ik in het voorbeeld niet recursief door alle child movieclips gaat...was een figure of speak om je op weg te helpen. :)

"You're only as good, as what you did last week."


  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
ah, ok. :) Ik ga eens kijken of het recursief wel lukt.

  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
Met een object dat recursief is opgebouwd lukt het helaas ook niet:

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function getProps(target_obj) {
    var ret_obj = new Object();
    var tmp_obj;
    for (var item in target_obj) {
        if ( typeof(target_obj[ item ]) == "movieclip") {
            tmp_obj = getProps( target_obj[ item ] );
        } else {
            tmp_obj = target_obj[ item ];
        }
        ret_obj[ item ] = tmp_obj;
    }
    return ret_obj;
}

init_obj = getProps(this.container);

En ook mijn poging om het met een eigen prototype te kopieeren lukt niet. Misschien zie ik iets over het hoofd.

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
MovieClip.prototype.kopieer = function(targetclip, level) {
    this.duplicateMovieClip(targetclip, level);
    for (var item in this) {
        trace(item);
        if ( typeof(this[item]) == "movieclip" ) {
            this[item].kopieer(targetclip[item], level++);
        } else {
            targetclip[item] = this[item];
        }
    }
};
Pagina: 1