HTML and CSS Reference
Figure 7-8. Space Raiders creating sounds on the fly
Iteration #3: Creating a Sound Pool
So, now we know we don't want to play an HTMLAudioElement repeatedly, or create
unlimited sound objects on the fly. However, what if we cap the number of audio objects
we create, and put those objects in a pool so we can use them over and over? This will
save us memory, and after the sounds are loaded, we shouldn't see any loading pause
before they are played, right?
We will implement a solution that uses HTMLAudioElement objects as general-purpose
sound objects. We will keep a pool of them, and change the src attribute to whatever
sound we want to play. This appears to be an elegant solution that reuses as much as
possible, in addition to giving us a lot of flexibility as to which sounds we want to play.
In canvasApp() , we will create a new constant named MAX_SOUNDS . This will represent
the maximum number of sound objects we can create at any one time. We will also
rename our sounds array to soundPool to better describe its purpose: