Cuando pones un preload en Flash puede ocurrir que, al publicarlo, ves que la película tarda en cargarse y cuando lo hace, el preload arranca desde el 80% o el 90%.
Me volví bastante loco con este problema pero finalmente hallé una muy buena solución. Acá te dejo mi problema y un paso a paso para solucionarlo, con imagenes incluídas.
Mostrando entradas con la etiqueta actionscript. Mostrar todas las entradas
Mostrando entradas con la etiqueta actionscript. Mostrar todas las entradas
viernes, 17 de agosto de 2012
viernes, 4 de noviembre de 2011
ActionScript 3: Juego de Tiro al Blanco
El código que presento a continuación un ejemplo básico para generar un juego de tiro al blanco, muy sencillo, que puede ser utilizado para banners de adsense o cualquier otro sistema de ads.
Por supuesto que no es algo muy elaborado, pero con un poco de diseño de fondo podrás tener un banner bien armado y super funcional.
Vamos al desarrollo:
Por supuesto que no es algo muy elaborado, pero con un poco de diseño de fondo podrás tener un banner bien armado y super funcional.
Vamos al desarrollo:
miércoles, 6 de octubre de 2010
ActionScript 3: Cómo hacer un Calendario dinámico .fla
Esta vez apareció la necesidad de usar gráficos en flash que utilicen fechas, y como nunca lo había utilizado, me puse a investigar. Después de todo si google todavía usa gráficos en flash para Analytics ¿por qué yo no iba a usarlo en mi humilde proyecto?¿no?
Así, las primeras pruebas exprimiendo las propiedades y metodos del objeto DATE dieron este calendario en actionscript3 desarrollado en muy pocas líneas.
El script que encontrarás a continuación es sólo una base para mostrar fechas, por eso es que utiliza una gráfica muy sencilla y su función puntual es: Dibujar el almanaque mensual, detectar años bisiestos (Febrero con 29 días), muestra el día actual, permite mostrar los meses y años siguientes y posteriores y, al pasar el mouse sobre un día, mostrará la fecha sobre la que estamos pasando.
Sin más preámbulos ni excusas aquí van los pasos para desarrollar este calendario en actionscript3 (de todos modos, al pie de este artículo te dejo el link para descargar el fla):
Así, las primeras pruebas exprimiendo las propiedades y metodos del objeto DATE dieron este calendario en actionscript3 desarrollado en muy pocas líneas.
El script que encontrarás a continuación es sólo una base para mostrar fechas, por eso es que utiliza una gráfica muy sencilla y su función puntual es: Dibujar el almanaque mensual, detectar años bisiestos (Febrero con 29 días), muestra el día actual, permite mostrar los meses y años siguientes y posteriores y, al pasar el mouse sobre un día, mostrará la fecha sobre la que estamos pasando.
Sin más preámbulos ni excusas aquí van los pasos para desarrollar este calendario en actionscript3 (de todos modos, al pie de este artículo te dejo el link para descargar el fla):
Publicado por
Chabat
el
10/06/2010
| Etiquetas:
actionscript,
almanaque,
bisiestos,
calendario,
date
martes, 15 de junio de 2010
ActionScript 3: Clase para juego Simon
Hoy te traigo un jueguito muy simple pero que tiene algunas cosas interesante para analizar como listeners para teclado y mouse, setInterval() y otras yerbas que irán apareciendo en el script.El jueguito cuenta con un variador de dificultad (3 niveles de velocidad) y, como buen simon va incrementando la cantidad de fichas en la secuencia mientras apretas bien los botones o se bloquea si fallas.
Ahora sí... vamos a ver el desarrollo:1) Abrí una nueva película flash
2) Crea cuatro MovieClips llamados "b0","b1","b2","b3" y ponelos en el escenario con el nombre de instancia igual al del movieclip (en realidad lo que nos importa es el nombre de instancia, no el del MovieClip.
3) Crea un nuevo MovieClip llamado "bInicio" y poné 2 instancias en el escenario. La primera con el nombre de instancia "bInicio" y el segundo con nombre de instancia "dificultad_btn".
4) Coloca en la biblioteca cuatro archivos de sonido mp3 y desde la biblioteca vínculalos con los nombres "sSound0" , "sSound1", "sSound2" y "sSound3".
5) En la película, en el campo Clase del Documento ponle "Simon" que es el nombre de la clase que desarrollaremos a continuación.
lunes, 14 de junio de 2010
ActionScript 3: Gráfico circular (radial)
Hoy te traigo un jueguito muy simple pero que tiene algunas cosas interesante para analizar como listeners para teclado y mouse, setInterval() y otras yerbas que irán apareciendo en el script.Este tipo de gráfico es standar en excel y otras planillas de cálculo y no tenía idea de como se aplicaría en actionscript 3.
Después de mucho dar vueltas y revisar algo de trigonometría llegué a una formulita (qué resultó ser bastante sencilla) pude realizar el gráfico que resultó como te lo muestro aquí.Para que este gráfico se genere sólo bastará con completar 3 arrays y una variable:
1) Array con los valores del eje Y (en este ejemplo referencias).
2) Array con los valores del eje X (en este ejemplo los países.
3) Array con los datos a representar (valores del gráfico)
4) Variable que contendrá el simbolo de la unidad en que se representa el gráfico (%, $, MM, etc).
Además podrás manipular el tamaño del gráfico desde otra variable que luego comentaré en el código que explico a continuación:
Publicado por
Chabat
el
6/14/2010
| Etiquetas:
actionscript,
barras,
circular,
descargas,
Diseño Gráfico,
fla,
radial,
tortas,
trigonometría
viernes, 16 de abril de 2010
ActionScript 3: Cortar imagenes con BitmapData + copyPixels
Hoy te traigo un jueguito muy simple pero que tiene algunas cosas interesante para analizar como listeners para teclado y mouse, setInterval() y otras yerbas que irán apareciendo en el script.Supongamos que queremos hacer un rompecabezas. Para ello queremos levantar una imagen y que ActionScript la desglose en piezas donde, cada pieza tiene un pedacito de imagen.
ActionScript no nos dejará cortar directamente una imagen, pero podemos usar algunas artimañas para realizarlo.
Para nuestro ejemplo usaremos ésta imagen del PezOjo! de 400px x 400px* que tenemos en la biblioteca del .fla. (porían usarse también imagenes externas o que estén en el escenario.
Publicado por
Chabat
el
4/16/2010
| Etiquetas:
actionscript,
bitmapdata,
copypixels,
descargar,
ejemplos,
fla,
flash
miércoles, 9 de diciembre de 2009
ActionScript 3: Solución para problemas con la Clase Tween
Hoy te traigo un jueguito muy simple pero que tiene algunas cosas interesante para analizar como listeners para teclado y mouse, setInterval() y otras yerbas que irán apareciendo en el script.Desde ActionScript2 vengo utilizando con maravillosos resultados la clase tween para hacer animaciones pequeñas (cambiar alphas, posicion, tamaño, etc).
Por eso, cuando me mudé a ActionScript3 me puse muy contento al saber que todavía existia nuestra clase Tween.
El problema es que, entregado al Tween, de pronto me encontré haciendo algo como esto:
import fl.transitions.*;
import fl.transitions.easing.*;
function hacerAlgo():void{
var mySprite:Sprite;
for (var i:uint = 0; i <>
mySprite = new cuadrado_mc();
stage.addChild(mySprite);
mySprite.x = Math.random() * stage.stageWidth;
mySprite.y = Math.random() * stage.stageHeight;
new Tween(mySprite, 'alpha', None.easeNone, 0, 1, 1, true);
}
}
hacerAlgo();
Mientras éste código lo cargo una vez no hay problemas, pero cuando necesita rehacer el dibujo (digamos si cambio los valores desde un combo box u otra modificación en tiempo de ejecución) ocurre que a veces funciona y a veces no.
Cuando me cansé de buscar y rebuscar donde me había equivocado empecé a buscar respuestas en internet. Resulta que este problemita del tween viene de la mano de un nuevo artilugio de flash (al menos nuevo para mí): El Garbage Collector.
Lo que hace este recolector de basura es borrar las variables que flash carga en la memoria y que estan sin uso. El asunto parece ser que el tween ocupa mucho espacio en memoria y como flash termina el bucle (for) antes de que el tween termine su proceso, se borran las variables temporales y el proceso del tween queda trunco: A veces funciona, a veces funciona a medias y otras directamente no funciona.
Encontré montones de recomendaciones muy complejas. Algunas no las entendí, otras directamente no funcionaban.
La solución definitiva (hasta el momento porque nada es definitivo) la encontré con una Clase externa que se monta en tu proyecto y reemplaza a la clase tween de flash.
Esta galería de clases se llama CGSafe (algo así como seguro contra el garbage collector) y funciona muy parecido a la de flash, pero bien ;). Es gratuita y funciona muy bien.
Además sirve para problemas similarers con: Timers, Loaders y URLLoaders.
Lo que hay que hacer es:
1) Descargarse el paquete de Clases de la pagina del desarrollador. o haciendo click AQUI (es la ruta original del desarrollador).
2) Poner dentro de tu proyecto la carpeta com que contiene todas las clases CGSafe.
3) Importar las clases en actionscript:
donde antes importabas import fl.transitions.*; ahora importas import com.exanimo.transitions.GCSafeTween;.
4) En lugar crear al tween como new Tween(mySprite, 'alpha', None.easeNone, 0, 1, 1, true); ahora lo creas escribiendo new new CSafeTween(mySprite, 'alpha', None.easeNone, 0, 1, 1, true);.
Es prácticamente igual. El código de nuestro ejemplo, modificado, quedaría así:
import com.exanimo.transitions.GCSafeTween;
import fl.transitions.easing.*;
function hacerAlgo():void{
var mySprite:Sprite;
for (var i:uint = 0; i <>
mySprite = new cuadrado_mc();
stage.addChild(mySprite);
mySprite.x = Math.random() * stage.stageWidth;
mySprite.y = Math.random() * stage.stageHeight;
new CSafeTween(mySprite, 'alpha', None.easeNone, 0, 1, 1, true);
}
}
hacerAlgo();
5) Disfrutas viendo tus animaciones sin cortes abruptos ni errores incomprensibles.
Nota: Hay un monton de Clases por ahí que hacen lo mismo. Yo elegí la GCSafe porque es la más similar a la de Adobe y porque funciona muy bien.
Nota 2: Si esta información te sirvió por favor hacé click en los enlaces patrocinados para ayudarme a mantener este blog en línea.
martes, 1 de diciembre de 2009
ForDesigner: Un monton de cosas útiles y gratuitas
ForDesigner.com es un sitio dedicado a recolectar recursos vectoriales gratuitos y ponerlos a disposición de los usuarios.Allí podremos encontrar desde colecciones de íconos y trazos vectorizados , recursos y templates completos en flash, psd, banco de imagenes.
Las secciones estan divididas por tipo de recurso: Vectores / PSD / Flash / Imagenes (banco) / PNG / Templates (flash, html, etc).
Las temáticas varían pero principalmente está enfocado a vectores: shapes, galerías de íconos, backgrounds, trazos.
Publicado por
Chabat
el
12/01/2009
| Etiquetas:
actionscript,
diseño,
flash,
gráfico,
illustrator,
ilustración,
photoshop,
recursos,
vector,
wallpapers
miércoles, 25 de noviembre de 2009
ActionScript 3: Sumar dos String
Hoy te traigo un jueguito muy simple pero que tiene algunas cosas interesante para analizar como listeners para teclado y mouse, setInterval() y otras yerbas que irán apareciendo en el script.Cuando ponemos contenido dentro de una variable del tipo XML, éstos serán siempre cadenas de texto. Por Ejemplo:
Si queremos realizar alguna operació con los valores del xml tenemos al menos dos opciones:
1) Definir nuevas variables del tipo Number y cargar el contenido del xml
var numero1:Number = operadoras.children()[0].attribute("historico"); //En el primer children (0) con el atributo "historico";
var numero2:Number = operadoras.children()[1].attribute("historico"); //En el segundo children (1) con el atributo "historico"
2) Realizar la nueva operación pero "avisandole" a actionscript que debe tratar ese contenido como si fuera numérico:
suma = Number(operadoras.children()[1].attribute("historico")) + Number(operadoras.children()[0].attribute("historico"));//Toma los datos del xml pero previamente se indica que lo trate como number: Number("el string que sea"). trace(suma);
Personalmente me gusta la segunda forma. De más esta decir que en ambos casos, si el contenido del xml no es un número nos dará el famoso NaN (Not a number).
Si querés el archivo .fla de este ejemplo dejame un post con tu email.
martes, 24 de noviembre de 2009
ActionScript 3: Clase para crear un ComboBox con datos de un XML
Pues eso: Si tenés un combo box en tu biblioteca de flash y un .xml donde están sus datos puedes cargarlos dinámicamente utilizando una pequeña clase en actionscript.

for(var i:int=0;i<generalxml.children().length();i++){
Entonces:
1) Generá un archivo .fla que se llame "Ejemplo_combo_xml.fla".
1a) Poné en la biblioteca un ComboBox
1b) Definí la clase del documento como "Ejemplo_combo_xml" (en propiedades: Clase del documento: nombre de la clase)
2) Armá un archivo .xml llamado "Ejemplo_combo_xml.xml" que contiene la información para el combo de éste modo:

3) Generas un archivo llamado "Ejemplo_combo_xml.as" y acá empieza lo bueno. Este es el código que debemos escribir para crear la clase:
package{
import flash.display.*; //importo todos los displays
import flash.events.*; //eventos de movie
import flash.net.*; // clases para cargar xml
import fl.controls.ComboBox; //el combo esta previamente cargado en la biblioteca
//CLASE
public class Ejemplo_combo_xml extends MovieClip{
//CONSTRUCTOR - No me gusta poner cosas allí. Si es necesario iran variables.
public function Ejemplo_combo_xml(){
miNuevoCombo(); //llamo a la funcion mi combo
}
//FUNCION QUE CREA LOS COMBOS
function miNuevoCombo():void{
var miCombo:ComboBox = new ComboBox();
miCombo.width = 150; //ancho que quiero que tenga el combo
addChild(miCombo);
llenarCombo(miCombo);//Llamo a la funcion que va a cargar los datos en los combos
//FUNCION PARA LEER EL COMBOBOX CUANDO HAGA CLICK
miCombo.addEventListener(Event.CHANGE, cambiarCombo);
function cambiarCombo(evt:Event){
if(miCombo.value!="seleccionar"){
trace(miCombo.value);
}
}
}
//FUNCION PARA LLENAR LOS COMBOS CON EL XML DE PAIS
function llenarCombo(miCombo):void{ //RE
miCombo.addItem({label:"Seleccionar",data:"seleccionar"});
var generalXML:XML; //creo una variable tipo XML que contendrá el contenido del archivo .xml
var cargador:URLLoader=new URLLoader();//cargador del xml funciona/no funciona
cargador.addEventListener(Event.COMPLETE, cargarXML); // si todo bien con el XML llamo a la funcion que carga los datos en la variable XML
cargador.addEventListener(IOErrorEvent.IO_ERROR, errorCargarXML); //si todo mal con el XML te lo aviso
cargador.load(new URLRequest("Ejemplo_combo_xml.xml"));
//FUNCION QUE CARGA LOS DATOS DEL ARCHIVO .XML EN LA VARIABLE XML
function cargarXML(evt:Event):void {
generalXML=new XML(evt.target.data);
cargador.removeEventListener(Event.COMPLETE, cargarXML);
cargador.removeEventListener(IOErrorEvent.IO_ERROR, errorCargarXML);
for(var i:int=0;i<generalxml.children().length();i++){
miCombo.addItem( { label:generalXML.children()[i].attribute("nombre"), data:generalXML.children()[i].attribute("valor") } );
}
}
//FUNCION QUE AVISA SI HUBO UN PROBLEMA CON EL XML
function errorCargarXML(evt:IOErrorEvent):void {
trace("Error en la carga");
}
}
}
}
Si quieres el archivo fuente de este ejemplo dejame un comentario con tu mail y te lo mando.
Saludos!
lunes, 9 de noviembre de 2009
ActionScript 3: Convertir el punto decimal(.) en coma(,)
Cuando programamos, los números decimales esta siempre separados por un punto(.). Sin embargo los hispano parlantes nos vemos a veces obligados a mostrar los números decimales separados por una (,) ya que el punto, en español, es un separador de miles.
En actionscript no podemos utilizar números decimales separados por comas ya que nos da error.
Por eso es que generalmente realizo los calculos con números separados por puntos, pero los muestro con coma utilizando la siguiente acción sencilla: Separo los valores en un array y los vuelvo a juntar en una nueva variable:
1) Supongamos que tenemos la variable A que tiene un valor de 2.5
var A:Number = "2.5";
2) creo un array llamado decimal que va a contener todos los elementos de la variable A utilizando aprovechando el punto decimal como separador de elementos. De este modo, en el array decimal quedaran en la posición [0] el valor 2 y en la posición [1] el valor 5
var decimal:Array = String(A).split(".");
Ya puedo puner los valores en una nueva variable string con coma como separador decimal
var decimalComa:String = decimal[0] + "," + decimal[1];
Lo pruebo
trace(decimalComa);
y nos devolverá el número con coma: 2,5.
Cuando quiero asegurarme si el número de la variable es decimal o es un entero, para no poner una coma vacía hago un if que se asegure de que hay algo en la segunda posicion del array:
if (!decimal[1]) {
var decimalComa:String = decimal[0];
}else{
var decimalComa:String = decimal[0] + "," + decimal[1];
}
Esto mismo se puede hacer para convertir comas en puntos y funciona tanto para actionscript 3 como actionscript 2.
miércoles, 4 de noviembre de 2009
Levitated - Jugando con la programación
A través de a-pixel me entero de este sitio interesante y divertido.Levitated es una publicación dedicada a la programación recreativa. Es un punto de encuentro para el diseño y la programación. Flash es el nexo para esta combinación.
En Levitated escriben algunos genios del flash y la programación. Además promocionan una gran variedad de eventos y otras publicaciones del grupo.
Si te gustan los fractales, la programación en ActionScript de flash y algo de 3d no podes dejar de visitar la galería de archivos open sourse. Donde podrás ver una interesante cantidad y variedad de programitas en flash de diseños dinámicos interesantes. Te podes descargar los .fla para estudiarlos y jugar un rato.
Suscribirse a:
Entradas (Atom)




