Entradas con la etiqueta ‘variables’

Hoisting o Elevación de las variables en JavaScript

Publicado por Iván Gajate el 2 de julio de 2013 en Desarrollo Web, JavaScript | Los comentarios están cerrados.

Interesantísima explicación sobre el comportamiento “peculiar” de JavaScript a la hora de definir las variables dentro de una función. Es lo que se llama “hoisting” o elevación de las variables.

http://www.etnassoft.com/2010/12/26/hoisting-en-javascript/

Básicamente se pueden evitar estos problemas declarando todas las variables al principio de cada función y tratando de no jugar a pisar variables con el mismo nombre y “chapus” así.

Namespaces en JavaScript

Publicado por Iván Gajate el 30 de octubre de 2012 en JavaScript | 1 comentario »

Como ya vimos cuando explicamos los patrones de diseño, todas las variables que creemos fuera de una función van al ámbito global (root en Flash).

Para evitar que nuestras clases entren en conflicto con otras con el mismo nombre podemos crear un objeto donde meteremos todas nuestras clases, un Namespace.

var YXQN = YXQN || {};

Esto viene a decir: “La variable YXQN es igual a YXQN si existe, y si no, creo un objeto vacío”

Con esto nos aseguramos que solo exista una sola vez para todo nuestro proyecto. Yo lo suelo guardar en un archivo independiente que importo en el html desde el principio.

<script type="text/javascript" src="js/YXQN.js"></script>

Ahora nuestras clases las definiremos dentro de nuestro namespace:

YXQN.Cuadrado = function(){
	...
};

Y para crear un nuevo objeto:

var miCuadrado = new YXQN.Cuadrado();

AS3 – Enviar Variables con LoaderMax

Publicado por Iván Gajate el 3 de diciembre de 2011 en AS3, Flash | 14 comentarios »

Con LoaderMax podemos cargar un swf de forma sencilla, pero si queremos enviar variables a esa peli para luego recuperarlas por su loaderInfo, es igual de sencillo.

Tal y como dicen en la ayuda de LoaderMax, como primer parámetro del LoaderMax, se puede usar o bien el nombre del swf que queremos cargar, o bien un URLRequest. De esta manera es fácil enviar las variables que queramos:

var request:URLRequest = new URLRequest("miPeli.swf");
var data:URLVariables = new URLVariables();

// Variables que quiero enviar
data.nombre = "Iván";
data.id = 4589;
data.email = "micorreo@yporqueno.es";

request.data = data;
request.method = URLRequestMethod.GET;

var loader:SWFLoader = new SWFLoader(request, {name:"peli"});

Nota: Esto nos dará un error si lo probamos desde Flash directamente, pues da un error al intentar encontrar el archivo “miPeli.swf?nombre=Iván&id=4589&email=micorreo@yporqueno.es”.

Hay que probarlo en un html.

AS3 – Enviar Variables JSON a un PHP

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

Es bastante sencillo, pero hay que tener ciertas precauciones con el PHP.

El envío de variables es similar a cualquier otro envío, salvo que las variables las enviado codificadas en formato JSON con la librería as3corelib. Simplemente ponerla al lado de nuestro .fla y hacer la carga normal.

var req:URLRequest = new URLRequest("http://localhost/leer_variables.php");
req.method = URLRequestMethod.POST;

var usu1:Object = {nombre:"Iván"};
var usu2:Object = {nombre:"Pepe"};
var usu3:Object = {nombre:"Matías"};

var usuarios:Array = [usu1, usu2, usu3];

// Codifico el Array con formato JSON
var json:String = JSON.encode(usuarios);

// Creo las variables del URLRequest
var vars:URLVariables = new URLVariables();
vars.usuarios = json;
req.data = vars;

var loader:URLLoader = new URLLoader();
loader.load(req);

En el PHP se recogen como una variable normal, con la precaución de utilizar stripslashes, pues por defecto nuestro servidor nos truncará las comillas (“)a barra comillas (\”)

<?php
	// Si se tiene magic_quotes_gpc = On en el "php.ini", esta linea es necesaria
	$datos = stripslashes($_POST['usuarios']);
	//
	$json = json_decode($datos, true);
	// Puedo acceder a los datos como cualquier otro Array
	echo('nombre=' . $json[0]['nombre']);
?>

Nota: Hay que subir el ejemplo a un servidor que interprete PHP para poder ver los resultados.

Descargar Ejemplo.

NavigateToUrl y variables por POST

Publicado por Iván Gajate el 19 de octubre de 2011 en AS3, Flash | 10 comentarios »

Con el método navigateToURL se pueden enviar variables por POST, no solo abrir nuevas ventanas con una url dada.

Esto no se me había ocurrido nunca, pero mi amigo Dani me lo ha comentado hoy y resulta que funciona muy bien, gracias Dani 😉

Puede ser muy útil pues permite enviar cualquier variable oculta al usuario, un id, una variable de sesión, una imagen para guardar en servidor…

Sería algo así:

var req:URLRequest = new URLRequest("http://www.midominio.com/leer.php");

var datos:URLVariables = new URLVariables();
datos.email = "contacto@yporqueno.es";

req.method = URLRequestMethod.POST;
req.data = datos;

navigateToURL(req);
NOTA: Para que funcione el ejemplo hay que ejecutar el html (no el .swf) en un servidor con capacidad para correr php.

Descargar Ejemplo…

Patrón Value Object

Publicado por Iván Gajate el 17 de mayo de 2009 en AS3, Flash, Patrones de diseño, Tutoriales | 18 comentarios »

Este mini patrón de diseño, consiste simplemente en agrupar varios valores dentro de un objeto para enviarlo y recibirlo con mayor comodidad/seguridad.

Yo casi más que un patrón lo considero una buena costumbre de programación, y es que cuando tengo que pasarle a una función mas de 4 ó 5 parámetros, los meto todos en un objeto y hago que esta función sólo espere ese objeto como único parámetro.

// Sin Value Object
public function guardarDatos(nombre:String, apellidos:String, edad:uint, hombre:Boolean):void{
	//
}

// Con Value Object
public function guardarDatos(datos:Object):void{
	//
}

Esto, aparte de hacer el código más legible, hace nuestro programa escalable, pues si en un futuro queremos añadir un nuevo parámetro a la función, no tengo que cambiar su firma (public function guardarDatos(datos:Object):void), sino que le añado una nueva propiedad al objeto y listo, mi función sigue esperando un sólo parámetro.

Leer el resto de esta entrada

Valor por defecto en las variables de AS3

Publicado por Iván Gajate el 6 de noviembre de 2008 en AS3, Flash, Tutoriales | 15 comentarios »

Una de las cosas que ha cambiado en AS3 es el valor por defecto de las variables. Es un detalle del que no te das cuenta hasta que das (de morros con él).

En AS2 si se definía una variable sin inicializar su valor, por defecto era undefined, lo que nos permitía hacer cosas como

var contador:Number;

if(!contador){
	trace("La variable aún no está inicializada");	
}

Ahora en AS3 si no la inicializamos con un valor, por defecto es NaN (Not a Number), no es un número, lo que en algunos casos nos puede llevar a no poder hacerlo como antes.

No es difícil de solucionar, pero es conveniente tener en cuenta los valores que asigna por defecto Flash:

var noTipada:*; // undefined

var booleano:Boolean; // false

var numero:Number; // NaN

var entero:int; // 0

var enteroPositivo:uint; // 0

var cadena:String; // null

var objeto:Object; // null

Ahora los objetos no definidos (Arrays, y cualquier tipo de objeto definido a partir de una clase de usuario), tienen como valor null, no undefined.