InstantStorm: crear salvapantallas con Flash

0 - , - 18/04/2007 15:28:55

InstantStorm

InstantStorm es una utilidad gratuita para Windows que nos permitirá crear salvapantallas basados en películas realizadas con Flash. Todo lo que hay que hacer es seleccionar un fichero SWF, unos cuantos parámetros y compilar un instalador ejecutable. Las principales características son:

- 100% gratuito para todos los propósitos.
- Opciones de escalado en el salvapantallas.
- Fácil uso.
- Soporte para la protección por contraseña.
- Soporte para ficheros externos (por ejemplo si el SWF requiere de ficheros externos como .txt o .as)
- Soporte para Flash 9

As3: El evento mouseLeave y el método addEventListener

0 - , , , - 30/01/2007 00:00:00

Con 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 - , - 25/01/2007 11:05:22
Autor:PollyJex
E-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 ^_^!

Clase SoundDataLayer

0 - , , - 23/01/2007 15:19:31
Autor:PollyJex
E-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 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 ^_^!

FMP3: Reproductor de mp3 en Flash

0 - , , - 17/01/2007 00:00:00

FMP3 es un reproductor de mp3, realizado con tecnología flash, que mediante un único fichero SWF que pesa solo 7kb permite una facil inserción de mp3 dentro de una página web. Tan sólo hay que indicarle una serie de parámetros al swf (fichero, título de la cancion, volumen inicial, loop,..)

FMP3

FMP3 » »