Tester si le nom d'un clip contient un string défini

maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 mai 2019 - 1 janv. 2010 à 23:08
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 mai 2019 - 4 janv. 2010 à 17:52
bonjour à tous et bonne année !

alors voila: mon code génère dynamiquement des clips en les nommant "icone"+depth
depth étant une variable récupérant la profondeur du clip créé

ce qui donne des noms de clip du type "icone10" par exemple

je cherche a valider un hitest seulement avec les clips dont le nom contient "icone"

voila donc ma question:

comment récupérer la présence du string "icone" dans le nom des clips?

c'est sans doutes une question bête...
j'ai beau chercher je ne trouve pas ce que je veux
pourtant ça ne doit pas être très compliqué...

16 réponses

piere2 Messages postés 235 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 26 mai 2013
2 janv. 2010 à 22:38
Bonjour,

if (nomduclip.slice(0,5)== "icone"){
action...;
}


Pi'ère2
0
piere2 Messages postés 235 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 26 mai 2013
2 janv. 2010 à 22:39
Plus précisément.

nomduclip = monclip._name;


Pi'ère2
0
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 mai 2019
3 janv. 2010 à 03:14
merci de la réponse rapide !

euh...donc j'espère que je comprend:

nomduclip est une variable qui prend le string du nom d'occurence de monclip
sauf que je n'ai pas monclip

mon intitulé est mal exprimé
j'essaie de préciser comme ceci:

le hitest dois valider qu'un certain clip touche n'importe quel autre dont le nom contient "icone"

mais je viens de comprendre la méthode slice !
c'est déjà pas mal...
0
piere2 Messages postés 235 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 26 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 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 :

[b]if (this.hitTest(this._parent.icone{
action;}/b
0
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 mai 2019
3 janv. 2010 à 21:23
peut-être avec quelque chose comme ça ? :

for (var i = 1; i <= 100; i++) {
if (this._parent["icone"+i].hitTest(this)) {
action;
}

mais je teste et ça ne marche pas...
0
piere2 Messages postés 235 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 26 mai 2013
3 janv. 2010 à 22:53
Si tu veux tester n'importe quel mc;
for(i in this){
if(this[i] instanceof MovieClip){
actionxxx;
}
}


Pi'ère2
0
piere2 Messages postés 235 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 26 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?

Pi'ère2
0
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 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
0
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 mai 2019
4 janv. 2010 à 00:40
en fait je viens de tester mon for de tout à l'heure avec un trace et le this._parent["icone"+i] retourne du undefine...
0
piere2 Messages postés 235 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 26 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);
}
}
}



Pi'ère2
0
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 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

j'espère à une prochaine
0
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 mai 2019
4 janv. 2010 à 14:22
oh non c'est pas bon en fait, il ne passe jamais sur le else...
faut que je m'y remette...
0
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 mai 2019
4 janv. 2010 à 14:33
ok, je crois que j'ai compris
je crois j'ai toujours un hit parceque le clip vide fait toute la scène...

pas simple ce create movie...
0
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 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
0
maoxiung Messages postés 51 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 11 mai 2019
4 janv. 2010 à 17:52
eh oui c'était bien ça...

mais ça y est enfin!
et cette foi ci ça marche du feu de dieu

for (var i:Number = 0; i <= 72; i++) {
if(this._name.slice(5,7)!= i){
if (this._parent["icone"+i].hitTest(_root._xmouse, _root._ymouse, true)) {
retour au départ;
}
else {
rangement sur grille;
}
}
}

merci encore et désolé pour mon style brouillon
0
Rejoignez-nous