Skip to content

Instantly share code, notes, and snippets.

@nydame
Forked from R-V-S/player-js-analysis.md
Last active February 2, 2018 21:28
Show Gist options
  • Save nydame/91cff5da09979a80929eb418407c26e2 to your computer and use it in GitHub Desktop.
Save nydame/91cff5da09979a80929eb418407c26e2 to your computer and use it in GitHub Desktop.
player.js analysis
  1. This file declares a class, Player, instantiates it, and assigns it to a global player variable.
  2. The Player class contains four methods:
    • constructor()
    • playPause()
    • skipTo()
    • setVolume()
  3. The constructor() method sets initial values for the currentlyPlaying, playState, volume, and soundObject properties.
    • currentlyPlaying is set to the first item in album.songs.
    • The initial playState is "stopped".
    • The volume is set to the number 80.
    • The soundObject instantiates a new buzz.sound object using the soundFileUrl property of this.currentlyPlaying. The buzz variable doesn't appear to be initialized here, so presumably it's a dependency loaded elsewhere.
  4. The playPause() method accepts one parameter, song. It sets it to this.currentlyPlaying by default. It checks to see if this.currentlyPlaying is different from song, and if so, it:
    • Stops the soundObject property.
    • Removes the "playing" and "paused" classes from the element property of this.currentlyPlaying.
    • Sets this.currentlyPlaying to the function's parameter, song.
    • Changes the playState property to "stopped".
    • Instantiates a new sound object using this.currentlyPlaying, which was just updated to song.
  5. The skipTo() method accepts one parameter, percent, and checks the value of this.playState.
    • If this.playState is set to "playing", skipTo passes percent% of the song's total duration (i.e., soundObject.getDuration()) to the soundObject.setTime() method so the song can skip forward or back to the appropriate time.
    • If this.playState is not set to "playing", skipTo does nothing.
  6. The setVolume() method accepts one parameter, percent, which it uses to change state in 2 places:
    • Sets this.volume to percent.
    • Sets this.soundObject.volume to percent.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment