CoreLib: biblioteca de clases para actionscript 3
0 COMENTARIOS - Publicado hace 15 meses - Clasificado en: ACTIONSCRIPT, FLASH, RECURSOSEl proyecto CoreLib consiste en una biblioteca en Actionscript 3 que contiene un buen número de clases y utilidades para trabajar con Actionscript. Incluye, entre otras cosas, clases para codificación MD5 y SHA1, serialización JSON y tratamiento avanzado de cadenas de texto y fechas. El proyecto ha sido creado por gente como Mike Chambers, Daniel Durà o Darron Schall, verdaderos maestros en la programación en actionscript.
Algunas entradas relacionadas:
- El componente DateField. Primera Parte
- Tooltip sencillo
- Acceder a las etiquetas ID3 con Flash
- Estilos predefinidos para los componentes de Flash
- duplicateMovieClip(). Parte I
- Listas desplegables dependientes
- Control de campos de texto input con Flash
Acceder a las etiquetas ID3 con Flash
0 COMENTARIOS - Publicado hace 35 meses - Clasificado en: FLASH, ACTIONSCRIPT, MP3, ID3Los archivos de sonido MP3 pueden contener etiquetas ID3 que proporcionan metadatos sobre el archivo. Si un sonido MP3 que se carga utilizando Sound.attachSound() o Sound.loadSound() contiene etiquetas ID3, se puede consultar estas propiedades.
En el siguiente ejemplo, usamos el handler onID3() asociado a la clase Sound para determinar cuando la información de la cabecera ID3 ha sido cargada y mostrarla dentro de una caja de texto que creamos a tal efecto.
var Cancion:Sound = new Sound();
Cancion.onID3 = function():Void {
for (var i:String in this.id3){
DatosMp3.htmlText += "" + i + ":" + this.id3[i] + "\n";
}
};
this.createTextField("DatosMp3", 1, 10, 10, 500, 300);
DatosMp3.border = true;
DatosMp3.html = true;
DatosMp3.multiline = true;
DatosMp3.wordWrap = true;
Cancion.loadSound("song.mp3", true);
En un principio se podía accdeer a las propiedades ID3 1.0, con los siguientes métodos:
Sound.id3.comment
Sound.id3.album
Sound.id3.genre
Sound.id3.songname
Sound.id3.artist
Sound.id3.track
Sound.id3.year
Lo cierto es que con estas propiedades nos puede servir en el 99% de los casos pero a partir de las versión 7 del Player, éste admitía etiquetas ID3 2.0. La equivalencia con las etiquetas anteriores sería:
Sound.id3.COMM
Sound.id3.TALB (album)
Sound.id3.TCON (genre)
Sound.id3.TIT2 (songname)
Sound.id3.TPE1 (artist)
Sound.id3.TRCK (track number)
Sound.id3.TYER (year
Pero además, con las etiquetas IDe 2.0 se puede acceder a la siguiente información:
Sound.id3.TFLT: Tipo de archivo
Sound.id3.TIME: Tiempo
Sound.id3.TIT1: Descripción de grupo de contenido
Sound.id3.TIT2: Título/nombre de canción/descripción del contenido
Sound.id3.TIT3: Subtítulo/descripción adicional
Sound.id3.TKEY: Clave inicial
Sound.id3.TLAN: Idiomas
Sound.id3.TLEN: Longitud
Sound.id3.TMED:Tipo de medio
Sound.id3.TOAL: Álbum/película/título de espectáculo original
Sound.id3.TOFN: Nombre de archivo original
Sound.id3.TOLY: Letrista/escritor original
Sound.id3.TOPE: Artistas/intérpretes originales
Sound.id3.TORY: Año de publicación original
Sound.id3.TOWN: Propietario/licenciatario del archivo
Sound.id3.TPE1: Intérpretes/solistas principales
Sound.id3.TPE2: Grupo/orquesta/acompañamiento
Sound.id3.TPE3: Director/intérprete adicional
Sound.id3.TPE4: Interpretado, remezclado o editado por
Sound.id3.TPOS: Parte de un conjunto
Sound.id3.TPUB: Editor
Sound.id3.TRCK: Número de pista/posición en el conjunto
Sound.id3.TRDA: Fechas de grabación
Sound.id3.TRSN: Nombre de emisora de Internet
Sound.id3.TRSO: Propietario de emisora de Internet
Sound.id3.TSIZ: Tamaño
Sound.id3.TSRC: ISRC (código de grabación estándar internacional)
Sound.id3.TSSE: Software/hardware y configuración empleados para la codificación
Sound.id3.TYER: Año
Sound.id3.WXXX: Fotograma de vínculo de URL
El siguiente ejemplo muestra estos datos dentro de un Datagrid:
1.– Desde el panel de componentes arrastramos una instancia de Datagrid y le asignamos como nombre de instancia “id3_dg”
2.– En un fotograma pegamos el siguiente código:
import mx.controls.gridclasses.DataGridColumn;
id3_dg.move(0, 0);
id3_dg.setSize(200, 200);
var DataGrid_Propiedad:DataGridColumn = id3_dg.addColumn(new DataGridColumn("property"));
DataGrid_Propiedad.width = 100;
DataGrid_Propiedad.headerText = "Propiedad";
var DataGrid_Valor:DataGridColumn = id3_dg.addColumn(new DataGridColumn("value"));
DataGrid_Valor.width = id3_dg._width-DataGrid_Propiedad.width;
DataGrid_Valor.headerText = "Valor ID3";
var cancion:Sound = new Sound();
cancion.onID3 = function() {
for (var prop in this.id3) {
id3_dg.addItem({property:prop, value:this.id3[prop]});
}
};
cancion.loadSound("song.mp3", true);
Algunas entradas relacionadas:
- Mostrar la fecha utilizando arrays
- Efecto cine sobre imágenes
- Clase Uri
- Reloj UTC en Flash
- Control de colisiones: hitTest
- El componente DateField. Primera Parte
- Clase SoundDataLayer
As3: El evento mouseLeave y el método addEventListener
0 COMENTARIOS - Publicado hace 38 meses - Clasificado en: FLASH, AS3, ACTIONSCRIPT, TUTORIALESCon el nuevo evento Stage.mouseLeave, perteneciente a la clase Stage, podemos averiguar cuando el puntero del ratón se mueve fuera de la pelÃcula de Flash. Lo que nos puede resultar muy útil a la hora de programar nuestras aplicaciones.
En este ejemplo controlamos las veces que el cursor se desplaza fuera de la pelÃcula de flash:
var textTest:TextField;
var Contador:int=0;
stage.addEventListener(Event.MOUSE_LEAVE, onStageLeave);
textTest = new TextField();
addChild(textTest);
textTest.text = "FUERA:";
function onStageLeave(event:Event):void{
textTest.text = "FUERA:\n"+ ++Contador + " veces.";
}
Por otro lado, un método también muy interesante a la hora de mantener la interacción con el usuario es addEventListener, con el que podemos recibir notificaciones a la ejecución de eventos. Por ejemplo, recibir la tecla que ha sido pulsada:
var textTest:TextField;
stage.addEventListener(KeyboardEvent.KEY_DOWN, TeclaPulsada);
textTest = new TextField();
addChild(textTest);
textTest.text = "HAS PULSADO:";
function TeclaPulsada(tecla:KeyboardEvent):void{
textTest.text = "HAS PULSADO:\n"+tecla.keyCode;
}
Clase Uri
0 COMENTARIOS - Publicado hace 38 meses - Clasificado en: FLASH, ACTIONSCRIPT Autor:PollyJexE-mail:pollyjex@emc2zen.com.ar
URL: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 administrar el armado de una URI, para ser enviada por el método GET, o bien en la escritura de la misma para se almacenada.
Además posee ciertas utilidades para la verificación de factores que determinen el tipo de URI que es.
NOTAS:
- 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
- Aquellos que este usando la Clase FileLoad, SoundDataLayer, les recomiendo bajar las fuentes de este tutorial y actualizar las clase ? ya que la Utils sufrió algunas mejoras.
Estructura de la clase:
AsLib
Uri extends Utils
Detalles de las clases:
Uri: Utilidad para el manejo de las URI.
Métodos:
new Uri(), addParameters(), getDns(), getFileName(), getParameters(), getParametersUri(), getUri(), isFile(), isHttp(), isHttps(), removeAllParameters(), removeParameters()
Uso de la clase:
La forma de utilizar la clase es muy sencilla:
// Métodos básicos: trace( Uri.isHttp() ); trace( Uri.isHttp( "https://www.misitio.com" ) ); trace( Uri.isHttps() ); trace( Uri.isHttps( "https://www.misitio.com" ) ); trace( Uri.isFile() ); trace( Uri.isFile( "https://www.misitio.com" ) ); trace( Uri.getFileName() ); trace( Uri.getFileName( "http://www.misitio.com/log.txt" ) ); trace( Uri.getDns() ); trace( Uri.getDns( "http://www.misitio.com/log.txt" ) ); trace( Uri.getUri() );
Uso del administrador de parámetros:
// Creamos una instacia de la clase
var $uri:Uri = new Uri();
// agregamos parámetros
$uri.addParameters( {
user:"toshi",
pass:1234,
id:7,
lánzame:"toshiba",
idAction:777
} )
// traceamos la URI formateada
trace( $uri.getParametersUri() );
// visualizamos todos lo parámetros
var param:Object = $uri.getParameters();
for( var a:String in param ){
trace( "Key: " + a );
trace( "\t\tValue: " + param[a] );
}
// removemos parametros
$uri.removeParameters( [
"idAction",
"lastname"
] );
// traceamos la URI formateada
trace( $uri.getParametersUri() );
// eliminamos todos lo parámetros
$uri.removeAllParameters();
// traceamos la URI formateada
trace( $uri.getParametersUri() );
SIN MAS
Espero que les sea de utilidad, y que puedan experimentar en su estructura para modificarla a sus necesidades.
CrÃticas/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 ^_^!
Algunas entradas relacionadas:
- Dibujo Flash VIII: Manejadores
- Sonido en Flash VI: Precarga de un sonido
- BevelFilter
- Utilizar fscommand() para comunicar Flash con otras aplicaciones
- Clase SoundDataLayer
- Ejemplo de utilización de los componentes Loader y ProgressBar
- BlurFilter Parte I
Clase SoundDataLayer
0 COMENTARIOS - Publicado hace 38 meses - Clasificado en: ACTIONSCRIPT, FLASH, CLASES Autor:PollyJexE-mail: pollyjex@emc2zen.com.ar
URL:
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 ^_^!
Algunas entradas relacionadas:
- Crear una pausa de x segundos
- FLASH Y XML (VIII): Generar una Galeria de Imagenes. Tercera Parte
- FLASH Y XML (VII): Generar una Galeria de Imagenes. Segunda Parte
- Listas desplegables dependientes
- Dibujo Flash VIII: Manejadores
- Un simple scroll de texto
- Ejemplo de utilización de los componentes Loader y ProgressBar
Aplicar ruido a una imagen con Flash
0 COMENTARIOS - Publicado hace 38 meses - Clasificado en: FLASH, ACTIONSCRIPT, TUTORIALESPara ello utilizaremos el método noise de la clase BitmapData, que rellena una imagen con pÃxeles que representan ruido aleatorio. La sintaxis es:
public noise(randomSeed:Number, [low:Number], [high:Number], [channelOptions:Number], [grayScale:Boolean]) : Void
Donde:
- randomSeed es el valor de inicialización aleatorio que se va a utilizar.
- low es el valor más bajo que se va a generar para cada canal (de 0 a 255). El valor predeterminado es 0.
- high es el valor más alto que se va a generar para cada canal (de 0 a 255). El valor predeterminado es 255.
- channelOptions es un número que puede ser una combinación de cualquiera de los cuatro valores de canal: 1 (rojo), 2 (verde), 4 (azul) y 8(alfa). Puede utilizar el operador lógico OR | para combinar valores de canal. El valor predeterminado es (1 | 2 | 4).
- grayScale es un valor booleano. Si es true, se creará una imagen en escala de grises estableciendo todos los canales de color con el mismo valor. La selección del canal alfa no se ve afectada por el establecimiento de este parámetro como true. El valor predeterminado es false.
//importamos la clase BitmapData
import flash.display.BitmapData;
//Creamos un clip de pelicula
//que contendra la imagen
this.createEmptyMovieClip("contenedor_mc", this.getNextHighestDepth());
//cargamos la imagen
contenedor_mc.loadMovie("img01.jpg");
//creamos una instancia 'ruido'
//a partir de la clase BitmapData
var ruido:BitmapData = new BitmapData(Stage.width, Stage.height, true);
//asociamos el mapa de bits al clip
this.attachBitmap(ruido, this.getNextHighestDepth());
//creamos un intervalo de refresco
setInterval(actRuido, 100);
function actRuido() {
//asociamos valores a partir de la posicion del raton
var valor1 = 30 * _xmouse / Stage.width;
var valor2 = 200 * _ymouse / Stage.height;
//aplicamos el ruido
ruido.noise(Math.round(Math.random() * 100000), valor1, valor2, 8, true);
}
Algunas entradas relacionadas:
- CoreLib: biblioteca de clases para actionscript 3
- BevelFilter
- La clase Tween Parte 1
- BlurFilter Parte II
- Función de desaturación
- Drag con easing
- Componentes: MenuBar I
Estilos predefinidos para los componentes de Flash
0 COMENTARIOS - Publicado hace 38 meses - Clasificado en: FLASH, ACTIONSCRIPTA cada uno de los componentes Flash denominados de "User Interface", tales como CheckBox, ComboBox, DataGrid, ... se les puede cambiar la apariencia utilizando el método setStyle(). Con el que indicamos el estilo que deseamos aplicar. La sintaxis es:
NombredeInstancia.setStyle(NombredeEstilo, ValordeEstilo)
Uno de los estilos que ya esta definido y que modemos aplicar es themeColor: el cuál puede tomar tres valores (haloGreen, haloBlue y haloOrange). Por ejemplo, si queremos cambiar el aspecto de un ComboBox, cuya instancia hemos denominado miCombo, lo harÃamos:
miCombo.setStyle("themeColor", "haloOrange");
Algunas entradas relacionadas:
- Mostrar la fecha utilizando arrays
- Componentes: MenuBar I
- swapDepths: Variar el orden de apilamiento en Flash
- duplicateMovieClip(). Parte I
- Tooltip sencillo
- Carga aleatoria de citas. Utilización de Math.Random
- Sonido en Flash VI: Precarga de un sonido





















Mauricio Campos en 50 preguntas y respuestas de entrevistas de trabajo
