www.emc2zen.com.ar
Ver ejemplo en funcionamiento » »
Archivos fuente del ejemplo » »
Archivos Fuente de la clase » »
Documentación de la clase » »
Estructura de la clase:
Esta clase permite separar la Capa de Datos y de Programación (API) de un reproductor de MP3, con respecto a la Interfaz Grafica (GUI).
Lo bueno de esto es que permite una versatilidad en el diseño de la GUI, sin tener que preocuparse por la API.
La clase es muy sencilla, pero como siempre dejo algunos detalles que se pueden mejorar y así hacer un poco más entretenida la tarea de implementar o mejorar la clase.
De apoco iré armando un miniFrameWork (mFW), para que aquellas ávidas mentes que quieran incursionar en la programación de flash, no tengan que romperse la cabeza con mounstrosos FrameWork que jamás se llegan a comprender o a utilizar del todo.
Sigo sosteniendo que este mFW esta orientado a personas que no poseen grandes capacidades de programación o bien están inicializando sus pasos en ella, dentro de lo que es ActionScript 2. Una vez finalizado en AS2 migraremos a AS3, reescribiendo el mFW en dicha versión del lenguaje.
Por ultimo, el lema que pretendo implementar en la elaboración de mFW es: A grandes problemas, soluciones simples.
NOTA: Aquellos que este usando la Clase FileLoad, les recomiendo bajar las fuentes de este tutorial y actualizar la clase ya que la modifiqué para adaptarla al mFW, jejeje!
Otra cosa, por el momento seguiré armando los ejemplos (example) de las clases en AS1, pero tengo la intención de que el armado de las estructuras lógicas de las GUI, sean también hecho en clases.
Estructura de la clase:
AsLib
SoundPlayer
SoundDataLayer
Detalles de las clases:
SoundDataLayer: Administra las funcionalidades en la reproducción de archivos de audio, en este caso MP3.
Propiedades:
coefficientVolume, initialVolume, repeat, streaming
Métodos:
new SoundDataLayer(), GetDataTrack(), GetStatus(), load(), MaxVolume(), MinVolume(), MuteVolume(), NextTrack(), PauseTrack(), PlayTrack(), PrevTrack(), StopTrack(), Volume()
Eventos:
OnChanged(), OnLoad(), OnProgress()
Uso de la clase:
La forma de utilizar la clase es muy sencilla:
// Creamos una instancia a la clase
var player:SoundDataLayer = new SoundDataLayer();
// Definimos que hacer con el cambio de track
player.OnChanged = function():Void {
var _data:Object = this.GetDataTrack();
for( var a:String in _data ){
trace( a + ": " + _data[a] );
}
}
// Cargamos nuestra lista
player.load( "playList.xml", "_music/playList/" );
Utilizando algunos métodos y propiedades:
// Creamos una instancia a la clase
var player:SoundDataLayer = new SoundDataLayer();
// Definimos que hacer con el cambio de track
player.OnChanged = function():Void {
var _data:Object = this.GetDataTrack();
for( var a:String in _data ){
trace( a + ": " + _data[a] );
}
}
// coeficiente de volumen
player.coefficientVolume = 2;
// inicio del volumen
player.initialVolume = 70;
// Cargamos nuestra lista
player.load( "playList.xml", "_music/playList/" );
///////////////////////////////////////////////////////////////
// Siguiente Track
player.NextTrack();
// Track Anterior
player.NextTrack();
// Play Track
player.PLayTrack();
// Stop Track
player.StopTrack();
// más volument
player.maxVolume();
// menos volument
player.minVolume();
// etc...
La clase posee dos modos de reproducción por:
STREAMING (default):
// Creamos una instancia a la clase
var player:SoundDataLayer = new SoundDataLayer();
// Cargamos nuestra lista
player.load( "playList.xml", "_music/playList/" );
NO STREAMING:
// Creamos una instancia a la clase
// una de las opciones es setearlo en el constructor
// new SoundDataLayer( false );
var player:SoundDataLayer = new SoundDataLayer();
// o bien como propiedad
player.streming = false;
// medimos el progreso de la carga
player.OnProgress = function( _value:Number ):Void {
trace( "CARGA: " + _value + " %..." )
}
// Cargamos nuestra lista
player.load( "playList.xml", "_music/playList/" );
La clase posee tres eventos:
OnLoad: este se ejecuta una vez finalizada la carga total del archivo.
// Creamos una instancia a la clase
var player:SoundDataLayer = new SoundDataLayer();
// Definimos el evento
player.OnLoad = function():Void {}
OnChanged: este se ejecuta una vez finalizada la reproducción y cambio del track, o bien cuando el cambio es manual.
// Creamos una instancia a la clase
var player:SoundDataLayer = new SoundDataLayer();
// Definimos el evento
player.OnChanged = function():Void {}
OnProgress: este se ejecuta mientras se efectúa la carga, y retorna el progreso de la misma. El valor devuelto es el porcentaje de carga que posee en ese momento el archivo.>
// Creamos una instancia a la clase
var player:SoundDataLayer = new SoundDataLayer();
// Definimos el evento
player.OnProgress = function( _value:Number ):Void {
trace( "CARGA: " + _value + " %..." )
}
NOTA: Si el constructor es creado e inicializado dentro del ámbito de una función, lo que deben utilizar es el método delegate de la clase Utils. Ya que la clase no maneja el dentro de ella el ámbito donde se ejecuta la dicha instancia.
EJ1:
import AsLib.Utils;
var PLAYER:SoundDataLayer;
var ViewTitle:Function = function ():Void {
trace("ON_CHANGED!!!");
}
var init:Function = function ( _playlist:String, _folder:String ):Void {
PLAYER = new SoundDataLayer();
PLAYER.load( _playlist, _folder );
PLAYER.OnChanged = Utils.delegate( this, ViewTitle );
}
EJ2:
var PLAYER:SoundDataLayer = new SoundDataLayer();
PLAYER.load( _playlist, _folder );
PLAYER.OnChanged = function():Void {
trace("ON_CHANGED!!!");
}
SIN MAS?
Espero que les sea de utilidad, y que puedan experimentar en su estructura para modificarla a sus necesidades.
Criticas/mejoras/dudas/problemas, escribir a: pollyjex@emc2zen.com.ar.
Aquellos que quiera colaborar, aportando ideas o bien estructuras de código, escribir a: mfw@emc2zen.com.ar
Saludos.
PollyJex ^_^!
|