Rotation d'un clip en fonction de la souris et plein écran

mchicault Messages postés 18 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 août 2009 - 26 août 2009 à 15:42
mchicault Messages postés 18 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 août 2009 - 26 août 2009 à 20:55
Bonjour,

je suis en train d'essayer d'appliquer une rotation à un clip en fonction de la souris et j'aimerais que cette rotation reste constante quelque soit la taille de la fenêtre. Avec des schémas, c'est plus clair :



Ici, pas de problèmes, lorsque la taille de la fenêtre correspond à la taille de la scène, j'arrive à répartir la rotation des deux cotés de la scène, c'est à dire 60 d'un coté et -60 de l'autre.



En revanche, lorsque que la fenêtre est plus grande que la scène (en plein écran par exemple),je n'arrive pas à obtenir une rotation de -60 et 60 en fonction du bord de fenêtre vers lequel je rapproche ma souris .


Cette page montre tout à fait ce que je veux faire point de vue rotation: Tiltviewer. Vous remarquerez que quelque soit la taille de la fenêtre la rotation reste constante quand on s'approche d'un bord de l'écran .

Si quelqu'un à une idée, elle serait la bienvenue !!

13 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
26 août 2009 à 16:08
Bonjour, il suffit de récupérer la taille de ton animation avec les propriétés stage.stageWidth et stage.stageHeight et d'y appliquer une règle de 3.

Rien de très compliqué en soi.

Peg'
0
mchicault Messages postés 18 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 16:35
Bonjour et merci de la réponse !

Je connais les propriétés stage.stageWidth et stage.stageHeight mais pourrait tu être un peu plus précis dans ton explication ?

Actuellement, je centre mon repère en divisant la taille de la scene par 2 et j'en y sous soustrais les coordonnées de la souris. Pour une scène de 1000px, lorsque la souris est à gauche cela me donne 500 au milieu 0 et à droite -500. Je n'est donc plus qu'à ramener le tout sur une échelle de 0 à 60 pour faire ma rotation.

Le problème lorsque ma fenêtre est plus grande que ma scène, c'est que sur la gauche, je me retrouve avec des coordonnées de souris négatives (par exemple -250 jusqu'à 1250) puisque la scène est centrée sur la page. Et la je cale .
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
26 août 2009 à 16:42
Déplace ta coordonnée de référence par rapport à celle du centre de ton clip.
Il faut obtenir un chiffre entre -1 et 1 que tu multiplieras par l'angle de rotation voulu ... ce sont de simples maths et tu as ta réponse donnée dans tes schémas. Dois-je te donner la formule toute faite ?:p

Peg'
0
mchicault Messages postés 18 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 16:55
Heuuu.... dsl, mais je comprends pas bien ta première phrase :

"Déplace ta coordonnée de référence par rapport à celle du centre de ton clip"

Après pour le reste, je vois très bien à quoi il faut arriver mais comment faire pour y arriver .... j'dois vraiment être nul en maths .
0

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

Posez votre question
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
26 août 2009 à 17:03
Ben quand mouseX=0 => coef=-1, mouseX=stageWidth/2 => coef=0 et mouseX=stageWidth => coef=1.

Peg'
0
mchicault Messages postés 18 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 17:30
Ok merci,

Mais de ce coté ça roule, ce qui me posait problème c'était que la coordonnée minimum (le coef 1), c'était pas 0, mais par exemple -250 .

Mais c'est en regardant ton dernier message que j'ai tilté . En fait c'était tout bête !! il fallait juste que je ramène la valeur -250 de mouseY par exemple à 0 pour ne plus avoir de coordonnées négatives (en somme que je déplace mon repère), et après j'ai appliqué la même méthode que lorsque la scène est de la même taille que la fenêtre .

Par contre, juste par curiosité, c'était quoi la règle de 3 dont tu parlais parce que j'en ai pas utilisé (ou alors j'en ai fait une sans le réaliser)

Merci !!
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
26 août 2009 à 17:39
la règle des 3 c'est :

mouseX/stageWidth = ?/rotationMax

Tout simplement.

Peg'
0
mchicault Messages postés 18 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 17:56
Yes !!!

En fait, on était pas vraiment sur la même longueur d'onde !!

Avant de faire cette fameuse règle de trois, il fallait d'abord que je réussisse à recentrer mon repère en fonction de la nouvelle taille de ma fenêtre !
Et j'ai cru que tu me disais de faire une règle de trois pour le faire .

Mon problème c'était pas d'arriver à déduire un coefficient pour pouvoir obtenir la rotation, ce qui est effectivement simple, mais de replacer le repère pour récupérer des coordonnées uniformes de part et d'autre de l'écran (ce qui est tout aussi simple au final )
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
26 août 2009 à 18:02
les deux sont faisable.

Soit tu décales le repère avant et tu obtiens un coef -1à1, soit après et tu obtiens un coeff (0à2)-1.

Peg'
0
mchicault Messages postés 18 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 18:08
ouep, t'as entièrement raison .

et là où on était pas sur la même longueur d'onde, c'est que ce que je ne trouvais pas, c'était comment décaler le repère (que ce soit avant ou après) et pas obtenir le coeff
0
mchicault Messages postés 18 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 18:29
Heuu quoique,

je sais que ça n'a plus beaucoup d'intérêts maintenant, mais j'ai pas envie de mourir idiot :

si on essaye de calculer l'angle avant de recaler le repère ça donne quelque chose comme ça:

Admettons que notre scène originale fasse 1000px et que la fenêtre fait 1500px. Le centre de notre scène se trouve donc être à la coordonnée 500 et les bords gauche et droit sont respectivement aux coordonnées -250 et 1250.

Si on applique la règle de trois pour rapporter une échelle de 0 à 60(rotation max) entre 500 et 1250 (donc une moitié de l'écran), cela ne pose pas de problèmes. Mais si on essaye de faire la même chose pour la moitié gauche de l'écran c'est à dire entre 500 et -250 cela pose un problème. Vu que les variables dans nos équations sont les coordonnées de la souris et que celles-ci partent de 500 pour descendre à 0 puis repartir vers -250, on obtient forcement un angle faussé entre 0 et -250, non
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
26 août 2009 à 20:22
ben ta souris est forcément positive, car le coin haut-gauche est à 0:0 ... pour éviter les ennuis, tu dois ajouter à ton animation :

stage.align = "lt";
stage.scaleMode = "noScale"

Et le tour est joué.

Peg'
0
mchicault Messages postés 18 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 26 août 2009
26 août 2009 à 20:55
Je me disais aussi .

Comme tu peux le voir sur les images plus haut, dans mon cas, ma scène est centrée au milieu de l'écran et je me retrouve donc avec des coordonnées négatives .

Désolé d'avoir un peu insisté, mais à force de pas comprendre, je pensais que j'étais devenu vraiment très nul en maths. Le fait qu'on parlait pas tout à fait de la même chose me rassure.

Merci encore !
0
Rejoignez-nous