AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  

 

 [Résolu]Formul barre de scrolling

Aller en bas 
AuteurMessage
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

[Résolu]Formul barre de scrolling Empty
MessageSujet: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyDim 14 Aoû 2011 - 22:38

Salut Smile

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
Revenir en haut Aller en bas
robinlife
Utilisateur confirmé: Rang ****
robinlife

Messages : 977

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyDim 14 Aoû 2011 - 23:32

Utilise les fonctions commme view_xview et view_yview (RTFM MF !!)

_________________
suivez moi sur ig : @kostozbrr
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyLun 15 Aoû 2011 - 0:01

Je demande une formule, faut lire.


edit : + je n’utilise pas gm crossa


Dernière édition par jbg77 le Lun 15 Aoû 2011 - 0:04, édité 1 fois
Revenir en haut Aller en bas
robinlife
Utilisateur confirmé: Rang ****
robinlife

Messages : 977

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyLun 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 crossa ?

_________________
suivez moi sur ig : @kostozbrr
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyLun 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" awesome Tu as failli mourir Yum!
Revenir en haut Aller en bas
robinlife
Utilisateur confirmé: Rang ****
robinlife

Messages : 977

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyLun 15 Aoû 2011 - 0:10

Oui euh j'ai mal lut enfait awesome

_________________
suivez moi sur ig : @kostozbrr
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro

Messages : 1472
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyLun 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 ^^ gnii

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é

_________________
[Résolu]Formul barre de scrolling Pochette[Résolu]Formul barre de scrolling Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyLun 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;
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro

Messages : 1472
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyMar 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.

_________________
[Résolu]Formul barre de scrolling Pochette[Résolu]Formul barre de scrolling Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyMar 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.
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyMar 16 Aoû 2011 - 20:47

Un petit up Yum!
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
arthuro

Messages : 1472
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyMar 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é)

_________________
[Résolu]Formul barre de scrolling Pochette[Résolu]Formul barre de scrolling Signature.php?gid=588
D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyMar 16 Aoû 2011 - 22:29

Je n’utilise pas Game Maker
Revenir en haut Aller en bas
robinlife
Utilisateur confirmé: Rang ****
robinlife

Messages : 977

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyMar 16 Aoû 2011 - 22:43

On le sait que tu utilise Game Maker...

_________________
suivez moi sur ig : @kostozbrr
Revenir en haut Aller en bas
Oculus
Utilisateur confirmé: Rang *****


Messages : 1688

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyMar 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);
   
   
  }
}
Revenir en haut Aller en bas
nicoulas
*Excellent utilisateur*
nicoulas

Messages : 6030
Localisation : Dordogne
Projet Actuel : Croustaface Tower Defense [Résolu]Formul barre de scrolling Panicpr9

[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling EmptyMer 17 Aoû 2011 - 9:14

jbg77 a écrit:
Je n’utilise pas Game Maker
Alors tu t'es trompé de section Wink
Revenir en haut Aller en bas
http://blithe.nd.free.fr/
Contenu sponsorisé




[Résolu]Formul barre de scrolling Empty
MessageSujet: Re: [Résolu]Formul barre de scrolling   [Résolu]Formul barre de scrolling Empty

Revenir en haut Aller en bas
 
[Résolu]Formul barre de scrolling
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: