AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
Pokémon EV06 : où acheter le Bundle Lot ...
Voir le deal

 

 Scroll Bar [Résolu]

Aller en bas 
2 participants
AuteurMessage
Victor000.1
Débutant
Victor000.1


Messages : 23
Localisation : Picardie
Projet Actuel : Little Lost Soul

Scroll Bar [Résolu] Empty
MessageSujet: Scroll Bar [Résolu]   Scroll Bar [Résolu] EmptySam 30 Juil 2016 - 18:09

Bonjour à tous,

J'aurais besoin de votre aide car je suis en train de faire un système de scrolling caméra grâce à une slidebar pour un menu.

Scroll Bar [Résolu] Sans_t10


Tout fonctionne correctement mis à part l'affichage qui à, selon moi, des problèmes de rafraîchissement au niveau de la position de la barre et du slide.
Je ne sais pas du tout à quoi ils sont dû en réalité.

Voilà le lien du projet

J'ai essayé de le cleaner un maximum et de mettre le plus d'indication possible, Mais si vous avez besoin d'autres informations n'hésitez pas.

D'avance merci  happy1


Dernière édition par Victor000.1 le Mer 3 Aoû 2016 - 19:27, édité 1 fois
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Scroll Bar [Résolu] Empty
MessageSujet: Re: Scroll Bar [Résolu]   Scroll Bar [Résolu] EmptyMar 2 Aoû 2016 - 21:55

Salut,
j'ai pas GM:S sous la main mais si tu pouvais poster directement quelques scripts concernés, peut être que je verrais ce qui cloche avec un peu de chance :p

_________________
Scroll Bar [Résolu] Runningpotato1Scroll Bar [Résolu] TvF6GED Scroll Bar [Résolu] MdetltS
Revenir en haut Aller en bas
Victor000.1
Débutant
Victor000.1


Messages : 23
Localisation : Picardie
Projet Actuel : Little Lost Soul

Scroll Bar [Résolu] Empty
MessageSujet: Re: Scroll Bar [Résolu]   Scroll Bar [Résolu] EmptyMer 3 Aoû 2016 - 14:02

Pas de problèmes !

Il y a assez peu de chose donc je vais tout mettre Smile

Ici on peut voir qu'il y as des sautes dans l'affichage de la barre et de du slide.

Scroll Bar [Résolu] 811993Animation

Mon obj_bar :

Code:


// Step Event //

key_press = mouse_check_button(mb_left);

// Refresh bar position //

offset_x = view_wview - 48;
offset_y = view_hview /2;

x = view_xview + offset_x;
y = view_yview + offset_y;

tLimit = y-(barH/2)+8; // Je laisse une marge de 8 pixel au dessus et en dessous de la barre pour dessiner une flèche plus tard
bLimit = y+(barH/2)-8;

// J'initialise tLimit et bLimit sur mon obj_slider

slider.tLimit = tLimit;
slider.bLimit = bLimit;

// Check if grab

if (key_press) {
    grab = true;
        
} else {
    grab = false;
}

// Check the slider position

if grab {

    // Si la position de la souris est comprise entre tLimit et bLimit la position du slider est modifié

    if (mouse_y < bLimit) && (mouse_y > tLimit) {
       slider.y = mouse_y;

    // Si la position de la souris est sup ou inf aux limites, la position du slider est égale aux limites  

    } else if mouse_y > bLimit {
        slider.y = bLimit;
        
    } else if mouse_y < tLimit {
        slider.y = tLimit;
    }
}

// Draw Event //

draw_set_color(c_white);
draw_line(x, y - (barH/2),x,y +(barH/2));



Mon obj_slider (J'utilise un sprite pour le slider) :

Code:


// step Event //

// je rend la position du slider sur la barre en pourcentage

posPercent = (y - bLimit ) / (tLimit - bLimit) * 100;
posPercent = round(posPercent);

// j'applique le précédent pourcentage pour obtenir la position réelle de la caméra par rapport à ma room.

camy = room_height - (room_height/100) * posPercent;

obj_cam.y = round(camy);


En tout cas je te remercie Smile
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Scroll Bar [Résolu] Empty
MessageSujet: Re: Scroll Bar [Résolu]   Scroll Bar [Résolu] EmptyMer 3 Aoû 2016 - 14:30

Je note petit a petit les choses que je vois qui méritent quelques améliorations ("utiles" ou non):
Code:
if (key_press) {
    grab = true;
       
} else {
    grab = false;
}

Est identique a écrire: grab = key_press; ce qui est bien plus simple et concis.


Il est inutile de séparer l'objet slider et l'objet barre. Cela rend les choses plus compliquées.


Code:
posPercent = (y - bLimit ) / (tLimit - bLimit) * 100;
posPercent = round(posPercent);

// j'applique le précédent pourcentage pour obtenir la position réelle de la caméra par rapport à ma room.

camy = room_height - (room_height/100) * posPercent;

obj_cam.y = round(camy);

Je ne comprend pas pourquoi tu multiplie la valeur de la première ligne par 100, pour ensuite faire un round, pour ensuite diviser par 100.
Il vaut mieux tout simplement faire:
Code:
pos_percent = (y - bLimit ) / (tLimit - bLimit)
obj_cam.y = room_height * (1 - posPercent);


Le décalage de la barre proviens peut être aussi du fait que tu utilises le step event, et non pas le begin step event.

Sinon le reste me semble assez cohérent, même si assez "long" pour pas grand chose :p

_________________
Scroll Bar [Résolu] Runningpotato1Scroll Bar [Résolu] TvF6GED Scroll Bar [Résolu] MdetltS
Revenir en haut Aller en bas
Victor000.1
Débutant
Victor000.1


Messages : 23
Localisation : Picardie
Projet Actuel : Little Lost Soul

Scroll Bar [Résolu] Empty
MessageSujet: Re: Scroll Bar [Résolu]   Scroll Bar [Résolu] EmptyMer 3 Aoû 2016 - 16:52

Haha, oui, j'ai pas encore une logique algorithmique très développé et j'ai encore du mal à simplifié mon code ^^

J'ai effectué les modifications que tu m'as donné (sauf que ce n'était pas dans le "begin step" mais dans le "end step"). Du coup, ça me donne ça :

Scroll Bar [Résolu] Animat11

J'ai donc toujours les sautes sur l'affichage du Slider. Le code donne donc ça désormais :

// Create Event //
Code:

// Create Event //

// Bar Position
offset_x = view_wview - 48;
offset_y = view_hview /2;

x = view_xview + offset_x;
y = view_yview + offset_y;

// Bar Length
barH = 160;
barW = 4;

// Bar Limit
tLimit = y-(barH/2)+8;
bLimit = y+(barH/2)-8;

// Other
grab = false;
posPercent = 0;

// Init Slider //
slider_y = tLimit;
slider_x = x;
slider_w = 8;
slider_h = 4;

// Step Event //
Code:

// Step Event //

key_press = mouse_check_button(mb_left);

// Check if grab

grab = key_press;

// Check the slider position

if grab {

    if (mouse_y < bLimit) && (mouse_y > tLimit) {
        slider_y = mouse_y;
        
    } else if mouse_y > bLimit {
        slider_y = bLimit;
        
    } else if mouse_y < tLimit {
        slider_y = tLimit;
    }
}

// Calculate Slider percentage Position %

posPercent = (slider_y - bLimit ) / (tLimit - bLimit);
obj_cam.y = room_height * (1 - posPercent);


//End Step Event//
Code:

//End Step Event//

// Refresh positions //

offset_x = view_wview - 48;
offset_y = view_hview /2;

x = view_xview + offset_x;
y = view_yview + offset_y;

tLimit = y-(barH/2)+8;
bLimit = y+(barH/2)-8;

// Draw Event //
Code:

// Draw Event //

draw_set_color(c_white);

// Barre
draw_line(x, y - (barH/2),x,y +(barH/2));

// Slider
draw_rectangle(slider_x - (slider_w/2), slider_y - (slider_h/2), slider_x + (slider_w/2), slider_y + (slider_h/2), true);

En tout cas, merci, ça m'as déjà bien avancé Very Happy
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Scroll Bar [Résolu] Empty
MessageSujet: Re: Scroll Bar [Résolu]   Scroll Bar [Résolu] EmptyMer 3 Aoû 2016 - 19:02

Ça fait toujours beaucoup de code pour une opération aussi simple :p
Vais tenter de te bricoler un truc en 2 minutes.


_________________
Scroll Bar [Résolu] Runningpotato1Scroll Bar [Résolu] TvF6GED Scroll Bar [Résolu] MdetltS
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Scroll Bar [Résolu] Empty
MessageSujet: Re: Scroll Bar [Résolu]   Scroll Bar [Résolu] EmptyMer 3 Aoû 2016 - 19:17

http://wyvup.com/?c=A2rMuqX

Slider:

#Create
Code:
cursor_factor = 0

#End Step
Code:
obj_camera.y = room_height * cursor_factor

#Draw
Code:
slider_height = 128

if(mouse_check_button(mb_left))
{
    my = mouse_y
    dy = my - (view_yview[0] + (view_hview[0] - slider_height)/2)
    cursor_factor = dy / slider_height
    cursor_factor = min(1, max(0, cursor_factor))
}

draw_line(view_xview[0] + view_wview[0] - 32,
          view_yview[0] + (view_hview[0] - slider_height)/2,
          view_xview[0] + view_wview[0] - 32,
          view_yview[0] + (view_hview[0] + slider_height)/2)

draw_rectangle(view_xview[0] + view_wview[0] - 32 - 8,
              view_yview[0] + (view_hview[0] - slider_height)/2 - 8 + cursor_factor * slider_height,
              view_xview[0] + view_wview[0] - 32 + 8,
              view_yview[0] + (view_hview[0] - slider_height)/2 + 8 + cursor_factor * slider_height,
              true)

_________________
Scroll Bar [Résolu] Runningpotato1Scroll Bar [Résolu] TvF6GED Scroll Bar [Résolu] MdetltS
Revenir en haut Aller en bas
Victor000.1
Débutant
Victor000.1


Messages : 23
Localisation : Picardie
Projet Actuel : Little Lost Soul

Scroll Bar [Résolu] Empty
MessageSujet: Re: Scroll Bar [Résolu]   Scroll Bar [Résolu] EmptyMer 3 Aoû 2016 - 19:26

onilink_ a écrit:
Ça fait toujours beaucoup de code pour une opération aussi simple :p

haha, je vois la différence en effet xD

Merci beaucoup en tout cas ! C'est super gentil à toi. ça fonctionne nickel Very Happy
Revenir en haut Aller en bas
Contenu sponsorisé





Scroll Bar [Résolu] Empty
MessageSujet: Re: Scroll Bar [Résolu]   Scroll Bar [Résolu] Empty

Revenir en haut Aller en bas
 
Scroll Bar [Résolu]
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Scroll texte Zen !
» [résolu]mp_potential_step
» Ftp dll bug [Résolu]
» [Résolu] font_replace_sprite()
» collision et animation

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