Accueil > Forum > > > > Probleme pour gérer attachMovieClip()
Probleme pour gérer attachMovieClip()
lundi 28 décembre 2009 à 19:23:30 |
Probleme pour gérer attachMovieClip()

Siron123
|
Bonjour à tous,
J'ai un soucis avec la fonction attachMovieClip(), je veux en fait défaire en sorte que mon vaisseau puisse tirer des lasers, donc je fais :
Code ActionScript :
fond.onRelease = function(){ /* au clique de la souris */
reference = attachMovie("laser", "laser"+i, _root.getNextHighestDepth() ); /* on duplique le clip laser de la bibliothèque */
reference._x = vaisseau._x;
reference._y = vaisseau._y - 27;
i++;
reference.onEnterFrame = function(){
this._y -= 5;
if(this._y < -5){ /* on supprime "laser" s'il sort de la scène */
this.removeMovieClip();
}
}
}
Mais lorsque je veux faire en sorte que ces laser disparaissent et fassent disparaitre la cible une fois qu'ils l'ont touchée (avec hitTest), rien ne se passe... Je me suis rendu compte qu'une fois qu'il y avait plusieurs laser sur la même scène, le hitTest devenait inutile..
Code ActionScript :
if(hap.hitTest(reference)){
trace("touché");
}
Comment puis je faire donc?
Merci
|
|
mardi 29 décembre 2009 à 12:00:01 |
Re : Probleme pour gérer attachMovieClip()

dj_ouf
|
Bonjour
Déjà il faudrait effacer l'écouteur onEnterFrame lorsque tu efface un laser (delete this.onEnterFrame).
Quelle est cette variable reference ? Si c'est une variable globale, alors l'ancien est sans cesse écraser par le nouveau, ce qui fait qu'un seul laser fera les tests.
Et peut on voir le code avec le hitTest stp ? Parce que là on ne sait pas à quoi fait référence "hap", donc c'est difficile de te dépanner..
|
|
mardi 29 décembre 2009 à 20:16:12 |
Re : Probleme pour gérer attachMovieClip()

Siron123
|
Merci pour ta réponse dj_ouf, voila le code entier (non complet d'ailleurs ^^" )
Code ActionScript : function randRange(min:Number, max:Number):Number { /* Fonction hasard */
var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
var vitesse:Number = new Number(5); /* on définit les variables */
var i:Number = new Number(0);
var p:Number = new Number(0);
fond.swapDepths(-16383);/* profondeur minimal à fond, pour ne pas chevaucher d'autre clip */
_root.onEnterFrame = function(){
if(Key.isDown(Key.LEFT)){ /* on donne les mouvements au vaisseaux */
vaisseau._x -= 5; }
if(Key.isDown(Key.RIGHT)){
vaisseau._x += 5; }
hap._x += vitesse;
/* on controle le vaisseau, le but est de toucher l'ennemi
hap qui s'approche de plus en plus */
if(hap._x - hap._width/2 <= 45){ /* si cible hap touche les limites, changement de sens */
vitesse = -vitesse ; /* variable que l'on rend négative pour changer le sens */
hap._y += 35;
}
if(hap._x + hap._width/2 >= Stage.width - 45){
vitesse = -vitesse ;
hap._y += 35;
}
fond.onRelease = function(){ /* au clique de la souris */
/* au clique de la souris, un laser est tiré */
reference = attachMovie("laser", "laser"+i, _root.getNextHighestDepth() ); /* on duplique le clip laser de la bibliothèque */
reference._x = vaisseau._x;
reference._y = vaisseau._y - 27;
i++;
reference.onEnterFrame = function(){
this._y -= 5;
if(this._y < -5){ /* on supprime "laser" s'il sort de la scène */
this.removeMovieClip();
}
}
}
if(hap.hitTest(reference)){ // si le laser touche l'ennemi
trace("touché");
}
if(randRange(0,30) == 29){ // définit quand hap doit tirer un projectile
reference2 = attachMovie("balle","balle"+p,_root.getNextHighestDepth() ); /* on duplique balle */
reference2._x = hap._x;
reference2._y = hap._y;
p++;
reference2.onEnterFrame = function(){
this._y += 5;
if(this.y > Stage.height +5){
this.removeMovieClip();
}
}
}
}
Je suis encore débutant.. donc tout les conseils me seront utiles :')
|
|
mercredi 30 décembre 2009 à 09:53:47 |
Re : Probleme pour gérer attachMovieClip()

dj_ouf
|
Réponse acceptée !
Ah ben on y voit plus clair !
hap représente donc le seul ennemi à l'écran, qui descend vers le joueur.
Je vois quelques problèmes..
Déjà il faut sortir ton fond.onRelease = function(){ de la boucle onEnterFrame, car elle est redéfinis à chaque rafraichissement et ça ne sert à rien. Tu peux la définir avant le onEnterFrame.
Ensuite pour ton if(hap.hitTest(reference)), c'est normal que ça ne fonctionne pas car reference, tu le déclare en tant que variable locale dans fond.onRelease. Donc elle n'existe plus en dehors de cette fonction. Tu n'as qu'à tester un trace(reference), tu verras que ça sera à nul normalemement. Donc ce qu'il faut c'est faire le hitTest dans sa boucle onEnterFrame, tout simplement car on peut faire un test de collision entre 2 objets, et on connait le clip vaisseau qui est unique, alors que le vaisseau ne connait pas les clips lasers.
Code ActionScript : reference.onEnterFrame = function(){
this._y -= 5;
if(this._y < -5){ /* on supprime "laser" s'il sort de la scène */
if(hap.hitTest(this)){ // si le laser touche l'ennemi
trace("touché");
}
this.removeMovieClip();
}
}
Et encore un truc : fond.onRelease c'est pas top pour déclencher le tir. Il suffit que ton curseur soit au dessus d'un clip par dessus le fond pour que ça ne fonctionne plus. Un _root.onMouseDown serait + approprié par exemple.
Voilà, j'espère que t'y voit plus clair
|
|
mercredi 30 décembre 2009 à 10:35:28 |
Re : Probleme pour gérer attachMovieClip()

Siron123
|
Ah oui, exactement , ca marche impec maintenant ^^
Mais y aurait il une autre solution? Définir référence par exemple, en tant qu'Object ou autre..  j'anticipe sur mes futurs erreurs.
Merci beaucoup en tout cas 
|
|
mercredi 30 décembre 2009 à 11:04:24 |
Re : Probleme pour gérer attachMovieClip()

dj_ouf
|
Bah honnêtement je ne vois pas de solutions plus propre que celle ci...
Tu peux faire aussi dans le sens inverse, c'est à dire stocker dans un tableau toutes les variables de tir 'reference', puis boucler ce tableau dans le onEnterFrame pour tester individuellement si chaque tir touche le vaisseau. Mais après il faut effacer chaques référence du tableau quand il sort de l'écran ou touche le vaisseau, donc tu vois c'est bien plus compliqué..
Bref, je pense que cette technique est très bien 
|
|
mercredi 30 décembre 2009 à 11:17:24 |
Re : Probleme pour gérer attachMovieClip()

Siron123
|
Oui ^.^" on va garder celle ci,
Merci beaucoup pour ton aide!
|
|
Cette discussion est classée dans : code, reference, vaisseau, laser, attachmovieclip
Répondre à ce message
Sujets en rapport avec ce message
Urgent s'il vous plait... impossible de trouver le chemin d'acces d'un clip placé sur la scène ! [ par Siteauludo ]
Bonjour, voilà, je m'explique : je suis en train d'essayer de faire un mini-jeu, type plateforme. Bon j'ai 2 calques, un pour les actions, l'autre pou
Problème de laser dans un jeu [ par nicomilville ]
Salut,Voila je suis débutant en flash et je suis en train de créer un jeu, dans ce jeu j'ai 5 laser pour le vaisseau du joueur et 5 autre pour le vais
laser d'un jeu de vaisseau [ par snakeeater1 ]
bonjour je cherche un code AS pour créer un "laser" pour un jeu de vaisseau mais attention je voudrai que se laser soit continu et démarre lorsque le
attachmovieclip [ par naibaf71 ]
Ce code est super sympas pour moi qui suis débutant!j'essaye d'utiliser une partie de se code pour me faire les dents en action script mais celà ne ma
vitesse de tir [ par ftsdesign ]
bonsoir à tous.voici une nouvelle question qui curieusement n'a jamais été posée ( du moins pas à ma connaissance) :je fais un petit shut'em up en lig
vitesse de tir (2) [ par ftsdesign ]
bon, faut pas croire, je pose des questions mais je cherche !Et j'ai trouvé ce code (http://www.flashkod.com/code.aspx?ID=14200) :if (Key.isDown(Key.S
pb avec duplicateMovieClip [ par ftsdesign ]
voilà, toujours pour mon jeu, j'utilise un duplicateMovieClip pour créer les enemis. seulement, au bout d'un moment je ne me retrouve plus qu'avec un
Afficher un graphique après un clic sur un bouton [ par hanslepire ]
Hello,J'aimerais avoir une précision d'aaaah bruti !J'ai un bouton. Quand je clic dessus, j'aimerais qu'il m'affiche un graphique.on(release){ _root
Flash 6 et 7 [ par GrimleFurieux ]
j'ai un probleme de codeonClipEvent (keyDown) { if (Key.getCode() == Key.RIGHT) { right = 1; }}ce code fonctionne sous flash 6 mais pas 7 , savez vous
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|