-
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
42f3596
commit 2dd7340
Showing
4 changed files
with
76 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<!doctype html> | ||
<html lang="en"> | ||
|
||
<body style="margin: 0px;"> | ||
<script type="module"> | ||
import './restart-audio-context.js' | ||
import init from './bevy_game.js' | ||
|
||
init().catch((error) => { | ||
if (!error.message.startsWith("Using exceptions for control flow, don't mind me. This isn't actually an error!")) { | ||
throw error; | ||
} | ||
}); | ||
</script> | ||
</body> | ||
|
||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
// taken from https://developer.chrome.com/blog/web-audio-autoplay/#moving-forward | ||
(function () { | ||
// An array of all contexts to resume on the page | ||
const audioContextList = []; | ||
|
||
// An array of various user interaction events we should listen for | ||
const userInputEventNames = [ | ||
'click', | ||
'contextmenu', | ||
'auxclick', | ||
'dblclick', | ||
'mousedown', | ||
'mouseup', | ||
'pointerup', | ||
'touchend', | ||
'keydown', | ||
'keyup', | ||
]; | ||
|
||
// A proxy object to intercept AudioContexts and | ||
// add them to the array for tracking and resuming later | ||
self.AudioContext = new Proxy(self.AudioContext, { | ||
construct(target, args) { | ||
const result = new target(...args); | ||
audioContextList.push(result); | ||
return result; | ||
}, | ||
}); | ||
|
||
// To resume all AudioContexts being tracked | ||
function resumeAllContexts(event) { | ||
let count = 0; | ||
|
||
audioContextList.forEach(context => { | ||
if (context.state !== 'running') { | ||
context.resume(); | ||
} else { | ||
count++; | ||
} | ||
}); | ||
|
||
// If all the AudioContexts have now resumed then we | ||
// unbind all the event listeners from the page to prevent | ||
// unnecessary resume attempts | ||
if (count == audioContextList.length) { | ||
userInputEventNames.forEach(eventName => { | ||
document.removeEventListener(eventName, resumeAllContexts); | ||
}); | ||
} | ||
} | ||
|
||
// We bind the resume function for each user interaction | ||
// event on the page | ||
userInputEventNames.forEach(eventName => { | ||
document.addEventListener(eventName, resumeAllContexts); | ||
}); | ||
})(); |