Archivo de abril de 2011

AS3 – Baricentro y Ortocentro

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

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 🙂

PHP – Escribir un XML con CDATA Usando SimpleXML

Publicado por Iván Gajate el 26 de abril de 2011 en Desarrollo Web | 14 comentarios »

Si usamos la fantástica librería de PHP SimpleXML para leer y construir xml, nos habremos dado cuenta que no tiene soporte para meter datos en etiquetas CDATA, lo cual es un engorro.

Tras mucho buscar, he encontrado este truco que soluciona el problema 🙂

Consiste en extender la clase SimpleXml para ampliarla con DOM, que sí tiene soporte para CDATA, y devuelve un objeto SimpleXML 🙂

Así, si nos creamos una clase “SimpleXMLExtended.php

<?php
	class SimpleXMLExtended extends SimpleXMLElement {
	  public function addCDATA($cData) {
	    $node = dom_import_simplexml($this);
	    $no = $node->ownerDocument;
	    $node->appendChild($no->createCDATASection($cData));
	  }
	}
?>

Podemos crear un XML así:

<?php
	Header('Content-type: text/xml;  charset=utf-8'); 

	require_once('SimpleXMLExtended.php');

	$miXML = new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><usuario></usuario>');
	$nombre = $miXML->addChild('nombre');
	$nombre->addCData('Iván Gajate');
	echo $miXML->asXML();
?>

Y devolverá esto:

<?xml version="1.0" encoding="UTF-8"?>
<usuario>
	<nombre><![CDATA[Iván Gajate]]></nombre>
</usuario>

AS3 – Cargar Assets Usando un Proxy

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

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
 
header("Access-Control-Allow-Origin: *");
 
 if (isset($_GET['url'])) {
	$url = urldecode($_GET['url']);
} else {
	die('error=1');
}
 
$ext = pathinfo($url, PATHINFO_EXTENSION);
 
switch ($ext) {
	case "jpg":
		header('Content-Type:image/jpeg');
		readfile($url);
		break;
	case "gif":
		header('Content-Type:image/gif');
		readfile($url);
		break;
	case "png":
		header('Content-Type:image/png');
		readfile($url);
		break;
	default:
		header('Content-Type:text/html; charset=utf-8');
		readfile($url);
		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

Y si queremos cargar un HTML completo de otra página, solo tenemos que tener cuidado si lleva variable en la url:

var proxy = 'proxy.php?url=' + encodeURIComponent('http://www.otrodominio.com/search.php?q=programacion+as3');  //Para evitar la ?
 
jQuery.get(proxy, resultadosOk);
 
// Formateo el resultado
function resultadosOk(data) {
 
}

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 | 2 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 | 17 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

Done with Computers

Publicado por Iván Gajate el 1 de abril de 2011 en Desarrollo Web | 16 comentarios »

He visto este blog de juegos y tutoriales sobre 3D, muy bien explicados. Colisiones, geometria… muy bueno.

http://www.rengelbert.com/index.php