Forum de discussion
Forum « Flash et Shockwave » (archives)
Re: Enième pb de Collision ... hitTest(x, y , true) et hitArea
Envoyé: 7 mai 2004, 16h19 par toph
je ne donne pas une solution que j'ai testé (j'ai vraiment pas le temps, désolé) mais plutôt une piste à exploiter :
en fait quand tu utilises hittest, il y a deux modes : soit tester le chevauchement de deux clips, soit en testant une coordonnée x/y précise...
Il est dit dans l'aide pour la fonction hitTest :
" Usage 2 : évalue les cadres de délimitation de cible et de l'occurrence spécifiée et renvoie true s'ils se croisent ou se recouvrent en un point. "
donc à priori, tu ne dois pas pouvoir faire ça avec hitTest(cible), puisque cela ne prend en compte que les cadre de délimitations des clips utilisés ... mais tu peux toujours essayer d'utiliser hitTest(x, y, baliseDeForme) ...
Tu as un troisième paramètre (booléen) qui détermine si la détection de collision doit se faire sur le clip (le carré qui englobe tout le clip, y compris les éventuelles parties invisibles) ou uniquement sur ce qui se voit(dans ton cas = le contours précis de l'épuisette) ...
" Usage 1 : compare les coordonnées x et y avec la forme ou le cadre de délimitation de l'occurrence spécifiée, en fonction du paramètre baliseDeForme. Si baliseDeForme est défini sur true, seule la zone occupée actuellement par l'occurrence sur la scène est évaluée, et si x et y se recouvrent, une valeur true est renvoyée. Cela est utile pour déterminer si le clip se trouve dans une zone sensible spécifiée. "
il faut cependant que tu définisses une zone réactive avec hitArea pour que cela fonctionne bien:
à l'intérieur de ton clip "epuisette", tu vas sélectionner ton épuisette et la retransformer en clip que tu appeleras et instancieras "zone_reactive" ensuite tu pourrais écrire un truc qui ressemblerait à ça :
epuisette.hitArea = epuisette.zone_reactive;
// cela définit la zone réactive du clip epuisette
papillon.onEnterFrame = function() {
if (this._parent.epuisette.hitTest(this._x, this_y, true)) {
this._parent.etat = "true";
gotoAndPlay(5);
} else {
this._parent.etat = "false";
}
};
je n'ai pas testé (vraiment pas le temps) mais je serais curieux de savoir si ça fonctionne vraiment...
Donc tiens nous au courant...
Réfère toi à l'aide en cas d'explications pas très claires, tout y est bien expliqué quant à ces deux fonctions ...
A plus
toph'
Réponses
|