Transition

Voir le sujet précédent Voir le sujet suivant Aller en bas

Transition

Message par Morgan9195 le Dim 6 Sep - 20:06



Transition

Ce code a été conçu avec la version 0.6.148 de Script.
Deux fonctions récentes sont indispensables:
- string_cut(); (ajouté dans la 0.6.147)
- event_set(); (ajouté dans la 0.6.148)
Les versions précédentes de Script ne pourront pas exécuter ce code.

(Si vous souhaitez l'utiliser mais qu'il n'est pas mis à jour, veuillez m'en faire part et je m'en chargerai)



Description

Ce code ajoute un système de transition entre vos pages. Ce n'est pas plus compliqué que ça.
Donc il est libre à vous de programmer la transition que vous souhaitez. Le code de la transition est modifiable.



Utilisation

Pour utiliser les transitions, il faut déjà importer le fichier transition.script que vous pouvez télécharger ci-dessous.
Placez-le dans le dossier "res\scr\" de vote projet et ajouter cette ligne au début du fichier program.script:
Code:
#include transition.script

Le code n'ajoute aucune fonction, il se manipule qu'avec des variables.

Un dossier "page"  a été automatiquement créé dans le répertoire "res/scr/" de votre projet depuis que vous avez importé ce code.
Il contient un fichier transition.script contenant le code de la transition, le fichier sera automatiquement exécuté lors d'un changement de page.
Vous placerez aussi un fichier .script par page dans ce répertoire. Vous ne pourrez donc pas avoir de page nommée "transition" puisque le fichier transition.script est déjà utilisé.
La première page sera "home". Son fichier .script sera automatiquement généré, il sera à vous de le remplir.

Le code n'ajoute aucune fonction, il se manipule qu'avec des variables.

Pour changer de page, rien de plus simple:
Code:

page = "nom de la page";

Le reste du travail est fait par le code que vous avez importé.

La transition va se faire en deux étapes:
- La disparition de la première page
- L'apparition de la seconde page

Pour comprendre ça, on va analyser le code par défaut de la transition:
Code:

if (transition_duration <= 0)
or (transition >= transition_duration) return (true);

temp = ceil(transition_duration/2);
if (temp < 1) temp = 1;
draw_set_alpha(1-abs((transition-temp)/temp));
draw_set_color(c_white);
draw_rectangle(0, 0, display_width, display_height, false);
draw_set_alpha(1);

if (transition == temp) return (true);
return (false);

Le paragraphe central dans ce code sert à afficher l'animation de transition. Nous allons nous intéresser au reste.
Isolons les parties importantes pour faciliter l'explication:
Code:

if (transition_duration <= 0) or (transition >= transition_duration) return (true);

if (transition == temp) return (true);

return (false);

Dans ce code par défaut, la transition se fait avec une animation qui masque de plus en plus la page précédente jusqu'à la masquer totalement, puis il remplace l'ancienne page par la page de destination, et enfin il retire progressivement le masque qui cachait la page.

Le code de transition initialise la variable transition_duration à 100. C'est la durée de la transition.
Dans le code par défaut de transition.script, on peut voir: temp = transition_duration/2;
Ceci est une variable dont la valeur est la moitié de la durée de la transition.

Le code de transition va automatiquement créer et incrémenter une variable transition pour vous permettre de créer des animations. On retrouve cette variable transition dans ces trois dernières lignes de code. La variable est initialisée à 0 à chaque début de transition, puis s'incrément de 1 en 1 à chaque exécution du code.

Parmis ces trois lignes, la première ligne retourne la valeur true lorsque la transition est terminée, pour signaler au code de transition qu'il faut arrêter d'exécuter le fichier transition.script.

La seconde ligne est une condition qui se valide lorsque la transition est à 50% de transition_duration. Donc c'est pile au centre de la transition temporellement.
Cette condition retourne la valeur true qui va signaler au code de transition qu'il peut remplacer l'ancienne page par la page de destination, mais sans stopper l'exécution de la transition.

La troisième ligne retourne false, et s'exécutera dans les cas où les deux précédentes conditions ne seront pas valides.

On récapitule:
-  On exécute: page = "nom de la page de destination";
- on fait une animation de disparition de l'ancienne page, en retournant constamment la valeur false pour dire qu'on a pas fini la disparition de la page.
- on retourne la valeur true juste une fois pour que le code de transition remplace l'ancienne page par la nouvelle
- on fait une animation d'apparition de la nouvelle page, en retournant constamment la valeur false pour dire qu'on a pas fini l'apparition de la page.
- on retourne la valeur true pour dire que la transition est terminée.

Facile, non? Bon ok, c'est pas si simple que ça à comprendre, mais je vous assure que quand on a bien comprit ça fait le café.

Vous pouvez librement modifier le code de transition.script ainsi que les variables page et transition_duration.
Placez bien vos pages dans le répertoire "res/scr/page/" , en cas d'oubli, le fichier sera généré tout seul, et il s'ouvrira pour que vous puissiez programmer le contenu de la page de destination.

Ce code vous offre aussi une gestion des sous-pages, des sous-sous-pages, etc.
Pour cela, il vous suffit d'utiliser le caractère '/' dans la valeur de la variable page.
Exemple:
Code:

page = "jeu/inventaire/armure";
Les fichiers suivants seront alors exécutés dans cet ordre:
- page/jeu.script
- page/jeu/inventaire.script
- page/jeu/inventaire/armure.script
Tout vos fichiers .script seront automatiquement générés dans des dossiers bien ordonnés. Vous ne serez jamais confronté à un message d'erreur signalant l'absence du fichier .script associé à une page.

Si vous nommez les event_start de chaque page comme le chemin pour accéder à la page en question, L'event sera relancé lors de chaque ouverture de cette page. Les event_end restent inchangés.

PS: D'un point de vue personnel, j'ai vu mes projets progresser bien plus vite avec ce gestionnaire de pages et transitions, avec un code plus ordonné et compréhensible ainsi qu'un résultat graphique plus agréable. Malgré le fait que ce code soit assez petit, il est optimisé pour faire une grande partie du travail sans provoquer de problème d'incompatibilité avec votre code puisqu'il se manipule qu'avec une variable page.
Si vous décidez de le tester, j'apprécierais d'avoir des retours de votre part sur votre avis, et pourquoi pas des suggestions d'amélioration.



Le fichier transition.script est téléchargeable ici:
[Vous devez être inscrit et connecté pour voir ce lien]
(Si vous souhaitez l'utiliser mais qu'il n'est pas mis à jour, veuillez m'en faire part et je m'en chargerai)



________________________________________________________________________________________
[Vous devez être inscrit et connecté pour voir ce lien]
avatar
Morgan9195
Fondateur
Fondateur

Messages : 168
Date d'inscription : 11/02/2013
Age : 22
Localisation : Entre le fauteuil et le clavier

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur http://morgan9195.olympe.in/devblog/

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum