Já viram qual a arte dessa semana?Exposição dos Artistas #8
4 Respostas   95 Visualizações
0 Membros e 1 Visitante estão vendo este tópico.
class Scene_Menu < Scene_MenuBase alias :prime_start :start alias :prime_terminate :terminate alias :prime_command_window :create_command_window def start prime_start $audio_prime = RPG::BGM.new("IceTomb", 100, 100).play RPG::BGS.stop RPG::SE.stop end #----------------------------------------------------------------------------# Finalização do Processo #---------------------------------------------------------------------------- def terminate prime_terminate super dispose_background $audio_prime = RPG::BGM.stop endend
1 - Justamente ela para de tocar porque são cenas diferentes XDTipo você tá saindo da Scene_Menu que é onde você fez os comandos e indo pra outra. Basicamente, executando o terminate desse aí (você colocou pra parar a música) e abrindo uma nova scene, por exemplo, Scene_Equip, e lá no initialize da Scene_Equip não tem nada definindo pra tocar música, etc XDPS: Uma maneira legal pra fazer tocar em todas é fazer na Scene que é comum a todos esses Menus aí, que é a Scene_MenuBase.Exemplo como você pode ver, a Scene_Menu é filha da Scene_MenuBase. Scene_Equip também e as outras em geral tem parentesco.Então se você fizer tocar a música no initialize da Scene_MenuBase, como é usado por todas as scenes de Menu vai ocorrer o que você quer. (Que é tocar a música logo quando a scene é inicializada)PS²: Não testei, mas logicamente deve ser assim, qualquer coisa me dê um toque XD2 - Quando você entra nessa Scene_Menu aí, você executa o initialize dela, onde você pôs pra parar a BGS e SE's.Ao sair da Scene_Menu, executa o terminate, você pode por pra religar elas e talz .-. (Só dando ideia)
class Game_Temp attr_accessor :musica_do_mapa alias :velho_initialize :initialize def initialize velho_initialize # Esta variável será responsável por guardar a música que está # tocando no mapa. Ela pode ser acessada de qualquer lugar usando # $game_temp.musica_do_mapa. # Isso ocorre pois $game_temp = Game_Temp.new, e nós sabemos que # $game_temp é uma variável global. @musica_do_mapa = nil end endclass Scene_Map < Scene_Base alias :velho_call_menu :call_menu def call_menu # Este método é chamado antes do menu ser aberto, quando você pressiona B. # Vamos guardar a música do mapa. Basicamente é a música que tocou # por último. $game_temp.musica_do_mapa = RPG::BGM.last # Vamos chamar o call_menu antigo para não sobrescrever tudo. velho_call_menu end endclass Scene_Menu < Scene_MenuBase alias :velho_start :start def start # Vamos chamar o start antigo para não sobrescrever tudo. velho_start # Agora vamos reproduzir uma música diferente. # Você pode passar argumentos no play para fazer a música # começar a partir de uma determinada posição, como # RPG::BGM.new('música').play(posição) # No update eu usei um print na posição da música para você ver como # funciona. RPG::BGM.new('Scene2').play # Não tema. Antes de reproduzir uma música, ele verifica se ela # é a mesma que está reproduzindo antes de tocar. end alias :velho_update :update def update velho_update p "Posição da música: #{RPG::BGM.last.pos}" end alias :velho_terminate :terminate def terminate # Vamos verificar se a próxima cena é a cena do mapa. if SceneManager.scene_is?(Scene_Map) # É a cena do mapa. Vamos restaurar a música. # Se quiser, você pode checar se o $game_temp.musica_do_mapa não é # nil antes de reproduzir, mas para deixar simples, vou apenas # reproduzir. $game_temp.musica_do_mapa.replay end velho_terminate end end
Eu faria isso da seguinte forma:Código: [Selecionar]class Game_Temp attr_accessor :musica_do_mapa alias :velho_initialize :initialize def initialize velho_initialize # Esta variável será responsável por guardar a música que está # tocando no mapa. Ela pode ser acessada de qualquer lugar usando # $game_temp.musica_do_mapa. # Isso ocorre pois $game_temp = Game_Temp.new, e nós sabemos que # $game_temp é uma variável global. @musica_do_mapa = nil end endclass Scene_Map < Scene_Base alias :velho_call_menu :call_menu def call_menu # Este método é chamado antes do menu ser aberto, quando você pressiona B. # Vamos guardar a música do mapa. Basicamente é a música que tocou # por último. $game_temp.musica_do_mapa = RPG::BGM.last # Vamos chamar o call_menu antigo para não sobrescrever tudo. velho_call_menu end endclass Scene_Menu < Scene_MenuBase alias :velho_start :start def start # Vamos chamar o start antigo para não sobrescrever tudo. velho_start # Agora vamos reproduzir uma música diferente. # Você pode passar argumentos no play para fazer a música # começar a partir de uma determinada posição, como # RPG::BGM.new('música').play(posição) # No update eu usei um print na posição da música para você ver como # funciona. RPG::BGM.new('Scene2').play # Não tema. Antes de reproduzir uma música, ele verifica se ela # é a mesma que está reproduzindo antes de tocar. end alias :velho_update :update def update velho_update p "Posição da música: #{RPG::BGM.last.pos}" end alias :velho_terminate :terminate def terminate # Vamos verificar se a próxima cena é a cena do mapa. if SceneManager.scene_is?(Scene_Map) # É a cena do mapa. Vamos restaurar a música. # Se quiser, você pode checar se o $game_temp.musica_do_mapa não é # nil antes de reproduzir, mas para deixar simples, vou apenas # reproduzir. $game_temp.musica_do_mapa.replay end velho_terminate end endColoque em um projeto vazio e dê uma olhada no código.