| Erreur de logique, j'ai dja pété trois piles | |
|
|
Auteur | Message |
---|
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 15:32 | |
| Bonjour tout le monde, Faites pas gaffe au titre, mais bon, voilà, j'ai eu l'idée de faire une barre sous gm pour remplacer la barre de la fenêtre (celle avec le titre et les trois boutons :oui: ). Pour le déplacement, après un check pour voir si la souris est au bon endroit, je fais : - Code:
-
window_set_position(display_mouse_get_x()-mouse_x,display_mouse_get_y()-mouse_y); or, ça ne marche (évidemment pas), la fenêtre ne bouge pas. J'ai essayé de décaler la récup de position avec le déplacement de 10 ms mais rien, rien, rien quelqu'un sais pourquoi ça ne marche pas ? merci. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 15:39 | |
| ? tu veux que la fenetre suive la souris ? window_set_position(display_mouse_get_x(),display_mouse_get_y()) |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 15:56 | |
| Non parce que window_set_position fait référence au pixel 0,0 de la fenêtre. Or, moi, je veut reproduire la barre supérieure de la fenêtre, et on suppose que l'utilisateur clique n'importe où sur cette barre, d'où l'utilité de calculer la position de la fenêtre en fonction de la position de la souris dans celle-ci. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 16:04 | |
| en tout cas ton code window_set_position(display_mouse_get_x()-mouse_x,display_mouse_get_y()-mouse_y); ne fait que recuperer la position de la fenetre donc normal que ça marche pas. Apres j'ai pas trop reflechi au probleme mais GM ne gere pas les evenements hors de la fenetre non ? Donc si tu clique sur la barre superieure je sais pas si y a moyen de faire quelque chose... |
|
| |
red-error Utilisateur confirmé: Rang ****
Messages : 1015 Projet Actuel :
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 16:28 | |
| Ben tu veux pas le déplacer selon la position de la souris, mais selon la position où la souris a cliqué non ? Clique : mx=mouse_x; my=mouse_y;
window_set_position(display_mouse_get_x()-mx,display_mouse_get_y()-my);
(Le problème c'est que mouse button se fait avant mouse pressed alors utilise une variable ou teste dans step dans l'ordre. ) |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 18:56 | |
| non c'est pas ce que je veux faire. Vous voyez la barre au dessus de votre fenêtre, avec le titre de la fenêtre et les boutons; ben en mode fenêtre on peut laisser le curseur appuyé dessus et la déplacer librement. Je veux obtenir ce résultat. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 19:22 | |
| ouai mais dans la fenetre c'est ça ? si c'est juste ça c'est tout con en tt cas |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 20:41 | |
| - Citation :
Imperatif : a mettre dans l'objet 'fenetre'
create : xwin=30 //abscisse de la fenetre ywin=30 //ordonnée de la fenetre wwin=240 //largeur de la fenetre hwin=240 //longueur de la fenetre mbmove=0
draw :
if mouse_rect(xwin,ywin,xwin+wwin,ywin-16) { if mouse_check_button_pressed(mb_left) { mx1=mouse_x my1=mouse_y mbmove=1 } } if mouse_check_button(mb_left) && mbmove=1 { mx2=mouse_x my2=mouse_y xwin-=mx1-mx2 ywin-=my1-my2 mx1=mouse_x my1=mouse_y } if mouse_check_button_released(mb_left) { mbmove=0 }
script : mouse_rect(x1,y1,x2,y2) : var x1,y1,x2,y2; /* arg0 = mouse_x min arg1 = mouse_y min arg2 = mouse_x max arg3 = mouse_y max */ x1=min(argument0,argument2) y1=min(argument1,argument3) x2=max(argument0,argument2) y2=max(argument1,argument3)
if mouse_x>x1 && mouse_y>y1 && mouse_x<x2 && mouse_y<y2 return 1 else return 0; je pense que c'est ce que tu voulais |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 21:03 | |
| euh où tu déplaces la fenêtre là dedans ? |
|
| |
red-error Utilisateur confirmé: Rang ****
Messages : 1015 Projet Actuel :
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 21:24 | |
| - Mass a écrit:
- non c'est pas ce que je veux faire.
Vous voyez la barre au dessus de votre fenêtre, avec le titre de la fenêtre et les boutons; ben en mode fenêtre on peut laisser le curseur appuyé dessus et la déplacer librement. Je veux obtenir ce résultat. Et moi je te dis que mon code fonctionne farpaitement pour ça. :gniah: (C'es bizarre come les gens veulent pas me croire quand je réponds...) "Drag'n'Drop please" |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 22:01 | |
| oui : quand la souris est placé entre x1,x2 et y1,y2 (mouse_rect) et que tu a appuyer sur mb_left, la variable de mise en mouvement est activé (mb_move) et les premieres variables de difference ont la valeur de l'abscisse et d'ordonné de la souris ensuite, il prend les deuxiemes variables de difference ont la valeur de l'abscisse et d'ordonné de la souris et il fait la difference entre la premiere et la deuxieme valeur et l'ajoute a l'abscisse et d'ordonné de ta fenetre (il repete ca TANT QUE mb_left est pressé). enfin, des que tu relache le bouton, il desactive la variable de mise en mouvement. voila, je vais te faire un exemple si tu ne vois pas comment faire. edit : attention, ceci est pour deplace un objet en forme de fenetre, sinon renplace : xwin=mx1-mx2 ywin=my1-my2 par : window_set_position(window_get_x()-(mx1-mx2),window_get_y()-(my1-my2)); voila l'exemple : Download exdeplacer.gmkPS : j'ai essayer de faire ce que tu a dis red-error, mais ca ne marche pas, je l'ai mis dans mon exemple, regarde par toi meme. |
|
| |
red-error Utilisateur confirmé: Rang ****
Messages : 1015 Projet Actuel :
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mar 15 Juin 2010 - 22:55 | |
| Ben c'est du pareil au même, j'ai la même chose dans mon GMK posté plus haut (dans trois event mais moins de code), un mouse pressed, un mouse released, et une variable. Mais j'ai seulement deux variables pour retenir le mouse_x/y, alors que tu en as... quatre ?
En fait toi ta position est relative à la dernière position de l'écran (tu y ajoute la vitesse de la souris si je comprends bien) donc deux variables position de la souris (addition de vecteurs) alors que la mienne se base juste sur le premier clique pour savoir de combien la souris a bougé en tout selon les deux positions (et donc seulement une variable position, un vecteur).
En tout cas là si Mass n'a pas de réponse dans la masse... :gniah:
Par contre on peut pas faire plus court en enlevant la variable de test on dirait, même en les mettant tous les deux dans step check_button se fait avant check_pressed, bizarre. ^^ |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles Mer 16 Juin 2010 - 0:55 | |
| - red-error a écrit:
- Ben c'est du pareil au même, j'ai la même chose dans mon GMK posté plus haut (dans trois event mais moins de code), un mouse pressed, un mouse released, et une variable.
Mais j'ai seulement deux variables pour retenir le mouse_x/y, alors que tu en as... quatre ?
c'est normal, j'ai pris ca dans mon proget de fenetre (du GUI-Multitache), c'est pour ca que au debut j'ai precisé que ce que j'ai fais etait destiné a un objet |
|
| |
Contenu sponsorisé
| Sujet: Re: Erreur de logique, j'ai dja pété trois piles | |
| |
|
| |
| Erreur de logique, j'ai dja pété trois piles | |
|