Aqui les dejo un tip bastante interesante que les puede servir para varias cosas. Se llaman "bitwise flags". Lot bitwise operators es el capítulo menos leído de todo el diccionario de ActionScript pero es super útil y sencillo si prestaste atención a tus clases de matemáticas
Imaginemos que tenemos una propiedad que se llama "clabbers" donde debemos poder especificar la cantidad que nosotros deseemos de clabbers, como lo hariamos? Cada vez que hago esta pregunta me responden con 2 opciones:
1. Creo un Array y voy almacenando los valores. FAIL! El problema es que para recuperar los valores vamos a tener que hacer un bucle por todo el Array lo cual toma mucho tiempo y pues no... performance FAIL.
2. Creo un objeto y compruebo si existe, es decir, objeto.propiedad != undefined. FAIL! Si bien esto funcionaría. Primero, no les recomiendo comprobar contra una no existencia y segundo, esto botaría una exception en varios lenguajes y pues no esta bien llenar el código de try...catch. so.. FAIL!
La forma es utilizar bitwise flags, por ejemplo:
Código :
public const FREDDIE:uint = 1;
public const ELDER:uint = 2;
public const EDGAR:uint = 4;
public const MARIUX:uint = 8;
public const ELECASH:uint = 16;
Para setear los "flags" en la propiedad:
Código :
public var flags:uint = 0;
// agregamos a FREDDIE
flags |= FREDDIE;
flags |= ELECASH;
flags |= ELDER;
// si les da weba escribir tanto pueden hacer lo mismo con
// flags = FREDDIE | ELECASH | ELDER;
Para comprobar si un flag esta seteado:
Código :
if((flags & FREDDIE) == FREDDIE) trace ("FREDDIE ESTA SETEADO");
// denuevo, si les da weba escribir mucho aqui pueden hacerlo asi
// ya que "flags & FREDDIE" de existir devuelve un número distinto a 0 por lo que es True
// if(flags & FREDDIE) trace ("FREDDIE ESTA SETEADO");
Si en caso quisieramos quitar un flag:
Código :
flags ^= ELECASH;
if(!(flags & ELECASH)) trace ("ELECASH NO ESTA SETEADO");
Si en caso quisieran borrar todos los flags entonces setean "flags" a 0 y ya jajaja
Los bitwise operators son más rápidos que cualquier condicional o bucle. De hecho son más rápidos que una operación matemática en código. Cosas de procesadores (seguro van a decir que en los modernos ya no es asi pero bue...)
Espero que les guste y pues pongan sus comentarios.
Demasiado bueno Fernando, esperamos verte más por clab. Felicidades por el Tips (si alguien quiere abrazar a Fernando... no se limiten por favor ) Por:eldervaz
Ah cierto, aqui les dejo una referencia de Bitwise...
Wow! Impresionado.
Desconocía totalmente ésta forma de controlar elementos.
Gracias. Por:Andros
Creo que nunca hasta hoy entendí que era bitwise. Mejor, imposible. Por:tomasdev
Ah mira tú, interesante. Claro no tengo que crear un arreglo y luego hacer un bucle, esto evita muchas líneas de código y hace el código menos complejo (en términos de complejidad de algoritmos). ¿Esto solo funciona en ActionScript 3.0 o existe en otros lenguajes? Por:Giancarlo-blog
Giancarlo-blog :
¿Esto solo funciona en ActionScript 3.0 o existe en otros lenguajes?
Esto existe en Actionscript 2 también. Lo he visto en casi todos los lenguajes derivados de ECMA, en Java, C/C++. Hasta en Visual Basic. Por:Freddie