begin process at 2012 05 27 11:21:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

MovieClip dupliqué !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

MovieClip dupliqué !

dimanche 10 mai 2009 à 09:46:56 | MovieClip dupliqué !

Orange73

Membre Club
Hello, tout le monde,

Voila je n'arrive pas très bien a comprendre ceci :

Imaginons un code permettant de créer un clip vide puis d'y insérer un clip présent dans la bibliotheque :

---------------------------------

EN AS2, on faisait cela :

var Y = 100;
function showClip()
{
    var theClip = this.createEmptyMovieClip("theClip",1);
    theClip.attachMovie("test","test",1);
    theClip._y = Y;
    Y += 10;
    theClip._x = 100;
}

clip.onPress = function(){ // "clip" est un movie clip present sur la scene;
    showClip();
}


EN AS3, on fait ceci :

var Y = 100;

function showClip(e:MouseEvent)
{   
    var theClip:MovieClip = new MovieClip();
    theClip.name = "theClip";
   
    var test:Test= new Test();
    test.name = "test";
   
    theClip.addChild(test);
    this.addChild(theClip);

    theClip.y = Y;
    Y += 10;
    theClip.x = 100;
}

clip.addEventListener(MouseEvent.CLICK, showClip);

---------------------------------
Je remarque une chose.
En AS2, le movieclip créé par createEmptyMovieClip est supprimé et remplacé a chaque clic sur le movieclip "clip".
Alors qu'en AS3 , une nouveau movieclip est ajouté sur la scene a chaque clic... du coup on se retrouve avec autant de movieclip que de clic sur "clip".

Donc question :
Je suis obligé de détecté la présence du MovieClip précédent puis de le supprimé s'il existe ?
donc mettre au debut de la fonction "showClip" un truc du genre :
if(this.getChildByName("title"))
removeChildAt(1);


Merci pour votre aide.

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
dimanche 10 mai 2009 à 10:41:46 | Re : MovieClip dupliqué !

pegase31

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Bonjour,

En AS2, il y a des "niveaux" représentés par des nombres et un seul élément peut se trouver à chaque niveau. Si au niveau X se trouve un élément que tu que ajoutes un élément à ce niveau X, l'élément précédent est tout bonnement remplacé par le nouveau.

En AS3, il s'agit d'une "pile" de DisplayObject dont chaque élément s'ajoute en haut de la pile lors d'un addChild(). Pour vérifier la présence d'un DisplayObject dans une liste d'affichage il existe une fonction DisplayObjectContainer.contains(monDisplayObject);
Seulement, pour celà, il faut que tu crées tes deux objets en dehors de ta fonction pour que leurs existence en mémoire soit toujours accessible ...

Ensuite, il faut savoir qu'une instance d'objet ou de classe ne peut pas appartenir à plusieurs listes d'affichages. Et donc que si tu fais un addChild d'un Objet sur une liste dont il fait déjà partie, tu risques d'avoir une erreur de redondance.

Peg'
dimanche 10 mai 2009 à 16:45:46 | Re : MovieClip dupliqué !

Orange73

Membre Club
Hello Peg',

Merci pour ta réponse.

Donc si je fais un addChildAt(myDisplayObject, 1);

puis je refais un autre addChildAt(); avec le meme niveau ... l'objet precedent descendra automatiquement d'un niveau ?

Il faut donc que je supprime l'ancien displayobject avant de créer le nouveau ?




-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
dimanche 10 mai 2009 à 16:54:06 | Re : MovieClip dupliqué !

gremlins7

Membre Club
Réponse acceptée !
Salut,
pour préciser un peu : en fait tu doit connaitre l'état de la liste d'objet en permanence, surtout qu'elle definit l'ordre d'affichage des clips. Lorsque l'ordre n'est jamais modifié en que tu rajoute un clip à la fin il n'y a pas de problème. Mais lorsque tu dois changer cet ordre, pour de la 3D par exemple, ça se complique un peu...
Lorsque que tu ajoute un clip dans la liste, par le biais d'une fonction ou non, il reste present tant que tu ne le supprime pas, c'est pour ça qu'a chaque fois que tu clic, un clip apparait.

Voici une procedure pour résoudre ton pb, tu recupere l'index du clip ajouté et tu le remove:

var toto:Sprite=new Sprite();
addChild(toto); //ajout
removeChildAt(getChildIndex(toto));  //suppression
dimanche 10 mai 2009 à 17:20:20 | Re : MovieClip dupliqué !

Orange73

Membre Club
merci pour ta réponse.

j'ai testé cela :

var Y = 100;

var theClip:MovieClip = new MovieClip();
theClip.name = "theClip";
this.addChild(theClip);
   
function showClip(e:MouseEvent)
{  
    if(theClip.tTest)
        theClip.removeChild(tTest);
  
    var tTest:Test= new Test();
    tTest.name = "test";
  
    theClip.addChild(tTest);

    theClip.y = Y;
    Y += 10;
    theClip.x = 100;
}

clip.addEventListener(MouseEvent.CLICK, showClip);


Ca fonctionne mais je comprends pas pourquoi je n'ai pas besoin d'utiliser getChildByName() pour cibler "tTest" car logiquement j'aurai du faire ceci car les clip sont créé dynamiquement :

if(getChildByName("theClip").getChildByName("test"))
        getChildByName("theClip").removeChild(getChildByName("theClip").getChildByName("test"));



-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
dimanche 10 mai 2009 à 17:55:45 | Re : MovieClip dupliqué !

gremlins7

Membre Club
Ben, c'est jsute une manière differente d'indexer, il y a rien d'autre a comprendre...après getChildByName, c'est plutot quand t'a envie de faire des boucle avec un certain nombre i de clip du style :
getChildByName("MonClip"+i).

Question : pourquoi tu fait pas directement ça :

var Y = 100;
addEventListener(MouseEvent.CLICK, showClip);

function showClip(e:MouseEvent)
{  
    if(theClip)
   {
       removeChild(
theClip);
   }
   else
   {
     
var theClip:MovieClip = new MovieClip();
      addChild(theClip);

  
       theClip.addChild(theClip);

       theClip.y = Y;
       Y += 10;
       theClip.x = 100;
   }
}


dimanche 10 mai 2009 à 18:00:16 | Re : MovieClip dupliqué !

gremlins7

Membre Club
Pardon, c'est  pas theClip.addChild(theClip); mais simplement addChild(theClip);
(3 lignes en partant de la fin)
dimanche 10 mai 2009 à 18:30:17 | Re : MovieClip dupliqué !

Orange73

Membre Club
Car en fait des que je clic sur le bouton "clip", j'ai un movieclip qui doit etre créé mais son contenu est différent a chaque fois donc je dois supprimer ce clip a chaque clic avant de le recréer...



-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
dimanche 10 mai 2009 à 23:50:26 | Re : MovieClip dupliqué !

gremlins7

Membre Club
Oui mais, il me semble qu'imbriquer comme ça tes clips n'est pas la manière la plus pertinente de programmer en AS3. La tu ajoute un enfant à un enfant...
Perso, je crois qu'il vaut mieux faire une classe unique avec sa methode load, un truc du style:

dans l'imange clé
var clip:MonclipSpecial = new MonclipSpecial();

avec la classe as3
classe MonclipSpecial extends MovieClip
{
      //constructeur de la classe
     //Fonction showClip
     //load un clip de la biblio
}

lundi 17 mai 2010 à 11:43:14 | Re : MovieClip dupliqué !

joecharier

salut, je ne suis pas sur d'avoir cerné ton probleme, si comme j'ai cru le comprendre tu veus que ton clip soit ecrasé a chque clip,tu dois faire ceci :
var Y = 100;
var theClip:MovieClip = new MovieClip();
var test:Test= new Test();
theClip.addChild(test);
this.addChild(theClip);
theClip.visible =false;

function showClip(e:MouseEvent)
{
theClip = new MovieClip();
theClip.name = "theClip";

test= new Test();
test.name = "test";

theClip.visible =true;

theClip.y = Y;
Y += 10;
theClip.x = 100;
}

clip.addEventListener(MouseEvent.CLICK, showClip);

J'espere t'avoir aidé et ne pas etre hors sujet, sinon désolé


Cette discussion est classée dans : test, var, clip, movieclip, theclip


Répondre à ce message

Sujets en rapport avec ce message

Appel de var d'un txt dasn un movie clip [ par Burnside ] Je n'arrrive pas a faire apparaître une variable qui se trouve dans un txt dans un movie clip.Merci,Burnside gotoAndPlay non executé !!! [ par bali33 ] Bonjour,Voila mon petit probleme : un element de ma scene (clip) qui est reprensentée par une canette peut etre deplacé , lorsqu'il rencontre le clip Imprimer une partie d'un movieclip ! [ par djagger ] Salut !Je cherche à imprimer une partie d'un movieClip.Voici mes 3 clips :- Le clip à imprimer 'imprim' (étiquette d'image #p),- Un clip 'contour' pou DuplicateMovieClip après LoadMovie [ par djagger ] N'cha ! Voici mon problème ! Je charge un swf externe dans mon anim : //On se trouve dans le clip _root.aaa this.createEmptyMovieClip("test",1); test. mc_clip.duplicateMovieClip ???? ehehh [ par mica1 ] Hoïbon ma question est simplej'aimerais duplikatouiller une clipouille mais bon le ptit problème c'est que ce petit clipouille contient des champs de loadvars() [ par snowteam ] j'ai un petit problème. sur me scene, j'ai un clip qui contient une image (n1) avec un texte dont la variable est nom1.dans l'action script de mon cli loadvars() [ par snowteam ] j'ai un petit problème. sur me scene, j'ai un clip qui contient une image (n1) avec un texte dont la variable est nom1.dans l'action script de mon cli Pb de preload de site [ par ceramicord ] Bonjour, J'ai fait un site et je viens de vouloir changer mon preload. L'ancien était automatisé.J'ai donc réalisé un clip et j'ai tenter de charger Problème onRollOut dans movieClip [ par Yoann19 ] Bonjour tout le monde, <p cla Appel de movieclip [ par cfury ] Bonsoir,Voilà j'ai cree un clip dans lequel j'ai insere du texte statique qui reagit verticalement via une scrollbar.Tout fonctionne.Sur ce meme clip,


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,250 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales