HitTest dans Flash MX

Chamyky

Membre expert
Club MacG
11 Mars 2005
1 278
39
29
ehv.monespace.net
Bonjour. J'ai un problème dans Flash avec HitTest. En effet, cette fonction ne fonctionne pas ( :siffle: ) ! J'ai vérifié les deux chemins utilisés, ils sont bon ! Aucune erreur n'est renvoyée... le résultat est "undefined"... je nage... Aidez-moi SVP !
 

obi wan

Membre expert
Club MacG
19 Mars 2003
1 634
86
salut, si tu fais juste un fla avec deux clips nommés "carre" et "cercle"

et que tu mets ce code sur une image-clé (pas sur le clip hein), ça fonctionne... :

carre.onMouseMove = function() {
this._x = _xmouse;
this._y = _ymouse;
var prov:Boolean = this.hitTest(this._parent.cercle);
if (prov) trace("contact");
}

la fonction unClip.hitTest(unAutreClip) te renvoie un booléen, donc true ou false... en espérant que ça t'aidera à y voir clair...
 

obi wan

Membre expert
Club MacG
19 Mars 2003
1 634
86
ben en fait il vaut mieux pas, c'est "déprécié" comme méthode de programmation.

Il vaut mieux centraliser le code sur des images clés du scénario, en utilisant la synthaxe pointée (càd this.leNomDuClip.uneFonction = function() { } )

Mettre du code sur les movieClip, ça aide pas du tout à bien saisir comment programmer avec flash (et ça date un peu... flash 4/5).

Je vais essayer de te trouver des liens sur la programmation depuis flash 6...
 

obi wan

Membre expert
Club MacG
19 Mars 2003
1 634
86
peux tu expliquer ce que tu veux qu'il se passe ?

je te ferai un fichier commenté, ça vaut mieux, parce qu'il y a pas mal de choses dans ton code qui doivent t'auto-embrouiller...

j'ai du mal à comprendre le but du truc, si tu peux juste un peu éclairer ça, ça suffira. (enfin déjà en rallongeant les images du calque inférieur jusqu'au bout, tu retrouves un brin de fonctionnement correct, je crois... mais toujours pas le but final à mon avis.

voilou, j'attends tes instructions... ;)
 

Chamyky

Membre expert
Club MacG
11 Mars 2005
1 278
39
29
ehv.monespace.net
obi wan a dit:
...voilou, j'attends tes instructions... ;)

Eh bien, les voilà.

J'aimerais simplement que lorsqu'une barre se déplie, elle ai la possibilité d'entrer en collision avec un "connecteur". (dont les occurences se nomment de c0 à c9, même si je n'en n'ai mis pour l'instant que 2)
Quand elle entre effectivement en collision, elle s'arrête.
Une fois cette étape passée, je trouverais facilement comment faire la suite...

Voilà, j'espère avoir été clair.

Merci de m'aider !! :love: :love:
 

obi wan

Membre expert
Club MacG
19 Mars 2003
1 634
86
tes barres ne se "déplient" pas comme tu dis, et non, désolé mais pour moi un "connecteur" ce n'est pas clair (il faut me parler comme à un enfant de 4 ans avec des mots que je connais, genre carré, rond, rectangle... en poussant un peu je peux saisir des concepts comme l'hexagone... Mais comprendre ce que tu veux, là j'avoue que c'est difficile.

En regardant ton code, j'avoue que je comprends même rien du tout à ce que tu as voulu faire avec hitTest... efin bon, si tu expliques vraiment je pourrais essayer de te montrer deux ou trois choses très utiles (là tu programmes en flash 4, et c'est difficile pour moi de comprendre...

si ta fonction hitTest ne fonctionne pas, c'est qu'il y a une erreur de syntaxe dans ton utilisation de eval, ligne 5, images 2 et 3 du calque 3 (celui qui ne contient que du code) :

tu as écris :
if (eval("c" + blcc + ".barre.hitTest(_root.c" + blc + ")")) {

et il faudrait faire comme ça (si on voulait utiliser eval) :
if (eval("c" + blcc + ".barre").hitTest(eval("_root.c" + blc))) {

Mais on veux pas utiliser eval, parce que c'est déprécié et que ça risque de plus fonctionner dans les prochaines versions de flash... Donc il faut le faire en syntaxe pointée :
if (this["c" + blcc].barre.hitTest(this["c" + blc])) {

l'utilisation de eval est à éviter à tout prix, il faut préférer le système des crochets

Accessoirement, je trouve ton test très bizarre, parce qu'il ne peut être que vrai... tu demandes à flash si la barre est en contact avec son propre conteneur (qui contient donc la barre elle même...) donc là il y a un problème de concept du code.

En changeant ça et en prolongeant le calque 1 jusqu'au bout du 3 (là il lui manque une image), il me semble avoir un semblant de fonctionnement.

Mais je vois toujours pas le but, et je vois pas où ni comment les barres grandissent.
 

Chamyky

Membre expert
Club MacG
11 Mars 2005
1 278
39
29
ehv.monespace.net
Eh bien, un « connecteur », c’est : un rond arrondi circulaire bleu dans un autre rond circulaire arrondi gris sous lequel se trouve une barre grise composées de rectangles avec quatre angles droits.

Quand tu cliques sur se rond gris, la barre tourne. Quand tu clique sur le rond bleu, la barre se déplie.


Est-ce que tu pourrais me donner le fichier .fla après modification ? Ca m’aidera à comprendre les choses, merci.

Si je ne comprend pas très biebn et que je « programme en Flash 4 », c’est parce que, eh bien, je suis un débutant tout ce qu’il y a de plus pur. :rose:
Alors, bon, moi, je débarque !
Merci de ton aide précieuse. :) :)