piere2
Messages postés235Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention26 mai 2013 3 janv. 2010 à 10:40
Dans ce cas il faut préciser les coordonnées du clip en _x et en _y plus les largeurs et hauteurs du clip pour ensuite repérer la présence d'un clip dans ce rectangle virtuel.
Ce n'est pas si simple que cela y parait et à l'occasion je me pencherais sur le problème.
Je ne me sers pas de flash pour réaliser des jeux et je n'ai donc pas eu à résoudre ce genre de problématique.
A l'évidence un spécialiste des jeux en flash aurait certainement une réponse toute prête.
Pi'ère2
Vous n’avez pas trouvé la réponse que vous recherchez ?
maoxiung
Messages postés51Date d'inscriptionlundi 28 janvier 2008StatutMembreDernière intervention11 mai 2019 3 janv. 2010 à 12:16
merci encore !
ah bin oui, ça pouvait pas être si simple que ça...
pourtant je pensais que si le hitTest permettait de savoir si un-certain-clip touche tel autre clip, flash comparait forcément tous les clips en contact avec un-certain-clip
donc je me disais que ça devait pas être grand chose de comparer leur noms
en fait je voulais faire un truc dans ce genre (code sur un-certain-clip) :
if (this.hitTest(this._parent.icone ici un code qui dise: "+ 2 chiffres "[b]){
action;}/b
ou bien demander à flash de slicer tout les noms des clips qui touche un-certain-clip avant de vérifier la condition :
piere2
Messages postés235Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention26 mai 2013 3 janv. 2010 à 23:34
Je viens d'apprendre quelque chose en découvrant hitTest.
Et je pense qu'il faut 'revoir la copie'.
Y-a-t'il sur la scène plusieurs occurrences de divers clips de base comme "icône"?
Y a t'il un seul clip qui teste les autres clips ou faut-il que tous les clips puissent évaluer les clips qu'ils croisent?
Quelle action est déclenchée si un clip croisé se nomme "icône"+x?
maoxiung
Messages postés51Date d'inscriptionlundi 28 janvier 2008StatutMembreDernière intervention11 mai 2019 4 janv. 2010 à 00:19
ah oui ça c'est le problème de parler de clip alors qu'il s'agit d'occurrence
mais je ne sais pas trop quel est le consensus la dessus pour en parler
il y a-t-il une façon de parler court pour dire occurrence de clip?
Mais pour répondre, voila:
>j'ai plusieurs clip en liaison action script
>les occurrences de clip sont générés dynamiquement en pointant sur ces clips et sont nommés à la volée par le string "icone"+ un numéro
>il peut y avoir plusieurs occurrences du même clip sur la scène
>chaque occurrence peut être déplacée
>c'est seulement on release qu'on doit évaluer la présence, ou non, d'un contact
deux solutions :
-si la place est disponible (si l'occurrence n'en touche pas une autre) : elle se pose là, mais rangée sur une sorte de grille
-si la place est occupée (si l'occurrence en touche une autre): elle se remet là où on l'a prise
>tout le code concernant ceci est un fichier .as appelé par chaque icone, donc commun
j'espère que c'est pas trop confus !
sinon je connais du tout for, je découvre
faut que je vois comment marche ce for in
pour l'instant je comprend pas...
la variable i par exemple...
je vais potasser
piere2
Messages postés235Date d'inscriptionlundi 26 février 2007StatutMembreDernière intervention26 mai 2013 4 janv. 2010 à 10:00
Je te propose de faire ce simple exercice;
tu crée un clip dans la bibliothèque que tu nomme 'clip' et que tu exporte pour action script.
J'ai fais un simple carré noir de 20 pixels de côtés.
Sur la scène ce code:
th = this;
for (i=0; i<10; i++) {
th.attachMovie("clip","clip"+i,i,{_x:20*i, _y:20*i});
}
for (i in th) {
if (th[i] instanceof MovieClip) {
th[i].onRelease = function(){
trace(this._name);
}
}
}
maoxiung
Messages postés51Date d'inscriptionlundi 28 janvier 2008StatutMembreDernière intervention11 mai 2019 4 janv. 2010 à 14:17
ça y est je le tient !
en fait si ça me renvoyait du undefine c'est parceque le clip sur lequel on clic est un child des occurences "icone"
le this._parent aurait du être un this._parent._parent
c'est ce que je n'avait pas bien compris avec la création dynamique...
car (si maintenant j'ai bien compris):
on ne peux pas faire un clip directement, il faut en fait faire un clip vide qui en contient un autre, c'est bien ça ?
bon en tous cas voila ce que ça donne pour le code:
for (var i:Number = 0; i <= 100; i++) {
if (this._parent._parent["icone"+i]._name.slice(0,5)== "icone"){
action;
}
}
mon code complet (si ça t'intéresse) donne ça:
catchx et catchy est la position en xy de l'icône au moment du grab
ces variables sont déclarées sur onpress
dans else c'est ma pseudo grille, disont "dynamique" mais je sais pas trop comment appeller ça
for (var i:Number = 0; i <= 100; i++) {
if (this._parent._parent["icone"+i]._name.slice(0,5)== "icone"){
if (this.hitTest(this._parent._parent["icone"+i])) {
this._x= catchx;
this._y= catchy;
}
else {
this._x=(Math.round(this._x/64)*64)-16;
this._y=(Math.round(this._y/94)*94)-30;
}
}
}
et merci encore d'avoir été là Pi'ère2
je débute et balbuti en programmation et en flash
mais j'avoue que ça m'a fait bien plaisir de mixer nos idées pour décanter tout ça
toujours est-il que sans ton coup de pouce j'y serais encore
maoxiung
Messages postés51Date d'inscriptionlundi 28 janvier 2008StatutMembreDernière intervention11 mai 2019 4 janv. 2010 à 17:26
ah d'accord, il n'y a pas besoin de createmovie, on peut attacher directement un clip à la scène
je ne sais pas pourquoi je pensais ça
j'ai du essayer pourtant mais ça n'avais pas du marcher
du coup je m'étais lancé dans cette série de boitte vide
ça simplifie beaucoup les affaires et là ça marche un peu mieux
for (var i:Number = 0; i <= 72; i++) {
if (this._parent["icone"+i].hitTest(_root._xmouse, _root._ymouse, true)) {
retour au départ;
}
else {
rangement sur grille;
}
}
mais ça ne marche pas toujours, je pense que le hitest prend en compte l'icone draguée