Author:
Andrés Argüello Pitt
jun
20
en Actionscript 3.0 cada vez que apretamos un botón se dispara un evento y eso nos lleva a la función que maneja dicho disparo. Y generalmente es cómodo hacer una sola función como respuesta a todos lo botones, y si bien podemos distinguir dentro de la función quien la disparó mediante evento.target a veces necesitamos pasarle mas que sólo quien la disparó sino algún que otro parámetro que nos permita tomar distintas decisiones dentro de dicha función. En el siguiente ejemplo tres botones disparan la misma función y en la función hay un tweener que hace que un mc en el escenario cambia de color según el botón.
bt1_btn._color=0x0000FF;
bt2_btn._color=0xFF0000;
bt3_btn_color=0xFFFF00;
bt1_btn.addEventListener(MouseEvent.CLICK, cambiarColor);
bt2_btn.addEventListener(MouseEvent.CLICK, cambiarColor);
bt3_btn.addEventListener(MouseEvent.CLICK, cambiarColor);
function cambiarColor( e:Event ):void
{
Tweener.addTween(this.bigBox, {_color:e.target._color, time:1, transition:"linear"});
}
otra forma de hacerlo es:
bt1_btn.addEventListener(MouseEvent.CLICK, function(e:Event) { cambiarColor(0x0000FF); });
bt2_btn.addEventListener(MouseEvent.CLICK, function(e:Event) { cambiarColor(0xFF0000); });
bt3_btn.addEventListener(MouseEvent.CLICK, function(e:Event) { cambiarColor(0xFFFF00); });
function cambiarColor(color:Number):void {
Tweener.addTween(this.bigBox, {_color:color, time:1, transition:"linear"});
}
Author:
Andrés Argüello Pitt
jun
19
La idea de este post es publicar formulas que son súper útiles para hacer cálculos de MCs con respecto el mouse. Por ejemplo mover hacia un lado u otro un mc según la distancia del puntero del mouse al centro de escenario o mover una lista de thumbnails según la posición del mouse con respecto distancia al centro del movieclip contenedor.
Lo anterior lo podrÃamos hacer por trigonometrÃa sacando la distancia, pero también hay formulas útiles para calcular circunferencias y con ellas dibujar tortas para estadÃsticas incluso animarlas en tiempo de ejecución.
Distancias
La distancia entre dos puntos (x1,y1) y (x2,y2) es representada por la siguiente formula:

Como sacar la distancia del mouse al centro del escenario en AS3:
var x1=stage.stageWidth/2;
var x2=mouseX;
var y1=stage.stageHeight/2;
var y2=mouseY;
var distx:Number=Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2));
y si necesitamos esa distancia en porcentaje:
var porcentage=(distx*100)/x1
La única aclaración serÃa que el método con el cual saco la mitad al centro del escenario en AS3 es: stage.stageWidth y AS2 sólo cambiarÃa por Stage.width . Cambiando sólo eso debiran andar sin problemas en AS2.
Author:
Andrés Argüello Pitt
jun
18
Dispatch event, dispatch significa despachar o enviar. y en rigor sirve para forzar un evento, osea decirle a Flash que un evento sucedió o pasó aunque en realidad no haya sido del todo asÃ. Por ejemplo tenes un botón en el escenario que cuando es apretado por el mouse dispara una función:
b1_btn.addEventListener(MouseEvent.CLICK,moveTo);
El botón con instancia b1_btn está en el escenario y cada vez que se clickea llama a la función moveTo
Ahora supongamos que necesito correr esa misma función pero en e; runtime (desde el código en tiempo de ejecución), incluso si nadie haya apretado ese botón. EstarÃa bueno poder decirle a Flash que sà se apretó el botón, de alguna forma mentirle; y con dispatchEvent se puede y es de la siguiente forma:
b1_btn.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false));
El código anterior lo que hace es enviar el evento Click como si hubiese sido disparado por b1_btn los demás parámetros son para el garbage colector (liberar recursos y memoria).
Author:
Eduardo Martin
jun
6
Se habrán encontrado varias veces con la necesidad de mostrar un resumen del texto de una noticia, esta función les va a facilitar la tarea sin necesidad de tener que poner en la base de datos un campo con el resumen de la noticia, salvo que esta sea necesaria.
texto_completo = es la variable que contiene texto de la noticia completa
resumen = es la nueva variable que contendrá 80 caracteres de la noticia completa
var resumen = texto_completo.substring(0, 80);
Author:
Andrés Argüello Pitt
jun
5
La semana pasada trabajando con un programador de sistema y vi una linea en su codigo que me llamo la atención,
en una sola linea habia escrito algo asi como distance= (prevDist < 30) ? 50:20;
Lo que hace ésta sentencia es simplificar en una linea un IF ELSE, la sentecia anterior podrÃa escribirse de la manera tradicional:
if (previDist<30)
{
distance=50;
} else
{
distance=20;
}
De manera que en una sola linea podemos ahorranos un par de lienas, es válido tanto en AS2 como en AS3.
Ejemplo:
var myvar:Number;
myvar=2
var i:Number = (myvar < 3) ? 5:2;
trace(i);// el resultado serÃa 5