HTML and CSS Reference
In-Depth Information
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: