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.
--fernando
SPAM: Siganme en http://twitter.com/fernandoflorez (quiero ver a cuantos followers llego) thnx!
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por eldervaz el 21 de Diciembre de 2008
(si alguien quiere abrazar a Fernando... no se limiten por favor )
Por eldervaz el 21 de Diciembre de 2008
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/operators.html
Por eparada el 21 de Diciembre de 2008
Por The Fricky! el 21 de Diciembre de 2008
Aunque parece que necesitas un abrazo. ¡Abrazo grupal para fernando!
Por Zguillez el 26 de Diciembre de 2008
Por Juanlu_001 el 26 de Diciembre de 2008
Pero si realmente son tan rápidos, habrá que echarles una ojeada... O fer podría ponernos más ejemplos de cómo usarlos
¡Me uno al abrazo!
Por Bleend el 26 de Diciembre de 2008
Por phpleo el 28 de Diciembre de 2008
Por otra parte muy buen tuto
Por Andros el 08 de Enero de 2009
Desconocía totalmente ésta forma de controlar elementos.
Gracias.
Por tomasdev el 11 de Enero de 2009
Por Giancarlo el 15 de Enero de 2009
Por Freddie el 15 de Enero de 2009
Giancarlo-blog :