2010-10-22 5 views
3

Ci-dessous est mon code pour essayer de cloner le MovieClip et cela ne fonctionne pas. Nous devrions voir deux cirles si les codes fonctionnent correctement.AS3 clone MovieClip

/*The original MovieClip*/ 
var circle:MovieClip = new MovieClip(); 
circle.graphics.beginFill(0xAA0022); 
circle.graphics.drawCircle(40, 40, 40); 
circle.x=10 
addChild(circle); 

/*CLONE the MovieClip - IT DOES'T WORK FROM HERE DOWN*/ 
var cloneCirle:MovieClip = new MovieClip(); 
    cloneCirle=circle 
    cloneCirle.x=60 
    addChild(cloneCirle); 

Répondre

8

Quand vous faites cloneCircle=circle, il ne copie ou quoi que ce soit le clonage. C'est juste de dire que la variable cloneCircle est un autre nom pour votre MovieClip original circle. Ce que vous devez faire est d'utiliser la méthode Graphics.copyFrom().

Essayez:

var cloneCirle:MovieClip = new MovieClip(); 
cloneCircle.graphics.copyFrom(circle.graphics); 
cloneCirle.x=60; 
addChild(cloneCirle); 
+0

hmm Je reçois la « Scène 1, la couche 'couche 1', image 1, ligne 18 \t 1120: Accès des Clonecircle de propriété non définie. " – dngo

+0

Je l'ai eu var cloneCirle: MovieClip = new MovieClip(); cloneCirle.graphics.copyFrom (circle.graphics); cloneCirle.x = 60; addChild (cloneCirle); – dngo

+0

Vous avez mal orthographié cloneCircle ... Veuillez marquer cette réponse comme acceptée (la coche)! – Mahir

3

Ceci est pour la création d'un double d'un objet scénique qui existe dans la bibliothèque FLA au moment de la compilation

L'objet doit avoir une « exportation pour Actionscript tic tac dans c'est panneau de propriétés et un nom de classe valide dans la case «Class

Si le symbole a un seul cadre juste ajouter un autre de sorte qu'il enregistre comme MovieClip() plutôt que Sprite()

private function cloneObject(source:DisplayObject):void 
{ 
    var objectClass:Class = Object(source).constructor; 
    var instance:MovieClip = new objectClass() as MovieClip; 
    instance.transform = source.transform; 
    instance.filters = source.filters; 
    instance.cacheAsBitmap = source.cacheAsBitmap; 
    instance.opaqueBackground = source.opaqueBackground; 
    source.parent.addChild(instance); 
    instance.x += 20; // just to show the duplicate exists! 
} 

http://snipplr.com/view/44734/

3

Adapté de here:

function copyClip(clip:MovieClip) 
{ 
    var sourceClass:Class = Object(clip).constructor; 
    var duplicate:MovieClip = new sourceClass(); 
    return duplicate; 
} 
Questions connexes