Mizukage Posted July 26, 2015 Share Posted July 26, 2015 Hello again, Today I am going crazy with menu background music. I had Boot -> Preloader -> MainMenu -> Game states and in MainMenu state was this.music = this.add.audio('MenuMusic', 0.2, true); this.music.play();And this.music.stop();In start game state function. It was working fine, music in menu and music off when game started. But I added new state call About.jsAnd after over 9000 trials I find some way to do sound in Menu and About without stop music and play again from begin. I drop this.add.audio and this.music.play() in to create function from Boot.js State, then go to Preloader and then to MainMenu there I do nothing with this music, when I go from MainMenu state to About state music still play and when I will back to MainMenu music is still plaing and its perfect but then cant usethis.music.stop() When want go to Game state, because sound was started in Boot state..... The question is how can I stop this music in Game state?? Link to comment Share on other sites More sharing options...
AzraelTycka Posted July 26, 2015 Share Posted July 26, 2015 Hello, I would wait for others to answer so just my two cents. Set your music to global variable, then you can access it from any other state.If your game is set as var game = new Phaser.Game(..);, then you can instead of this.music = this.add.audio(..); use this: game.music = this.add.audio(..); or any other variable you create for this from global scope. Well I think there is a way to send some parameters from state to state in phaser like this or this but I think global is the easiest way here. Mizukage 1 Link to comment Share on other sites More sharing options...
Mizukage Posted July 26, 2015 Author Share Posted July 26, 2015 EDIT.. Ok I wrote muzyka: 1In global variable, idk why 1 but it is working I got some error on start, but working with this error phaser.min.js:16 Phaser.Cache.getSound: Invalid key: "MenuMusic" Link to comment Share on other sites More sharing options...
AzraelTycka Posted July 27, 2015 Share Posted July 27, 2015 Is your music playing or not? Btw yesterday you wrote something about problems within loader or something like that, so just to clarify there is no connection between your thought problem and the solution I offered - that problem doesn't exist. In your preloader load your music as you do:this.load.audio('MenuMusic', pathToTheFile);There is no problem with that, you don't need global var for this. Then when you get to your menu (or wherever you want to play the music) place this line:game.menuMusic = this.add.audio('MenuMusic');game.menuMusic.play();Then last part when you are leaving the menu and what to stop the music just insert this line into your code (doesn't matter which state you use this line as long as it is after the line above and after your audio file loaded!):game.menuMusic.stop();That's what I was talking about, jsut to make sure. I have no idea what exactly are you doing with that muzyka: 1, because you provided no other code (we have no idea what line 16 in your code is or what is before it) ;-). Link to comment Share on other sites More sharing options...
Mizukage Posted July 27, 2015 Author Share Posted July 27, 2015 But it's working with this Global only I Need music without breakes when Im jumping by states Menu and About and stop this music only when I go to Game state. Boot.jsvar ShinobiBattle = { muzyka: null};ShinobiBattle.Boot = function (game) {};ShinobiBattle.Boot.prototype = { init: function () { // Unless you specifically know your game needs to support multi-touch I would recommend setting this to 1 this.input.maxPointers = 1; // Phaser will automatically pause if the browser tab the game is in loses focus. You can disable that here: this.stage.disableVisibilityChange = true; if (this.game.device.desktop) { // If you have any desktop specific settings, they can go in here this.scale.pageAlignHorizontally = true; } else { // Same goes for mobile settings. // In this case we're saying "scale the game, no lower than 480x260 and no higher than 1024x768" this.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL; this.scale.setMinMax(480, 260, 1024, 768); this.scale.forceLandscape = true; this.scale.pageAlignHorizontally = true; } }, preload: function () { // Here we load the assets required for our preloader (in this case a background and a loading bar) this.load.image('preloaderBG', 'assets/imgTest/loading_screen.png'); }, create: function () { ShinobiBattle.muzyka = this.add.audio('MenuMusic', 0.2, true); ShinobiBattle.muzyka.play(); // By this point the preloader assets have loaded to the cache, we've set the game settings // So now let's start the real preloader going this.state.start('Preloader'); }};Then nothing special in preloader MainMenuShinobiBattle.MainMenu = function (game) { this.music = null; this.playButton = null; this.aboutButton = null;};ShinobiBattle.MainMenu.prototype = { create: function () { this.add.sprite(0, 0, 'MenuBG'); this.playButton = this.add.button(10, 430, 'playButton', this.startGame, this, 'buttonOver', 'buttonOut', 'buttonOver'); this.aboutButton = this.add.button(10, 230, 'playButton', this.startAbout, this, 'buttonOver', 'buttonOut', 'buttonOver'); }, update: function () { }, startGame: function (pointer) { ShinobiBattle.muzyka.stop(); this.state.start('Game'); }, startAbout: function (pointer) { this.state.start('About'); }};AboutShinobiBattle.About = function (game) { this.backButton = null; };ShinobiBattle.About.prototype = { create: function () { this.backButton = this.add.button(10, 430, 'playButton', this.MenuGame, this, 'buttonOver', 'buttonOut', 'buttonOver'); }, update: function () { }, MenuGame: function (pointer) { this.state.start('MainMenu'); }};So music start in Boot and I'm cutting music only from MainMenu to Game Link to comment Share on other sites More sharing options...
AzraelTycka Posted July 27, 2015 Share Posted July 27, 2015 Well if it's solved then tehre is no need to extend this thread any further. I don't know what exactly was your last psot about but it's exactly the same thing as I wrote above just with different name that's all, so glad you managed to get over this - the error disappeared I guess. Link to comment Share on other sites More sharing options...
Mizukage Posted July 27, 2015 Author Share Posted July 27, 2015 No, error in console still exist but it is working with it Link to comment Share on other sites More sharing options...
Recommended Posts