Archivo de abril de 2010

AS3 – xml.getElementsByClass

Publicado por Iván Gajate el 28 de abril de 2010 en AS3, Flash, Tutoriales | 1 comentario »

Y la compañera de getElementsByName y getElementById es esta.

Supongamos que tenemos un xml con varios nodos con la misma definición de clase:

<div>
	<p class="parrafo">
		Esto es un párrafo
	</p>
	<form>
		<input type="checkbox" id="chk0">Leer</input> <br />
		<input type="checkbox" id="chk1">Montar en bici</input> <br />
		<input type="checkbox" id="chk2">Dormir</input> <br />
	</form>
	<p class="parrafo">
		Esto es otro párrafo diferente, pero con la misma clase
	</p>
</div>

Y queremos recuperarlos en forma de XMLList:

function getElementsByClass(data:XML, className:String):XMLList{
	return data.descendants().(hasOwnProperty("@class") && attribute("class")==className);
}

// Se usaria asi:
getElementsByClass(miXml, "parrafo");

Y devolvería esto:

<p class="parrafo">Esto es un párrafo</p>
<p class="parrafo">Esto es otro párrafo diferente, pero con la misma clase</p>

Este tipo de funciones las voy a ir recopilando en una clase XmlUtils.

Descargar XmlUtils.as

Descargar todo el paquete es.yporqueno

AS3 – xml.getElementsByName

Publicado por Iván Gajate el 15 de abril de 2010 en AS3, Flash, Tutoriales | 15 comentarios »

La parejita de getElementById 😉

Muy útil por ejemplo para obtener todos los checkBox de un xml:

<div>
	<form id="aficiones">
		<input type="checkbox" id="chk0" name="c0">Leer</input> <br />
		<input type="checkbox" id="chk1" name="c1">Montar en bici</input> <br />
		<input type="checkbox" id="chk2" name="c2">Dormir</input> <br />
	</form>
</div>

En este caso lo que nos interesa es un listado (XMLList) con todos los nodos del mismo tipo.

function getElementsByName(data:XML, name:String):XMLList{
	return data.descendants(name);
}

// Se usaria asi:
getElementsByName(miXml, "input");

Este tipo de funciones las voy a ir recopilando en una clase XmlUtils.

Descargar XmlUtils.as

Descargar todo el paquete es.yporqueno

AS3 – xml.getElementById

Publicado por Iván Gajate el 13 de abril de 2010 en AS3, Flash | 12 comentarios »

Si tenemos un xml con etiquetas anidadas como esta:

<contenedor>
	<caja>
		<item id="expediente1">
			Contenido del expediente 1
		</item>
	</caja>
	<caja>
		<item id="expediente2">
			Contenido del expediente 2
		</item>
	</caja>
</contenedor>

Y queremos acceder directamente al nodo <item id=”expediente1”> podemos hacerlo con esta línea de E4X:

miXml.descendants().(hasOwnProperty("@id") && @id == "expediente1")[0]

Es fácil de entender, nos devolverá un XMList con todos los nodos que tengan el atributo “id”  y que id==”expediente1”. Y de ese nos quedamos con el primero.

Podemos meterla en una función para que sea más cómoda de usar:

function getElementById(data:XML, id:String):XML{
	return data.descendants().(hasOwnProperty("@id") && @id==id)[0];
}

// Se usaria asi:
getElementById(miXml, "expediente1");

La solución me la ha dado Joseba en la lista de AsNativos.

Este tipo de funciones las voy a ir recopilando en una clase XmlUtils.

Descargar XmlUtils.as

Descargar todo el paquete es.yporqueno