Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1187 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  Erreur après hitTestObject et removeChild (CS3)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur après hitTestObject et removeChild (CS3)

n°1718093
malicious
Posté le 15-04-2008 à 21:48:47  profilanswer
 

Bonjour,
Je débute en AS3 et j'ai d'emblée un problème que je n'avais pas en AS2. Dans l'exemple suivant, après que le clip mc2 soit entré en collision avec mc1, mc1 est supprimé. Le problème est que si je déplace mc2 là où se trouvait mc1, une erreur est généré : le script tente de supprimer encore mc1 alors qu'il n'existe plus. Je ne comprend pas pourquoi le hitTestObject continue d'être actif!?  
 

Code :
  1. var mc1,mc2:Mc;
  2. mc1=new Mc;
  3. mc2=new Mc;
  4. addChild(mc1);
  5. addChild(mc2);
  6. addEventListener(Event.ENTER_FRAME,boucle);
  7. function boucle(evt:Event):void{
  8. mc2.x=mouseX;
  9. mc2.y=mouseY;
  10. if(mc2.hitTestObject(mc1)) removeChild(mc1);
  11. }


 
Merci si quelqu'un a la solution...


Message édité par malicious le 15-04-2008 à 21:49:11
mood
Publicité
Posté le 15-04-2008 à 21:48:47  profilanswer
 

n°1718781
antika
Posté le 16-04-2008 à 19:46:10  profilanswer
 

Code :
  1. var mc1,mc2:Mc;
  2. mc1=new Mc;
  3. mc2=new Mc;
  4. addChild(mc1);
  5. addChild(mc2);
  6. addEventListener(Event.ENTER_FRAME,boucle);
  7. function boucle(evt:Event):void{
  8. mc2.x=mouseX;
  9. mc2.y=mouseY;
  10. if(mc1!=null) {
  11. if(mc2.hitTestObject(mc1)) removeChild(mc1);
  12. }
  13. }

n°1718846
malicious
Posté le 16-04-2008 à 22:51:38  profilanswer
 

Merci,  
J'avais pensé à ça mais je pensais pas que ça provoquerait une erreur de tester l'existence d'une occurrence alors qu'elle n'est censée plus exister après un removeChild()...
Toutefois, j'ai testé avec la condition if(mc1!=null) ben... ça ne marche toujours :( Toujours la même erreur :
 
 
ArgumentError: Error #2025: Le DisplayObject indiqué doit être un enfant de l'appelant.
 at flash.display::DisplayObjectContainer/removeChild()
 at hitTestObject_fla::MainTimeline/boucle()
 
 
Qu'est-ce qui ne vas pas encore ?
 
EDIT: ça marche !
Après removeChild, il faut aussi définir la classe comme null
 

Code :
  1. if(mc1!=null && mc2.hitTestObject(mc1)) {
  2.  removeChild(mc1);
  3.  mc1=null;
  4. }


Message édité par malicious le 16-04-2008 à 23:21:15
n°1719510
malicious
Posté le 17-04-2008 à 21:43:59  profilanswer
 

Autre possibilté mais cette fois-ci sans détruire l'occurrence de la classe (afin de pouvoir faire un autre addChild plus tard) :
 

Code :
  1. if(mc1.parent!=null) && mc2.hitTestObject(mc1)){
  2.  removeChild(mc1);
  3. }


Par contre j'ai un problème si je souhaite faire un removeChild() dans la timeline du clip (le clip disparait après 10 frames par exemple).  
- Dans le 2e cas (exemple ci-dessus), pas de problème:

Code :
  1. parent.removeChild(this);


Mais dans le premier cas (pour détruire complètement l'occurrence de la mémoire), comment faire référence et affecter "null" à mc1 dans le script du clip lui-même ?  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  Erreur après hitTestObject et removeChild (CS3)

 

Sujets relatifs
500 Internal Server Error lors d'une erreur PHP[réglé] installation qt 4.3.4 et erreur make
erreur (débile) de compilationerreur de reception
Courbes avec Qwt (erreur de segmentation)erreur de link avec le passage a visual 2008
VBA ACCESS erreur 3202erreur SMTP
ratrapper une erreur de scanferreur function: imap_open()
Plus de sujets relatifs à : Erreur après hitTestObject et removeChild (CS3)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR