AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Pause à la show_message

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
SPLN
Utilisateur confirmé: Rang ***
avatar

Messages : 588
Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça
Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)

MessageSujet: Pause à la show_message   Ven 13 Jan 2012 - 14:17

Bon alors ça fait une semaine que je cherchais à avoir un rendu similaire à un show_message.
Alors il y avait la méthode avec une variable global.pause & if global.pause {exit} mais c'était trop ch**** à mettre en place.

Après avoir longtemps chercher j'ai fini par trouver, alors je poste ce code ici pour ceux qui n'aurait pas trouvé et mes sincère excuses pour ceux qui auraient déjà posté ce code avant moi :/ .

Un exemple: Téléchargeable ici

En revanche, dans mon exemple il faudra placer le code dans l'event draw par contre en le bidouillant un peu vous pourrez très bien le mettre dans d'autres events Wink . Attention je ne fais pas appelle à screen_redraw car dans l'objet mb le draw consiste en une boucle "infinie" et donc vous l'appellerais une deuxième fois en faisant cela.



Et le code se résume en:
Code:

var loop ; loop = true
while (loop) {

io_handle()

/***VOTRE CODE***/
/*placer un loop=false pour y mettre fin*/

screen_refresh()

}

Dans "VOTRE CODE" vous pouvez placer du code ET n'oublier pas le draw de votre interface. Perso j'ai utilisé des draw_sprite + mouse_rectangle pour vous pondre cette interface à l'arrache. J'ai également placé des objets inutile histoire de verifier que les autres instances soient vraiment en pause Wink, voilà !

_________________
SP Lecteur Multimedia
I am an in the GM Quiz!
Revenir en haut Aller en bas
http://sp-lecteur-multimedia.skyrock.com/
marty
Utilisateur confirmé: Rang ***
avatar

Messages : 697
Projet Actuel : laby-ereinte !

MessageSujet: Re: Pause à la show_message   Ven 13 Jan 2012 - 15:02

merci
Revenir en haut Aller en bas
SPLN
Utilisateur confirmé: Rang ***
avatar

Messages : 588
Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça
Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)

MessageSujet: Re: Pause à la show_message   Ven 13 Jan 2012 - 15:09

De rien ^^.

Si vous voyez quelque chose au niveau du code (et pas de mon exemple car lui c'est certain Razz) à améliorer n'hésitez pas Wink

_________________
SP Lecteur Multimedia
I am an in the GM Quiz!
Revenir en haut Aller en bas
http://sp-lecteur-multimedia.skyrock.com/
red-error
Utilisateur confirmé: Rang ****
avatar

Messages : 1015
Projet Actuel :

MessageSujet: Re: Pause à la show_message   Dim 15 Jan 2012 - 0:28

Avec cette loop la boucle est relancée dès que possible, ce qui chez moi enclenche rapidement les ventilateurs de mon ordi... Yum!
Alors que c'est pas forcément nécessaire d'avoir un test en continu, 30/60 fois par secondes suffit.

Tiré d'un menu qui freeze le jeu d'un de mes projets :

Initialiser tim avec current time.
Un screen_refresh plus complet :
Code:
//Règle le fps en prenant compte du temps utilisé par le code et l'affichage
        screen_refresh();
        sleep(1000/30-(current_time-tim))
        tim=current_time

Par contre testé ca fait 30fps à la grosse louche (pas exactement), ça doit s'en rapprocher, et ça laisse le temps à mon ordi de souffler. snowm



Petit plus, si on fait un menu (sélectionner un choix avec les touches, valider...) un io_handle ne suffit pas
Il faut juste ajouter un io_clear quelque part, sinon la touche est détectée permanence.

Sauf que io_clear enclenche la détection de la répétition des touches, qu'il n'y a pas autrement. Et pas moyen de désactiver cette répétition automatique qui peut être gênante si le joueur garde appuyé ? :s
Il devrait y avoir moyen de bloquer la touche en question si elle est répétée alors qu'elle était déjà pressée...




Edit : voici une version avec la gestion des touches (unique, répétée en gardant appuyé un moment, répétée en permanence) + un FPS et un frameskip plus proche de celui de la room
A mettre dans Create pour tester : déplacer un carré:
 
Code base "propre":
 
Revenir en haut Aller en bas
SPLN
Utilisateur confirmé: Rang ***
avatar

Messages : 588
Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça
Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)

MessageSujet: Re: Pause à la show_message   Dim 15 Jan 2012 - 8:41

En effet si tu veux ne pas les testés tout le temps tu peux utiliser sleep sauf que moi sans "sleep" je ne vois l'utilité de io_clear() après peut-être que je me trompe? Sachant que io_handle() mets à jour le status de la souris et du clavier et qu' en plus se passe à chaque réitération de la boucle.

Sinon dans le code original je l'avais mis mais je l'ai retiré dans l'exemple donc le voici:
Code:
sleep( 1000/room_speed ); //Pseudo fps

Après je vais testé pour la repetition. Sinon pourquoi avec shift kb_check_direct? Ça fonctionnera même si la fenêtre n'est pas sélectionnée à l'instar de raccourci globaux (global hotkey). Ensuite le "A mettre dans Create pour tester : déplacer un carré:" possède des draw_text mais seront-ils affichés? Après pour le problème de répétition, il me semble que ça ne se produit qu'avec keyboard_check/check_direct/check_pressed ce qui me parait normal et donc il suffit de mettre un check_released c'est tout.

Mais je vais quand même faire des test juste pour voir Wink , merci pour ton aide ^^.

_________________
SP Lecteur Multimedia
I am an in the GM Quiz!
Revenir en haut Aller en bas
http://sp-lecteur-multimedia.skyrock.com/
red-error
Utilisateur confirmé: Rang ****
avatar

Messages : 1015
Projet Actuel :

MessageSujet: Re: Pause à la show_message   Dim 15 Jan 2012 - 13:34

Content que ça aide. Very Happy

En effet, io_clear rafraîchit les évènements généré, mais n'enlève pas ceux qui ont été "gérés" (puisqu'il n'a aucune idée de ça)
Donc si tu appuye sur espace... Ca marque tout le temps que t'as appuyé sur espace.
io_clear permet de remettre la liste à vide... Du moins pour les cliques. (voir l'aide GM où l'un ne va pas sans l'autre)


Pour le clavier, c'est plus compliqué. Ca provoque un effet comme lorsque tu gardes appuyé une touche : aaaaaaaaaaaaaaaaaaaaa
une pause, puis une répétition.

Si on ne veut pas de ces répétitions, il faut bloquer les touches une fois que l'évènement aie été géré. (check_press)
Il faut donc un check_release pour réactiver les touches une fois qu'on a relâché.

J'ai tout mis dans vk_anykey pour pas avoir à coller la variable dans chaque touche appuyée/relâchée...


Ensuite, le check_direct, c'est parce qu'à cause du io_clear, le check_keyboard est désactivé le temps de la pause avant la répétition.
Tandis que check_direct n'est pas influencé par io_clear, et donc permet de répéter la touche dès le départ.
Par contre je savais pas que ça générait des évènements même quand la fenêtre n'est pas sélectionnée. p





Et sinon pour le draw : en fait un "draw" dans n'importe quel event dessine sur "un fond". Mais seul l'event "draw" fait un screen refresh qui met à jour l'affichage (envoie le "fond" sur lequel tu as dessiné vers l'écran) pour que ce soit visible.

Ici comme on met un "screen_refresh", l'affichage de l'écran est mis à jour, et donc tu verra les draws : teste ! Very Happy
Par contre comme il n'y a pas d'event "draw" les objets et le background ne seront pas redessinés. Mais tant qu'on dessine pas par dessus, ils seront visibles. (sinon faut les rappeler avec event perform ou une capture d'image)
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Pause à la show_message   

Revenir en haut Aller en bas
 
Pause à la show_message
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Pause déj et tupperware
» Faire une pause professionnelle?
» Reprise régime après pause: Par ici!
» S. A . L d'été 2015 pause café
» Journée continue et temps de pause...

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