I started with the controlClass. This was a modified version of an existing volume slider AS3 file. This helped me to figure out the math for calculating the volume level (which was in a range from 0 to 1). I made invisible rectangles along the path where the faders travel and used an equation on the soundTransform varible to figure out where the volume would be in relation to the faders position on the y axis. There are two flags in this class: loaded, and muted (both are boolean with a value of false). I also added a conditional operator (which was new to me and very interesting!) to this later on. I had to use several override functions for the soundChannel to make the Play and Stop buttons work after I had initially built it. I also used a get property for public functions called isLoaded and isPlaying. This was useful in returning values from other variables
The panClass uses similarly constructed horizontal rectangles to allow the pan sliders to move across the x axis. This was a lot harder to figure out because while the volume operated on a scale from 0 to 1, the pan function had to operate from -1 (full left) to 0 (center) all the way to +1 (full right). This was challenging, and several variables needed to be created to allow for the different x positions that they were starting from as well as how to get from -1 to +1. I used a variable called adjX to adjust the x position based on another variable called offset. The third one, called panPos, calculated the panning value based on an equation with the adjX variable. It took some tinkering around with the math for the output to spit out the correct values that i needed for it to work (-1, 0, +1).
The MuteBox class is a simple as file that just controls the MuteButton movieclip. It basically uses a toggle to say that if the movieclip is clicked while on frame 1(unchecked), gotoAndStop on frame 2 (checked), if else, gotoAndStop on frame 1(checked).
The last class I created is called MainMixer. This class watches over the objects on the stage, and gives functionality to the Play and Stop buttons. It uses EventListeners to update whether or not the tracks are loaded upon clicking Play and Stop, and if they are allows them to operate as such. There are hitTestPoints that are built into a rather lengthy if / else statement (which also includes the toggle command).
That's basically it in a nutshell. The easiest thing was getting the controlClass to initially work, since i had something to go from. The hardest part was learning to override other functions and get EVERYTHING to work together simultaneously.
New things I learned were: get function, conditional operator (very neat - allows for an if / else in one line!), switch statement (which can be used as an alternative to very long if / else statements), override functions (which allows me to access the sndChannel from isLoaded and isPlaying), and private functions (which are kind of _smarter_ functions).
p.s. The functions of this project can be best heard using headphones... especially using the panning. also... the mouse can be a bit sticky when dragging the faders and panners. you have to click off of them to avoid this.