Problème de position d'un Clip par rapport à la scène

delphijb Messages postés 9 Date d'inscription mardi 5 janvier 2010 Statut Membre Dernière intervention 12 janvier 2010 - 5 janv. 2010 à 22:27
delphijb Messages postés 9 Date d'inscription mardi 5 janvier 2010 Statut Membre Dernière intervention 12 janvier 2010 - 6 janv. 2010 à 02:19
Bonjour, je me présente: Jérémie, étudiant 3ème année en infographiste.

Voila, dans le cadre de mon TFE, je fais un jeu de plateforme en flash.
Mais je suis bloqué sur une bêtise que je n'arrive pas à résoudre.

En effet, j'ai, sur la scène, un clip dans un clip. (tout les deux sans nom d'occurence).
Sur le deuxième clip (celui au plus haut niveau), quand je fait:

trace(this._x), il me renvoi sa propre position en x par rapport au clip qui le contient.


Comment faire pour qu'il me renvoi sa position par rapport a la scène
et non par rapport au clip qui le contient ?


d'avance un grand merci

4 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
5 janv. 2010 à 22:35
Bonsoir.

Simplement ajouter la position du clip qui le contient.
Ou utiliser la méthode LocalToGlobal() (Flash 8 et sup).

Peg'
0
delphijb Messages postés 9 Date d'inscription mardi 5 janvier 2010 Statut Membre Dernière intervention 12 janvier 2010
5 janv. 2010 à 23:23
LocalToGlobal() ?

un grand merci, je vais me renseigner sur la methode. j'envoie les retour bientot
0
delphijb Messages postés 9 Date d'inscription mardi 5 janvier 2010 Statut Membre Dernière intervention 12 janvier 2010
6 janv. 2010 à 00:56
waou, bon j'ai essayé mais j'y arrive pas.


en fait, la methode fonctionnerai sans problem pour peu que mes clip soit nommée... mais ce n'est pas le cas !

ni les clip imbriqué, ni le clip final n'a de nom d'occurence. du coup, Le seul moyen de cibler le clip final,
c'est de mettre THIS._X dans ce clip en question... donc du coup, j'arrive pas a utiliser LocalToGlobal().

c'est très embettant car je dois justement "conserver" le fait de ne pas mettre de nom d'occurence.


en fait, le truc que je veux faire c'est (pour un clip imbriqué dans un autre):

_root.this.x pour avoir la position de this.x par rapport a _root. et non par rapport au clip qui le contient...
dommage que cette ecriture ne fonctionne pas...
0
delphijb Messages postés 9 Date d'inscription mardi 5 janvier 2010 Statut Membre Dernière intervention 12 janvier 2010
6 janv. 2010 à 02:19
Ok c'est bon, j'ai trouvé ! yahoooo
J'en profite pour faire part de cette expérience
à tout ceux à qui ca pourra profiter.


[b]Ce tuto à pour but de montrer comment on peut récupérer la position
d'un clip par rapport a un autre endroit de référence (un autre clip, la scène,...)/b




[*] Créer un objet qu'on appellera "generique".
[list]Cet objet devra être créé a l'endroit même de référence pour les coordonnées.
Si vous voulez récuperer les coordonnées de votre clip par rapport à la scène,
alors créer l'objet directement sur la scène (sur une image cle par exemple..)

var generique:Object = {x:0, y:0};
à copier directemnt sur la scène
/list


[*] Attribuer à cet objet "generique" les coordonnées x et y du clip convoité
[list]Comme nous avons créé un objet "vide" (enfin, avec comme valeur x:0 et y:0), nous
allons maintenant remplacer ces valeurs nulles par celles du clip pour lequel on se
donne tant de mal. [b](Attention: dans cet exemple, le code est placé dans le clip en
question, d'ou la présence de "this." Rien ne vous empêche de faire ca depuis un autre
endroit en le ciblant par son nom d'occurrence (à la place de "this.") ... )/b

_root.generique.x = this._x;
_root.generique.y = this._y;
à copier dans le clip à cibler
/list




[*] Créer le relation Globale.
[list]Cette "relation" va tout simplement transformer les coordonnées de l'objet
"générique" en coordonnée globale, cad que ces coordonnées ne vont plus tenir compte de
tout les clips intermédiaires, créant juste une relation entre le clip finale et la position
de l'objet. Je ne l'explique surement pas bien...
(Encore une fois, "this" est présent car ce code est directement dans le clip en question...)

this.localToGlobal(_root.generique);
à copier dans le clip à cibler, après les deux autres
/list



[*] ajuster les coordonnées x et y
[list]Une fois que vous avez tout fait, vous avez donc une relation cartésienne de type globale
entre votre clip et l'endroit que vous aurez choisi (ici, la scène).
Mais si vous testez maintenant, cette relation s'averera fausse. Il faut une petite astuce pour
contrer cela. On va créer 2 variables qui récupererons les coordonnées exactes de ce clip par rapport
à notre point de référence.

position_x = _root.generique.x - this._x
position_y = _root.generique.y - this._y
à copier dans le clip à cibler, après les trois autres
/list




Et voila ! vous pouvez tester la mécanique en imbriquant meme 10 clips les un dans les autres et en les
changeant de place, les 2 dernières variables de position dans le dernier clip imbriqué (celui qui contient le gros du code)
auront toujours la bonne position par rapport à la référence !

sur ce, il est 2h20 du mat donc bonne soirée à tout le monde !
0
Rejoignez-nous