Archivo de la categoría ‘AS3’

Error al enviar un + por flashvars

Publicado por Iván Gajate el 26 de septiembre de 2011 en AS3, Flash | 1 comentario »

Pues eso, que resulta que sin intentas pasarle al flash un “+” por flashvars, no lo entiende y lo sustituye por un espacio en blanco (” “).

Solución: Cambiar el “+” por “%2b”

Visto en http://userflex.wordpress.com/2009/01/29/special-chars-in-flashvars/ por Javi, gracias Javi!! ;)

AS3 – Tirachinas

Publicado por Iván Gajate el 15 de julio de 2011 en AS3, Flash | 2 comentarios »

Viendo este gracioso juego para el iPad hecho en AIR 2.7

me ha dado por jugar un rato y probar a hacer el movimiento del tirachinas, lo dejo aquí por si a alguien le sirve para algo :)

Descargar Tirachinas

AS3 – Singleton

Publicado por Iván Gajate el 6 de junio de 2011 en AS3, Flash, Patrones de diseño | No hay comentarios »

Uno de los patrones de diseño que mas útiles en mi opinión es el Singleton. Si queremos almacenar datos relevantes para nuestro proyecto y que sean accesibles fácilmente desde cualquier sitio es la mejor opción. O para la típica cartela de avisos que solo puede estar abierta una vez y que tiene que llamarse desde muchos sitios.

Para construirlo a mi esta es la forma que mas me gusta:

package {

	public class Modelo {

		private static var _instance:Modelo;

		public function Modelo(singletonenforcer:SingletonEnforcer) {
			if (singletonenforcer == null) {
				throw new Error("Modelo es un Singleton. Para acceder a una instancia hacedlo mediante Modelo.getInstance()");
				return;
			}
		}

		public static function getInstance():Modelo {
			if (!_instance) {
				_instance = new Modelo(new SingletonEnforcer());
			}
			return _instance;
		}

	}
}

class SingletonEnforcer{}

De esta manera podemos acceder así:

Modelo.getInstance().guardarDatos();
Modelo.getInstance().recogerDatos();

AS3 – Baricentro y Ortocentro

Publicado por Iván Gajate el 26 de abril de 2011 en AS3 | No hay comentarios »

Si queremos jugar un poco con las circunferencias y sus radios, radios de curvatura, etc…, esto nos va a venir muy bien:)

http://mx.answers.yahoo.com/question/index?qid=20070313201440AAtsHft

Y con Vectores:

http://wonderfl.net/c/56pU

Los enlaces me los ha pasado Drus :)

AS3 – Cargar Assets Usando un Proxy

Publicado por Iván Gajate el 26 de abril de 2011 en AS3, Flash | 1 comentario »

Cuando tratamos de cargar imágenes o xmls de otros dominios, nos encontramos con el problema de que por seguridad no es posible hacerlo directamente. Si tenemos acceso al otro dominio, podemos usar el “crossdomain.xml”, pero si no, podemos recurrir a un proxy.

Para entenderlo mejor, aquí hay un tutorial muy explicativo.

La forma de saltarse el problema es cargar las cosas con un php intermedio que se encuentra en nuestro servidor (proxy), y que sencillamente nos devuelve lo que le hemos pedido en el formato que corresponde. Así, con este php en nuestro servidor (proxy.php):

<?php

$filename = $_GET['url'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);

switch ($ext) {
    case "jpg":
        header('Content-Type: image/jpeg');
        readfile($filename);
        break;
    case "gif":
        header('Content-Type: image/gif');
        readfile($filename);
        break;
    case "png":
        header('Content-Type: image/png');
        readfile($filename);
        break;
    default:
        header('Content-Type: text/xml');
        readfile($filename);
        break;
    }
?>

En lugar de llamar a:

http://www.otrodominio.com/imagen1.jpg

Lo haremos a:

http://www.midominio.com/proxy.php?url=http://www.otrodominio.com/imagen1.jpg

De esta manera nos saltaremos el problema del sandbox :)

AS3 – Bajar Volumen Global

Publicado por Iván Gajate el 20 de abril de 2011 en AS3, Flash | No hay comentarios »

Con estas líneas podemos cambiar el volumen de nuestra película flash de forma global:

function setearVolumen(value:Number):void {
	var transform:SoundTransform = new SoundTransform();
	transform.volume = value;
	flash.media.SoundMixer.soundTransform = transform;
}

El código es de Esedeerre que está muy liado para ponerla en su blog, pero era muy interesante postearla. Gracias Dani!! :)

AS3 – FullScreen

Publicado por Iván Gajate el 7 de abril de 2011 en AS3, Flash | 2 comentarios »

Poner una web a fullscreen es bastante fácil, pero hay un par de detalles que si no los conocemos nos puede llevar un tiempo descubrirlos.

  • En el HTML hay que poner el parámetro allowFullScreen=”true”
  • El código que pasa a fullScreen tiene que estar obligatoriamente en la función que recibe el evento de ratón. No vale que una función llame a otra función y esta pase a modo fullScreen.

Este es el código para poner nuestro flash a fullscreen:

function mostrarFullScreen(e:MouseEvent):void{
	stage.displayState = StageDisplayState.FULL_SCREEN;
}

Si no indico nada, el swf se redimensiona hasta cubrir la pantalla por completo, pero puedo indicarle la zona sobre la que quiero hacer zoom, así:

stage.fullScreenSourceRect = miVideo.getRect(this);

// O a mano

stage.fullScreenSourceRect = new Rectangle(0, 0, 300, 200);

Además, podemos escuchar cuando se sale del modo full screen.

Ver Ejemplo FullScreen

Descargar Ejemplo

AS3 – Redimensionar Fondo

Publicado por Iván Gajate el 31 de marzo de 2011 en AS3, Flash | 7 comentarios »

Si queremos tener un fondo en nuestra web que se redimensione cuando cambia el tamaño del navegador, podemos recurrir al evento RESIZE.

Lo que es algo mas complicado es si queremos que no se distorsione el clip, y que nunca aparezcan huecos sin cubrir, algo así:

resize

Ver ejemplo:

Descargar Ejemplo. Leer el resto de esta entrada

AS3 – Validar NIF, CIF y NIE

Publicado por Iván Gajate el 17 de febrero de 2011 en AS3, Tutoriales | 2 comentarios »

Hoy me ha tocado validar un DNI y un CIF (de empresa) y no ha sido tan fácil como pensaba. Tras mucho buscar he encontrado esta clase en Xavirobot que funciona a las mil maravillas, gracias Javi ;)

Tiene 4 métodos:

  • isNie
  • isCif
  • isNif
  • testAll

Se puede validar cada tipo de documento por separado, o sin especificar de qué tipo es con el método testAll. Me ha parecido muy ingenioso el devolver un número positivo o negativo si es válido o no, así basta con consultar si es mayor que 0 para saber si es un documento correcto, sea del tipo que sea :D

Lo único que no me ha gustado es cómo hay que usar los métodos. Personalmente los validadores siempre los hago con métodos estáticos, así son muy fáciles de usar:

TestDni.isNif("12345678Z") // true
TestDni.testAll("12345678Z") // 3 (NIF)

Así que he modificado algo su clase haciendo los métodos estáticos. La dejo aquí como referencia, la original la puedes ver en Xavirobot:

Leer el resto de esta entrada

AS3 – Sustituir un XML con Replace

Publicado por Iván Gajate el 10 de febrero de 2011 en AS3, Flash | No hay comentarios »

Yo hasta ahora para modificar un nodo de un xml sencillamente lo hacía así:

miXml.item = <item>Texto modificado</item>

El problema me ha surgido cuando he querido meter el nuevo contenido dentro de un CDATA, pues me truncaba el “<” y “>” a formato html, y claro, no funcionaba.

La solución, sustituir el nodo completo con replace:

var miXml:XML = <nodos>
			<item><![CDATA[texto a modificar]]></item>
		</nodos>

var nuevoNodo:XML = new XML("<item><![CDATA[imágen1.jpg]]></item>");
miXml.replace("item", nuevoNodo);

trace(miXml);

//<nodos>
//  <item><![CDATA[imágen1.jpg]]></item>
//</nodos>

Esto viene muy bien cuando el contenido se cambia por el valor de una variable, en un bucle recorriendo todos los nodos.