Commit graph

718 commits

Author SHA1 Message Date
Richard Davey
425ee09047 Sound.onEndedHandler now sets Sound.currentTime to be Sound.durationMS (thanks @stoneman1 #2237) 2016-02-02 01:08:45 +00:00
Richard Davey
e7820dbe85 SoundManager.destroy now calls AudioContext.close (thanks @stoneman1 #2237) 2016-02-02 01:08:35 +00:00
photonstorm
172f972d8c Pausing a Sound that used a Marker for playback would fire the onMarkerComplete signal by mistake as well as stop the fadeTween. This Signal is now only dispatched if Sound.stop is called and the Sound isn't paused (thanks Corin) 2015-12-02 12:41:20 +00:00
photonstorm
f64fc42f3e The SoundManager now detects if the browser is running under iOS9 and uses a touchend callback to unlock the audio subsystem. Previous versions of iOS (and Android) still use touchstart. This fixes Apple's screw-up with regard to changing the way Web Audio should be triggered in Mobile Safari. Thanks Apple (thanks @MyCatCarlos for the heads-up #2095) 2015-09-22 11:46:58 +01:00
Pappa
12d24d3677 Fix for AudioBufferSourceNode listener memory leak.
In Chrome, the AudioBufferSourceNode onended listeners were never being garbage collected. This frees up the listener for collection.
2015-09-08 17:56:17 +01:00
photonstorm
a8934c392d Phaser.Sound will now automatically check the Cache to see if the audio file it is using is still there or not. If not then it will automatically called Sound.destroy on itself. If you do not desire this result then you should ensure that you undertake all house-keeping yourself, and properly destroy Sound objects _before_ calling Cache.removeSound (#1946) 2015-07-27 14:02:04 +01:00
photonstorm
f15fe6706c All undefined argument checks were changed from if (typeof x === 'undefined') to if (x === undefined) removing the typeof check and saving some bytes across the codebase in the process. 2015-07-22 10:37:15 +01:00
photonstorm
8356aacaa8 Trying out new Text pivot and mute handling. 2015-06-24 19:57:40 +01:00
photonstorm
1ed33cb06c Setting mute to false on Sound that was never muted caused its volume to be set to zero (thanks @brianbunch #1870) 2015-06-24 15:54:25 +01:00
photonstorm
1990bce48b Sound.restart and Sound.stop now properly disconnect the sound from the gainNode (or external node) before stopping it, allowing restart to work correctly (thanks @eofs #1796) 2015-06-16 16:24:47 +01:00
photonstorm
ab8c98676e Sound.resume wouldn't properly restart looped sounds in Chrome after being paused. Phaser now specifically handles the Chrome 42 bug and later fix (thanks @nkovacs #1820) 2015-06-16 14:28:46 +01:00
photonstorm
1c1a2ac195 Volume should default to 1 if undefined OR null (as from an Audio Sprite) 2015-06-09 20:55:20 +01:00
photonstorm
621e51d949 Docs update about the lovely 48000 Hz music bug. 2015-05-23 03:37:04 +01:00
photonstorm
4cd374691a Wrapped the decodeAudio in a try/catch. 2015-05-14 23:21:19 +01:00
photonstorm
766b110f99 SoundManager now uses the new Touch.addTouchLockCallback methods to handle mobile device audio unlocking. 2015-05-05 16:25:16 +01:00
photonstorm
7178ff61c7 jsdoc fixes. 2015-05-05 14:00:29 +01:00
photonstorm
d98b984ad2 SoundManager.volume now has its input value clamped to ensure it's between 0 and 1 (inclusive) 2015-05-05 11:04:14 +01:00
photonstorm
36c7084e01 Adjusting property order. 2015-05-05 10:59:54 +01:00
photonstorm
adad60f8f4 SoundManager.onVolumeChange is a new signal that is dispatched whenever the global volume changes. The new volume is passed as the only parameter to your callback.
SoundManager.onMute is a new signal that is dispatched when the SoundManager is globally muted, either directly via game code or as a result of the game pausing.

SoundManager.onUnMute is a new signal that is dispatched when the SoundManager is globally un-muted, either directly via game code or as a result of the game resuming from a pause.
2015-05-05 10:58:43 +01:00
photonstorm
e6ab4884a6 Set usingWebAudio if using it :) 2015-04-21 02:07:47 +01:00
photonstorm
8476a0b87f One ! too many #1746 2015-04-17 14:26:01 +01:00
photonstorm
59beae762d The SoundManager didn't accurately detect devices or browser environments with no sound card present and would try to carry on using a null Web Audio context (thanks @englercj #1746)
SoundManager.pauseAll, resumeAll and stopAll now checks if the SoundManager.noAudio is set and ignores the calls.

SoundManager.usingWebAudio is set to `false` by default (used to be `true`) and is only explicitly set if Web Audio is available and hasn't been disabled in the PhaserGlobal object.

SoundManager.touchLocked is now set to `false` should the device be using legacy Audio, avoiding the unlock call running without need.
2015-04-17 03:49:20 +01:00
photonstorm
96e313e768 If you paused a Sound object that is using audio markers and then resumed it, it wouldn't correctly calculate the resume duration - causing the sound to sometimes play into the marker that followed it (thanks @AnderbergE #1669) 2015-03-24 14:43:35 +00:00
photonstorm
0a45223cd4 Resuming a sound needs the onended handler adding back in again. 2015-03-04 00:32:33 +00:00
photonstorm
a69e53f901 Copyright date change. 2015-02-25 03:36:23 +00:00
photonstorm
e93ded324f Added missing class var. 2015-02-22 19:30:34 +00:00
photonstorm
ba08498e73 Fixed bug with the watch list not checking decode status by key properly. 2015-02-20 00:58:05 +00:00
photonstorm
72d1c13b6b Fixed jshint error. 2015-02-18 14:54:19 +00:00
photonstorm
ef3cb1f31d Sound in Web Audio now uses AudioContext.onended to trigger when it will stop playing instead of using a time based value. This is only used if the sound doesn't loop and isn't an audio sprite, but will give a much more accurate Sound.onStop event. It also prevents short audio files from being cut off during playback (#1471) and accounts for time spent decoding. 2015-02-18 11:25:17 +00:00
photonstorm
74bee324a5 Sound.fadeIn now supports fading from a marker, as well as the entire audio clip, so now works with audio sprites (thanks @vorrin #1413) 2015-02-11 13:52:16 +00:00
photonstorm
dfee82834d Sound.loop even when set for WebAudio wouldn't use the AudioContext loop property because Sound.start was being invoked with an offset and duration. Now if loop is true and no marker is being used it will use the native Web Audio loop support (#1431)
SoundManager.setDecodedCallback lets you specify a list of Sound files, or keys, and a callback. Once all of the Sound files have finished decoding the callback will be invoked. The amount of time spent decoding depends on the codec used and file size. If all of the files given have already decoded the callback is triggered immediately.

Sound.loopFull is a new method that will start playback of the Sound and set it to loop in its entirety.
2015-02-11 05:17:53 +00:00
photonstorm
ac14edae94 Sound.stop and Sound.destroy now halt a fade tween if in effect. 2015-02-03 16:17:03 +00:00
photonstorm
d37ffe6a8f Sound.fadeTween is now used for Sound.fadeIn and Sound.fadeOut audio tweens.
Sound.stop and Sound.destroy now halt a fade tween if in effect.
2015-01-28 17:18:32 +00:00
photonstorm
65f8820514 SoundManager.unlock checks for audio start support and falls back to noteOn if not found. 2015-01-06 13:50:15 +00:00
photonstorm
b22233a0bc docs update and sound marker check. 2015-01-02 04:14:44 +00:00
photonstorm
fa40b3a7a9 Removed readyState check as it breaks overlapping sounds. 2014-12-18 11:14:45 +00:00
photonstorm
269af69da5 Added extra checks to Sound.play to stop it throwing DOM Exception Error 11 if the sound.readyState wasn't set or the sound was invalid. Also wrapped stop() call in a try catch`. 2014-12-17 13:07:19 +00:00
photonstorm
d8fee414b8 Merge remote-tracking branch 'origin/dev' 2014-12-03 10:40:35 +00:00
photonstorm
40c490ce23 Phaser 2.2 Release Candidate 8 (newsletter build) 2014-11-17 14:14:50 +00:00
photonstorm
ff8a138081 jshint fix 2014-11-16 21:18:29 +00:00
photonstorm
5cd4225412 If you are reloading a Phaser Game on a page that never properly refreshes (such as in an AngularJS project) then you will quickly run out of AudioContext nodes. If this is the case create a global var called PhaserGlobal on the window object before creating the game. The active AudioContext will then be saved to window.PhaserGlobal.audioContext when the Phaser game is destroyed, and re-used when it starts again (#1233) 2014-11-16 21:05:31 +00:00
Sheepolution
266adf06d8 Removed an unnecessary if-statement.
Not sure if it had any purpose. Maybe to make it more clear?

Just a suggestion of something I noticed.
2014-11-10 23:28:20 +01:00
photonstorm
0a86a7ef51 Time.now can no longer be relied upon to contain a timestamp value. If the browser supports requestAnimationFrame then Time.now will contain the high resolution timer value that rAf generates. Otherwise it will contain the value of Date.now. If you require the actual time value (in milliseconds) then please use Time.time instead. Note that all Phaser sub-systems that used to rely on Time.now have been updated, so if you have any code that extends these please be sure to check it. 2014-11-08 20:01:10 +00:00
photonstorm
96fd0ade74 JSDoc fixes. 2014-10-21 22:43:42 +01:00
photonstorm
2657de0daa Sound.fadeTo allows you to fade the Sound to the given volume over the duration specified (thanks @nickryall #1225) 2014-10-15 21:48:00 +01:00
Richard Davey
33ebc10570 Merge pull request #1225 from nickryall/dev
Phaser.Sound.fadeTo Method
2014-10-15 21:44:42 +01:00
Bobby Wilson
0482684dc8 changed all typeof comparisons from == to === 2014-10-10 21:52:06 -06:00
nickryall
f5db1b070e Phaser.Sound.fadeTo Method 2014-10-10 11:03:13 +13:00
photonstorm
506a091257 Sound.allowMultiple allows you to have multiple instances of a single Sound playing at once. This is only useful when running under Web Audio, and we recommend you implement a local pooling system to not flood the sound channels. But it allows for one Sound object to play overlapping times, useful for gun effects and similar (#1220) 2014-10-09 14:44:25 +01:00
photonstorm
9e29a58d89 Sound.fadeOut(duration) will fade the Sound to a volume of zero over the duration given. At the end of the fade the Sound will be stopped and Sound.onFadeComplete dispatched.
Sound.fadeIn(duration, loop) will start the Sound playing, or restart it if already playing, set its volume to zero and then increase the volume over the duration given until it reaches 1. At the end of the fade the Sound.onFadeComplete event is dispatched.
2014-09-24 06:51:39 +01:00
Richard Davey
473e9a1d88 jshint fix 2014-09-23 22:28:15 +01:00
Richard Davey
01fd3df434 AudioSprite support is now built into the Loader and SoundManager. AudioSprites are like sprite sheets, only they consist of a selection of audio files and markers in a json configuration. You can find more details at https://github.com/tonistiigi/audiosprite (thanks @codevinsky #1205)
Fixed AudioSprite jsdoc, casing and formatting issues.
2014-09-23 22:15:09 +01:00
Jeremy Dowell
7cce1366f2 jshint cleanup 2014-09-23 10:25:49 -05:00
Jeremy Dowell
dd0d1729ad Phaser.AudioSprite
AudioSprite implementation for phaser.

Loads audio sprites based on the file format created with: https://github.com/tonistiigi/audiosprite
2014-09-23 10:21:29 -05:00
photonstorm
20551f9129 Lots of jsdocs fixes ready for the new doc generator. 2014-09-16 17:35:08 +01:00
photonstorm
8fec5169f0 Added Sound._muteVolume which stops Firefox and IE9 crashing if you try to unmute a sound that hasn't yet been muted, which can also happen as a result of a game visibility change (thanks @osmanzeki #1108 #1123) 2014-09-01 03:13:05 +01:00
photonstorm
26a55bd202 SoundManager.destroy is a new method that will destroy all current sounds and reset any callbacks.
StateManager.clearCurrentState now handles the process of clearing down the current state and is now called if the Game is destroyed.
Game.destroy now clears the current state, activating its shutdown callback if it had one. It also now destroys the SoundManager, stopping any currently running sounds (#1092)
2014-08-29 11:37:47 +01:00
photonstorm
52ea95d9ce Sound.restart used to cause the Sound to double-up if it was already playing when called. Now correctly stops the sound before restarting it (thanks @wombatbuddy #1136) 2014-08-29 01:06:29 +01:00
photonstorm
2293b64c94 Removing debug / console.log output. 2014-07-09 05:49:13 +01:00
Richard Davey
dd11e2a5a9 Merge pull request #840 from villetou/WebAudioExternalNodeFix
Web audio external node fix
2014-07-01 16:06:08 +01:00
j0hnskot
5ef8143322 Fixes bug #906 2014-06-24 01:59:44 +03:00
j0hnskot
cb0d9c5a69 Fixes bug #906 by adding a check for isDecoded in the update loop. 2014-06-15 21:27:32 +03:00
j0hnskot
5aec4cff8f Fixes bug #906 by adding a check for isDecoded in the update loop. 2014-06-15 21:23:13 +03:00
photonstorm
7d436a7dc3 Update to #868 2014-06-05 13:17:32 +01:00
photonstorm
9aa10f7521 Sound.pause will no longer fire a Sound.onStop signal, and the pause values are set before the onPause signal is dispatched (thanks @AnderbergE, fix #868) 2014-06-05 02:55:20 +01:00
photonstorm
369e2cc2d0 Sound.destroy(true) would call remove on the SoundManager, which in turn would throw a TypeError as it tried to remove the sound events twice (thanks @AnderbergE, fix #874) 2014-06-05 02:50:53 +01:00
photonstorm
eee1183a6a Forces use of a Canvas Renderer under CocoonJS automatically.
The SoundManager no longer requires a touch to unlock it, defaults to unlocked.
2014-05-29 23:17:18 +01:00
Ville Touronen
2e7c8de118 Fixed connecting to an externalNode in Sound.play() and Sound.resume(). 2014-05-21 00:09:46 +03:00
photonstorm
86f6b114e8 Sound.stop on Samsung S4 would randomly throw a DOM error. Wrapped the audio stop in a try/catch (thanks FSDaniel) 2014-05-09 16:39:45 +01:00
photonstorm
6070bc63bc Sound.play now returns the Sound object (thanks @AnderbergE, fix #802) 2014-05-07 00:12:41 +01:00
photonstorm
fd9d454bc6 Documentation updates. 2014-05-01 02:38:12 +01:00
photonstorm
add6b3966c jshint fix 2014-04-28 21:22:11 +01:00
photonstorm
a5cbd8f2a6 Fixed an issue where Sounds that had been paused via game code would un-mute if the game paused and resumed. 2014-04-28 20:30:47 +01:00
photonstorm
838027a93b Timer.timeCap is a new setting allowing your Timers to protect against unexpectedly large delta timers. 2014-04-28 13:22:29 +01:00
photonstorm
ce6215c98a Improved the docs to do with Sound duration / durationMS and added the extra output to the Debug.soundInfo (issue #630) 2014-04-28 02:08:19 +01:00
photonstorm
de17263472 jshint fix 2014-04-01 20:57:52 +01:00
photonstorm
4d06298e64 Fixed silly SoundManager bug :) 2014-04-01 19:51:48 +01:00
photonstorm
03b80887f2 SoundManager.removeByKey(key) will remove all sounds from the SoundManager that have a key matching the given value. 2014-04-01 03:42:30 +01:00
photonstorm
3728f25d68 SoundManager.remove(sound) now lets you remove a sound from the SoundManager, destroying it in the process.
Sound.destroy will remove a sound and all local references it holds, optionally removing itself from the SoundManager as well.
2014-04-01 03:38:13 +01:00
photonstorm
407f71b70e Tidied up Sound.js 2014-04-01 00:40:26 +01:00
photonstorm
3f8911d95f SoundManager.boot will check to see if the AudioContext was created before carrying on (thanks @keyle, fix #669) 2014-03-31 11:22:44 +01:00
Christian Wesselhoeft
61f18b675c Trim trailing whitespace. 2014-03-25 14:56:04 -07:00
photonstorm
9c8f01cd7f The volume given in Sound.play now over-rides that set in Sound.addMarker if specified (fix #623) 2014-03-21 15:43:59 +00:00
photonstorm
52118be088 Sound.onMarkerComplete event is now dispatched when a marker stops. See Sound.onLoop for a looping marker event (thanks registered99, fixes #500) 2014-03-02 11:11:20 +00:00
photonstorm
d0fa50f014 Fixed issue stopping SoundManager.volume from working correctly on a global volume basis (fix # 488) 2014-02-26 14:40:55 +00:00
photonstorm
cc06a62b90 Pausing the game will now mute audio and resuming will un-mute, unless it was muted via the game (fixes #439) 2014-02-25 03:12:12 +00:00
Richard Davey
94133e4c11 Updated Sound.play loop check 2014-02-22 03:05:41 +00:00
photonstorm
ea4873e286 SoundManager.play() does not do anything with destroyOnComplete (fix #333) 2014-02-21 23:55:11 +00:00
photonstorm
0896c2fac7 Updating copyright year and README. 2014-02-05 16:54:59 +00:00
photonstorm
d1cd1df9a5 Lots of fixes and updates to the Button class, InputHandler for snap offsets, Sound looping and Stage scaling. 2013-12-31 17:03:09 +00:00
photonstorm
86f6ddcbc8 Two new particle examples and a group animation example. Also fixed CocoonJS sound issue and Cache sound locked bug. 2013-12-31 03:37:11 +00:00
photonstorm
ce4cf531d4 Added class constructors, fixed Stripshader, added relative Tween example and updated Tween source. 2013-12-30 16:54:00 +00:00
photonstorm
a361a18616 Updated IE11 check, forces IE11 to use Canvas renderer even in AUTO mode. 2013-12-13 14:04:14 +00:00
photonstorm
141337bed9 Heavily optimised PixiShader. 2013-11-26 05:13:56 +00:00
photonstorm
299115ca5d The entire Phaser library has been updated to match the new JSHint configuration. 2013-11-25 04:40:04 +00:00
photonstorm
13a2cc2feb Updating all files to adhere to the JSHint settings and fixing lots of documentation errors on the way. 2013-11-25 03:13:04 +00:00
photonstorm
155c863d69 New Timer class and scale event updates. 2013-11-24 11:04:58 +00:00
photonstorm
e620c99479 ShaderToy convertor up and working, lots of shaders being turned into Pixi filters :) 2013-11-20 02:28:28 +00:00
photonstorm
a6fac64248 Loads of issues reported on Github resolved (sprite crop, music resume, etc). 2013-10-24 04:27:28 +01:00
Richard Davey
f832bacfd6 More Docs! 2013-10-03 01:21:08 +01:00
Richard Davey
e85643abf4 Yet more documentation done. 2013-10-02 20:18:24 +01:00
Richard Davey
ca113b85aa More docs coming on. 2013-10-01 16:39:39 +01:00
Richard Davey
0a98bb67d8 jsdoc blocks added to every file and tidied up. 2013-10-01 15:05:30 +01:00
Richard Davey
305b12d76b Adding docs. 2013-10-01 15:01:46 +01:00
Richard Davey
16b1913de1 * Fixed issue in Sound.play where if you gave a missing marker it would play the whole sound sprite instead.
* Button.setFrames will set the current frame based on the button state immediately.
* InputHandler now creates the _pointerData array on creation and populates with one empty set of values, so pointerOver etc all work before a start call.
* Added Canvas.setUserSelect() to disable touchCallouts and user selections within the canvas.
* When the game boots it will now by default disable user-select and touch action events on the game canvas.
* Loaded.setPreloadSprite now rounds the width/height values and starts from 1. This fixes canvas draw errors in IE9/10 and Firefox.
2013-09-30 17:12:22 +01:00
Richard Davey
8d17e1f963 Sound duration fixes. 2013-09-30 12:17:21 +01:00
Richard Davey
31bbf05ace * Fixed small bug stopping Tween.pause / resume from resuming correctly when called directly.
* Fixed an issue where Tweens.removeAll wasn't clearing tweens in the addition queue.
* Change: When you swap State all active tweens are now purged.
2013-09-30 11:15:50 +01:00
Richard Davey
18c695e9dd PixiPatch and other 1.0.7 features 2013-09-27 09:57:08 +01:00
Richard Davey
bc02a1a05e Fixing collision issues 2013-09-23 01:06:09 +01:00
Richard Davey
45426be0bc Assets update 2013-09-20 23:21:12 +01:00
Webeled
26a595cd44 JSDocs update ;) 2013-09-19 16:34:48 +02:00
Webeled
bb9761aaf4 It loops but still problems on the constructor 2013-09-16 17:40:56 +02:00
Webeled
fc584cf6bc Examples (audio, button,camera), and docs
Created some examples (audio, button,camera), and documented the source
code along the way
2013-09-16 16:37:30 +02:00
Richard Davey
f260108433 Tidying up source code for release. Also refactored World to use a Group instance, rather tha duplicate functions. 2013-09-11 13:21:07 +01:00
Richard Davey
87858d6bbf Fixed a bug stopping legacy Audio from starting correctly. Also fixed an issue in the Loader causing it to not load the next file if an unsupported audio file was encountered. Fixed audio playback issues on Firefox/Waterfox as a result. 2013-09-11 11:33:27 +01:00
Richard Davey
e41e35fd09 Fixed an error that stopped 2 tweens from being able to run on the same object. Also refactored a lot of the classes to remove prototype properties and move them to local instance properties. 2013-09-10 20:40:34 +01:00
Richard Davey
a486bf6b4a Phaser now running on iOS. Also fixed a legacy bug where a pending sound wouldn't play once it was touch unlocked. Also fixed Input not working on WebGL contexts. Added WebGL texture updates to the Group/World swap functions. 2013-09-10 16:46:39 +01:00
Richard Davey
c18de53bab SoundManager converted and playing audio :) 2013-09-03 01:24:16 +01:00