Actionscript 3.0: Colisiones a nivel de pixel |
Etiquetas: complexIntersectionRectangle hitTestObject |
La función hitTestObject(obj:DisplayObject) evalúa un objeto para comprobar si choca con el objeto obj. Por ejemplo, si tenemos dos objetos "Item1_mc" e "Item2_mc", podemos comprobar si chocan con:
Esta función, tiene el inconveniente de que comprueba los choques entre los contenedores rectangulares de los objetos. Por ejemplo:
por tanto, sin queremos comprobar las colisiones entre dos objetos no rectangulares, puede devolver valores que aparentemente no son correctos. Aquí tenemos un ejemplo en Flash:
Si queremos utilizar colisiones a nivel de pixel, podemos crear un objeto bitmapData, superponer los dos objetos en el objeto bitmapData con un filtro de color cada uno, y comprobar si hay pixels que tienen el color de la combinación de filtros utilizados. En el blog de
Y si queremos recibir el rectángulo de colisión:
El resultado, sería este:
Los fuentes, y la clase HitTest de tink, tras el salto. |
Guardar imágenes en AS3 con PNGEncoder y Base64 |
Etiquetas: PNGEncoder Base64 BitmapData Rectangle encodeByteArray |
Para guardar una imagen en AS2 habia que almacenar los colores de todos sus pixels, y mandar una cadena de texto con los valores a un fichero en el servidor para que creara la imagen. Esto era viable para imágenes relativamente pequeñas, ya que tanto Flash como el servidor tardaban mucho en procesar los datos. Con AS3 han surgido varias clases que aprovechan el potencial de la clase ByteArray y optimizan el flujo de datos Flash/servidor. En este ejemplo utilizo las clases PNGEncoder y Base64 para guardar un dibujo hecho en flash y guardarlo en el servidor como PNG. El tamaño de la imagen es de 400x400, y el proceso no dura más de 2 seg. |
FOAM parte I: Hola Mundo |
Etiquetas: Foam useMouseDragger solverIterations addGlobalForceGenerator RigidBody addElement INFINITE_MASS createRectangle |
|
FOAM es un motor de físicas escrito es Actionscript 3.0. Ha sido liberado este mes (Noviembre de 2007) por Drew F. Cummins bajo licencia MIT. Se puede bajar de aquí:
Además ya está disponible la documentación aquí: En las primeras pruebas que he hecho, he podido ver que es igual de fácil que aprender que el APE, y algunas diferencias que postearé cuando tenga un mayor control de ambos. De momento, este es mi primer ejemplo, hecho a partir de uno colgado en la página del autor. |
APE parte II: WheelParticle y SpringConstraint |
Etiquetas: APEngine addForce addGroup collideInternal RectangleParticle CircleParticle WheelParticle SpringConstraint addParticle addConstraint angularVelocity |
|
Además de crear cuadrados y círculos (ver APE parte I), APE permite trabajar otros dos tipos de variables: WheelParticle (para crear "ruedas" con las que podemos interactuar) y SpringConstraint (para especificar las "limitaciones" que queramos en el modelo). Este es el ejemplo: |
APE (Actionscript Physics Engine). Prueba I. |
Etiquetas: RectangleParticle addParticle CircleParticle step paint APEngine |
|
APE es un motor de físicas para flash (AS3). Esta escrito y mantenido por Alec Cove, y se puede descargar de aquí. La utilización de la librería de puede resumir en estos pasos (doy por hecho que se han descargado las clases y se ha indicado a Flash donde están): |