| [Résolu]Formul barre de scrolling | |
|
|
Auteur | Message |
---|
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: [Résolu]Formul barre de scrolling Dim 14 Aoû 2011 - 22:38 | |
| Salut Tout d'abord je n'utilise pas gm mais si je l'utilisais ça serais pareille. Je cherche à faire une barre de scrolling qui ferais défilé le niveau. Je cherche donc la formule d'une barre de scrolling. Voilà mes var : x//coordonnée x de la barre y//coordonnée y de la barre mouseX, mouseY//coordonnées dans la fenêtre pas dans la room viewX, viewY, viewW, viewH roomW, roomH Le sprite de la barre fait 66 px de large. Merci d'avance
Dernière édition par jbg77 le Mer 17 Aoû 2011 - 9:24, édité 2 fois |
|
| |
robinlife Utilisateur confirmé: Rang ****
Messages : 977
| Sujet: Re: [Résolu]Formul barre de scrolling Dim 14 Aoû 2011 - 23:32 | |
| Utilise les fonctions commme view_xview et view_yview (RTFM MF !!) _________________ suivez moi sur ig : @kostozbrr
|
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: [Résolu]Formul barre de scrolling Lun 15 Aoû 2011 - 0:01 | |
| Je demande une formule, faut lire. edit : + je n’utilise pas gm
Dernière édition par jbg77 le Lun 15 Aoû 2011 - 0:04, édité 1 fois |
|
| |
robinlife Utilisateur confirmé: Rang ****
Messages : 977
| Sujet: Re: [Résolu]Formul barre de scrolling Lun 15 Aoû 2011 - 0:03 | |
| Ah ouais, tu veux dire quoi par formule, un calcul? Moi je dit script ou code pour ce que tu veux faire. edit : Et t'utilise quoi ? _________________ suivez moi sur ig : @kostozbrr
|
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: [Résolu]Formul barre de scrolling Lun 15 Aoû 2011 - 0:08 | |
| Un calcule du genre : - Code:
-
x = (mouseX-SprScroll.width/2); viewX = roomW * SprScroll.width / (mouseX+viewX - x);
Malheureusement ça ne marche pas... Onilink_ m'as passé ça mais ça ne marche pas non plus : - Code:
-
x = room_width * scrollbar.width / (mouse_x - scrollbar.x); J'utilise processing, et j'ai vu ton message "j'ai lu" Tu as failli mourir |
|
| |
robinlife Utilisateur confirmé: Rang ****
Messages : 977
| Sujet: Re: [Résolu]Formul barre de scrolling Lun 15 Aoû 2011 - 0:10 | |
| Oui euh j'ai mal lut enfait _________________ suivez moi sur ig : @kostozbrr
|
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1482 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [Résolu]Formul barre de scrolling Lun 15 Aoû 2011 - 0:46 | |
| Je comprend pas tous ce que tu as dit. Cela dit, une barre de scrolling est trés simple. on note p la proportion de l'avancement de l'ascenseur sur la barre (genre p=(position_ascenseur-position_haut_barre)/hauteur barre) On note H la hauteur de ta page. On note h la hauteur de ta view On note x la position du haut de ta view dans ta page. ensuite il nous faut une relation affine entre x et p. donc x=ap+b on sait que si p=0 x=0 donc b=0; et quand p=1 x=H-h (si tu comprend pas pourquoi j'expliquerais) donc H-h=a Donc la formule est: x=(H-h)*p CQFD ^^ Donc si ta barre prend toute la hauteur de ta view. Donc position_barre=0 Taille barre=H Donc x=(H-h)/H * (pos_ascenseur) Bon après si ton ascenseur à une hauteur en fonction de la taille de ta page, c'est légèrement plus compliqué |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: [Résolu]Formul barre de scrolling Lun 15 Aoû 2011 - 16:28 | |
| ça ne marche pas : - Code:
-
if (mouseX >= x && mouseX <= x+SprScroll.width && mouseY >= y && mouseY <= y+SprScroll.width && mouseButton == LEFT && mousePressed == true ){ x = (mouseX-SprScroll.width/2); } viewX= (roomW-viewW)/(tailledusprite) * x; |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1482 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [Résolu]Formul barre de scrolling Mar 16 Aoû 2011 - 0:34 | |
| Je sais pas. Bon je te donne une solution toute faite que tu pourra adapter si elle marche Ca fait longtemps que j'ai pas touchez GM, donc je peux me tromper dans les noms. cocher dans la room le fait d'avoir une view (la 0) Créer un objet ascenseur Donnons lui un sprite carré disons: (10*64) - Code:
-
create: view_xview[0]=0 view_yview[0]=0 x=0; y=0; yy=0; grab=false;
step:
// gestion de l'ascenseur
if (mouse_check_button_pressed(mb_left)) { if (mouse_x>x and mouse_x<x+10) { if (mouse_y>y and mouse_y<y+64) { grab=true yy=mouse_y-y } } }
if (grab) { y=mouse_y-yy if (mouse_check_button_release(mb_left) { grab=false } }
// gestion de la vue p=x/(view_height-64) view_xview=(room_height-view_height)*p
Voila, Après tu peux modifier le code pour placer l'ascenseur sur la droite Tu peux ajouter un arrière plan pour faire une barre derrirère l'ascenseur Bonne chance. |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: [Résolu]Formul barre de scrolling Mar 16 Aoû 2011 - 11:18 | |
| Ok merci, je vais testé mais comme dits en haut je n'utilise pas gm. edit : merci ça marche super edit 2 : Normal que la view avance d'un coup ? edit 3 : Je passe ma class : - Code:
-
class scollRoomH { int x,y,yy; boolean grab; float p; scollRoomH(int _x, int _y) { x = _x; y = _y; yy=0; grab=false; } void step() { if (mouseButton==LEFT && mousePressed==true) { if (mouse_X>x+viewX && mouse_X<x+10+viewX) { if (mouse_Y>y && mouse_Y<y+64) { grab=true; yy=mouse_Y-y; } } }
if (grab) { y=mouse_Y-yy; if (mouseButton==LEFT && mousePressed==false) { grab=false; } }
if (y+66 > roomH*32) y = roomH*32 - 66; if (y < 0) y = 1; // gestion de la vue p=y/(viewH-64); viewY=int((roomH*32-viewH)*p); drawSprite(x+viewX,y,SprScrollH); } } Toutes les variables sont des int sauf p et bien sur les images. |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: [Résolu]Formul barre de scrolling Mar 16 Aoû 2011 - 20:47 | |
| Un petit up |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1482 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [Résolu]Formul barre de scrolling Mar 16 Aoû 2011 - 20:56 | |
| scollRoomH(int _x, int _y) { x = _x; y = _y; yy=0; grab=false; }
Je ne sais pas si c'est bien bon le grab=false ici (enfin j'en sais rien, sa dépend de ton usage)
Sinon sa peux venir d'un autre truc
_pressed() est _release() ne durent que 1 step. Ton mouse_pressed dure plein de step (le temps que la souris est appuyé)
|
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: [Résolu]Formul barre de scrolling Mar 16 Aoû 2011 - 22:29 | |
| Je n’utilise pas Game Maker |
|
| |
robinlife Utilisateur confirmé: Rang ****
Messages : 977
| Sujet: Re: [Résolu]Formul barre de scrolling Mar 16 Aoû 2011 - 22:43 | |
| On le sait que tu utilise Game Maker... _________________ suivez moi sur ig : @kostozbrr
|
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: [Résolu]Formul barre de scrolling Mar 16 Aoû 2011 - 23:01 | |
| Bon j'ai trouvé le problème venais du type de variable p ne pouvais être qu'entier. Voilà les deux class corrigé : - Code:
-
class scollRoomW { int x,y,xx; boolean grab; double p, xdouble; scollRoomW(int _x, int _y) { x = _x; y = _y; xx=0; grab=false; } void step() { if (mouseButton==LEFT && mousePressed==true) { if (mouse_X>x+viewX && mouse_X<x+64+viewX) { if (mouse_Y>Y+viewY && mouse_Y<y+10+viewY) { grab=true; xx=mouseX-x; } } }
if (grab) { x=mouseX-xx; if (mouseButton==LEFT && mousePressed==false) { grab=false; } }
if (x+66+viewX > roomW*32) x = roomW*32 - 66-viewX; if (x < 0) x = 0; // gestion de la vue xdouble = x; p=xdouble/(viewW-64); p= (roomW*32-viewW)*p; viewX=round(int((float)p)); drawSprite(x+viewX,y+viewY,SprScrollW); } }
class scollRoomH { int x,y,yy; boolean grab; double p, ydouble; scollRoomH(int _x, int _y) { x = _x; y = _y; yy=0; grab=false; } void step() { if (mouseButton==LEFT && mousePressed==true) { if (mouse_X>x+viewX && mouse_X<x+10+viewX) { if (mouse_Y>y+viewY && mouse_Y<y+64+viewY) { grab=true; yy=mouseY-y; } } }
if (grab) { y=mouseY-yy; if (mouseButton==LEFT && mousePressed==false && mouseReleased==true) { grab=false; } }
if (y+66+viewY > roomH*32) y = roomH*32 - 66-viewY; if (y < 0) y = 0; // gestion de la vue ydouble = y; p=ydouble/(viewH-64); p= (roomH*32-viewH)*p; viewY=round(int((float)p)); drawSprite(x+viewX,y+viewY,SprScrollH); } } |
|
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: [Résolu]Formul barre de scrolling Mer 17 Aoû 2011 - 9:14 | |
| - jbg77 a écrit:
- Je n’utilise pas Game Maker
Alors tu t'es trompé de section |
|
| |
Contenu sponsorisé
| Sujet: Re: [Résolu]Formul barre de scrolling | |
| |
|
| |
| [Résolu]Formul barre de scrolling | |
|