Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
294 connectés actuellement
30945979 visiteurs depuis l'ouverture
2017 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
William Samy -
posté le 03/04/2013 à 11:22:25 (488 messages postés)
| revenant des vivant. | Domaine concerné: Script
Logiciel utilisé: RMXP
Salut c'est encore moi!
J’essaie d'exécuter un petit script (affichage et déplacement d'un bitmap) en l'appelant depuis un événement commun, le script s'exécute bien mais freeze la map...
EDIT : (Et la défreeze bien quand le script prend fin)
En fait j'aimerai bien continuer de jouer pendant que ce bitmap bouge...
Je crois que ce qui bloque est le fait que j'ai mis une boucle dans ce script pour modifier progressivement la position, l'opacité etc, mais mon niveau en Ruby est encore bas et je ne vois pas vraiment comment contourner le problème.
Existe-t-il une ligne de code magique ou moyen quelconque de continuer à faire marcher Scene_Map pendant une "translation" de bitmap dans une autre script?
(Sachant que j'ai aussi essayé de faire cette translation par une simple insertion de script dans un événement commun, hors d'une class, mais rien n'y change).
Merci d'avance pour votre aide
EDIT2: Je viens de réaliser que je me suis mal exprimé: c'est une fenêtre que je veux déplacer, avec un bitmap contenant du texte et une icone.
C'est un script qui hérite de Window_Base
En fait c'est une fenêtre style Window_Gold contenant divers éléments, et je voudrais la déplacer, la faire disparaître en fondu pendant que l'on continue à jouer (tel notification dans un coin de l'écran).
|
Galfart.fr || « L'humanité souffre exactement autant aujourd'hui qu'elle a toujours souffert, elle l'a raffiné et s'illusionne sur son état... c'est la seule différence... » R.Steiner |
Nukidoudi -
posté le 03/04/2013 à 11:59:05 (736 messages postés)
| yo | Tu dois modifier l'x et le y de l'instance de Game_Picture. pas du Sprite.
|
https://xvw.lol |
William Samy -
posté le 03/04/2013 à 12:18:30 (488 messages postés)
| revenant des vivant. | Nukidoudi a dit: Tu dois modifier l'x et le y de l'instance de Game_Picture. |
L'instance de Game_Picture, c'est à dire?
Par ailleurs je viens de réaliser que je me suis mal exprimé: c'est une fenêtre que je veux déplacer, pas seulement un sprite (car il y a aussi un sprite en fait, pour afficher une icone).
C'est un script qui hérite de Window_Base
En fait c'est une fenêtre style Window_Gold contenant divers éléments, et je voudrais la déplacer, la faire disparaître en fondu pendant que l'on continue à jouer (tel notification dans un coin de l'écran).
|
Galfart.fr || « L'humanité souffre exactement autant aujourd'hui qu'elle a toujours souffert, elle l'a raffiné et s'illusionne sur son état... c'est la seule différence... » R.Steiner |
mtarzaim -
posté le 03/04/2013 à 13:40:41 (2926 messages postés)
| Anaxagoras -500 BC | Citation: j'ai mis une boucle dans ce script pour modifier progressivement |
Je pense que le problème est là.
Il ne doit y avoir qu'une seule boucle dans tout le RGSS, c'est celle du Main (ou Update, je sais plus).
Si tu mets une boucle ailleurs, cette boucle va boucler sans laisser de temps au script Main (et donc tous les autres scripts qui en dépendent) de faire leurs petites affaires.
Vire la boucle et garde son contenu.
Ton code sera rappelé à chaque frame par Main, de toute manière.
|
Projets terminés : DIX Life Precious - TheFrogStudio.Net |
Estheone -
posté le 03/04/2013 à 14:21:22 (312 messages postés)
| | Comme le dit mtarzaim il ne faut jamais faire des boucles avec un Graphics.update dedans.
Et il n'y a pas de ligne magique pour paralléliser ton script, il te faut l'intégrer correctement dès le départ.
Si tu débutes en script c'est pas évident à faire donc voilà la démarche.
Dans le Scene_Map :
Tu rajoutes ces 2 fonctions :
1
2
3
4
5
6
7
8
9
| def create_hud_window
dispose_hud_window if @hud_window
@hud_window = Window_HUD.new
end
def dispose_hud_window
@hud_window.dispose
@hud_window = nil
end |
En dessous de @spriteset.update dans le update tu mets :
1
2
3
4
| if @hud_window
@hud_window.update
dispose_hud_window if @hud_window.need_dispose
end |
En dessous des @spriteset.dispose (il y en a un dans le main et un dans le transfer_player) tu mets :
1
| dispose_hud_window if @hud_window |
Ensuite la fenêtre en elle-même (j'ai pris Window_Gold comme base) :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| class Window_HUD < Window_Base
attr_reader :need_dispose
def initialize
super(0, 0, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
@need_dispose = false
@count = 0
refresh
end
def refresh
self.contents.clear
cx = contents.text_size($data_system.words.gold).width
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
self.contents.font.color = system_color
self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
end
def update
super
@count += 1
if @count > 60
self.opacity -= 8
@need_dispose = true if self.opacity == 0
end
end
end |
Pour finir tu n'as plus qu'à appeler ta fenêtre à partir d'un appel de script en event :
1
| $scene.create_hud_window |
A noter qu'il ne faut pas l'appeler à partir d'un event en démarrage automatique sans laisser 1 frame d'attente avant.
Teste ça et je pense que tu pourras compléter selon tes besoins en analysant le fonctionnement.
|
Wandering Souls : Jeu complet / Topic sur Oniro |
William Samy -
posté le 03/04/2013 à 17:20:43 (488 messages postés)
| revenant des vivant. | Waa
Super Estheone, tes scripts fonctionnent. Merci beaucoup.
Je pense pouvoir l'adapter à mon système (qui consiste à afficher une notif à chaque ajout/supression d'objet, d'arme ou d'armure).
mtarzaim a dit: Il ne doit y avoir qu'une seule boucle dans tout le RGSS, c'est celle du Main (ou Update, je sais plus).
Si tu mets une boucle ailleurs, cette boucle va boucler sans laisser de temps au script Main (et donc tous les autres scripts qui en dépendent) de faire leurs petites affaires.
|
Interessant, j'aurai appris quelque chose aujourd'hui.
Sujet résolu, merci à vous
|
Galfart.fr || « L'humanité souffre exactement autant aujourd'hui qu'elle a toujours souffert, elle l'a raffiné et s'illusionne sur son état... c'est la seule différence... » R.Steiner | Index du forum > Entraide > [RESOLU] [RMXP] Faire bouger une image en script en même temps que Scene_Map
|
|
|