﻿<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets>
<!--
Este archivo determina qué fragmentos de código aparecen en el panel Fragmentos de código.

Atributo isBranch: establézcalo en "false" en los fragmentos.
title: nombre del fragmento que se visualiza en el panel Fragmentos de código.
description: descripción del fragmento que se muestra en la sugerencia.
requiresSymbol: establézcalo como true si el fragmento requiere que un objeto esté seleccionado en el escenario.
code: el código que se inserta.  El código real se debe insertar dentro del bloque CDATA como en este ejemplo.
minPlayerVersion - Requerir un archivo FLA para responder a una versión mínima del reproductor.
maxPlayerVersion - Requerir un archivo FLA para ser menos o igual a una versión mínima del reproductor.
minASVersion - Requerir un archivo FLA para responder a una versión mínima de ActionScript.
maxASVersion - Requerir un archivo FLA para ser menos o igual a una versión mínima de ActionScript.

Para crear sus propios fragmentos de código, copie el siguiente código vacío y péguelo en la categoría en la que desee que aparezca.

	<snippet isBranch="false">
	  <title>Fragmento personalizado</title>
	  <description>Éste es un ejemplo de fragmento de código personalizado.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <code><![CDATA[
// Aquí va el código
trace("Un fragmento de código personalizado");
	  ]]></code>
	</snippet>
-->
<snippets>
  <category title="Acciones"
      isBranch="true" expanded="false"
      description="Código para interacciones comunes">
	<snippet isBranch="false">
	  <title>Hacer clic para ir a página Web</title>
	  <description>Al hacer clic en el objeto especificado, se carga la dirección URL en una nueva ventana del navegador.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			text="http://www.adobe.com"
			type="editableText" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Go_to_Web_Page</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para ir a página Web
Al hacer clic en la instancia del símbolo especificado, la dirección URL se carga en una nueva ventana del navegador.

Instrucciones:
1. Reemplace http://www.adobe.com por la dirección URL que desee.
   Conserve las comillas ("").
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage);

function fl_ClickToGoToWebPage(event:MouseEvent):void
{
	navigateToURL(new URLRequest("http://www.adobe.com"), "_blank");
}
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Cursor de ratón personalizado</title>
	  <description>Reemplaza el cursor de ratón predeterminado por el objeto especificado en el escenario.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Custom_Mouse_Cursor</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Cursor de ratón personalizado
Reemplaza el cursor de ratón predeterminado por la instancia del símbolo especificado.
*/

stage.addChild(instance_name_here);
instance_name_here.mouseEnabled = false;
instance_name_here.addEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor);

function fl_CustomMouseCursor(event:Event)
{
	instance_name_here.x = stage.mouseX;
	instance_name_here.y = stage.mouseY;
}
Mouse.hide();

//Para restaurar el puntero de ratón predeterminado, quite los comentarios de las líneas siguientes:
//instance_name_here.removeEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor);
//stage.removeChild(instance_name_here);
//Mouse.show();
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Arrastrar y colocar</title>
	  <description>Hace que el objeto especificado se pueda mover con la función de arrastrar y soltar.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Drag_and_Drop</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Arrastrar y colocar
Permite que la instancia del símbolo especificado se pueda mover con una acción de arrastrar y colocar.
*/

instance_name_here.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag);

function fl_ClickToDrag(event:MouseEvent):void
{
	instance_name_here.startDrag();
}

stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop);

function fl_ReleaseToDrop(event:MouseEvent):void
{
	instance_name_here.stopDrag();
}
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Reproducción de un clip de película</title>
	  <description>Reproduce el objeto especificado o clip de película detenido en ese momento en el escenario.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <ADOBE_PIP_ID>Play_a_Movie_Clip</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Reproducción de un clip de película
Reproduce el clip de película especificado en el escenario.

Instrucciones:
1. Utilice este código para clips de película actualmente detenidos.
*/

instance_name_here.play();
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Detener un clip de película</title>
	  <description>Detiene el objeto o clip de película especificado que se esté reproduciendo en el escenario.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <ADOBE_PIP_ID>Stop_a_Movie_Clip</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Detener un clip de película
Detiene el clip de película especificado en el escenario.

Instrucciones:
1. Utilice este código para clips de película actualmente en reproducción.
*/

instance_name_here.stop();
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Hacer clic para ocultar un objeto</title>
	  <description>Al hacer clic en el objeto especificado, éste se oculta.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Hide_an_Object</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para ocultar un objeto
Al hacer clic en la instancia del símbolo especificado, éste se oculta.

Instrucciones:
1. Utilice este código para objetos visibles actualmente.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToHide);

function fl_ClickToHide(event:MouseEvent):void
{
	instance_name_here.visible = false;
}
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Mostrar un objeto</title>
	  <description>Hace que el objeto especificado sea visible.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Show_an_Object</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Mostrar un objeto
Muestra la instancia del símbolo especificado.

Instrucciones:
1. Utilice este código para mostrar objetos ocultos actualmente.
*/

instance_name_here.visible = true;
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para colocar un objeto</title>
	  <description>Mueve el objeto especificado a las coordenadas x e y indicadas.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			text="200"
			type="hotTextNumber"
			min="-500"
			max="5000"/>
		<placeholder
			text="100"
			type="hotTextNumber"
			min="-500"
			max="5000"/>
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Position_an_Object</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para colocar un objeto
Mueve la instancia del símbolo especificado a la coordenada x e y que especifique.

Instrucciones:
1. Reemplace el valor 200 por la coordenada x
   donde quiera colocar el objeto.
2. Reemplace el valor 100 por la coordenada y donde quiera colocar el objeto.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToPosition);

function fl_ClickToPosition(event:MouseEvent):void
{
	instance_name_here.x = 200;
	instance_name_here.y = 100;
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para mostrar un campo de texto</title>
	  <description>Al hacer clic en el objeto especificado, se crea y se visualiza un campo TextField en la posición que indique.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="100"
			subType="int"
			min="0" />
		<placeholder
			type="hotTextNumber"
			text="200"
			subType="int"
			min="0" />
		<placeholder
			text="Lorem ipsum dolor sit amet."
			type="editableText" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Display_a_TextField</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para mostrar un campo de texto
Al hacer clic en la instancia del símbolo especificado, se crea un campo de texto en la coordenada x e y que especifique.

Instrucciones:
1. Reemplace el valor 200 por la coordenada x donde quiera colocar el campo de texto.
2. Reemplace el valor 100 por la coordenada y donde quiera colocar el campo de texto.
3. Reemplace el valor de la cadena "Lorem ipsum dolor sit amet" por el texto que quiera visualizar en el campo de texto que aparece. Conserve las comillas.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToPosition);

var fl_TF:TextField;
var fl_TextToDisplay:String = "Lorem ipsum dolor sit amet.";

function fl_ClickToPosition(event:MouseEvent):void
{
	fl_TF = new TextField();
	fl_TF.autoSize = TextFieldAutoSize.LEFT;
	fl_TF.background = true;
	fl_TF.border = true;
	fl_TF.x = 200;
	fl_TF.y = 100;
	fl_TF.text = fl_TextToDisplay;
	addChild(fl_TF);
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Generar un número aleatorio</title>
	  <description>Genera un valor numérico aleatorio entre 0 y un número que elija.</description>
	  <placeholders>
		<placeholder
			type="hotTextNumber"
			text="100"
			subType="int"
			min="2" />
	  </placeholders>
	  <ADOBE_PIP_ID>Generate_a_Random_Number</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Generar un número aleatorio
Genera un número aleatorio entre 0 y un número límite especificado.

Instrucciones:
1. Para cambiar el valor aleatorio máximo, reemplace el número 100 de la última línea de este fragmento por el número que desee utilizar.
2. Este código genera un número aleatorio en el panel Salida.
*/

function fl_GenerateRandomNumber(limit:Number):Number
{
	var randomNumber:Number = Math.floor(Math.random()*(limit+1));
	return randomNumber;
}
trace(fl_GenerateRandomNumber(100));
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Traer objeto al frente</title>
	  <description>Trae al frente cualquier objeto en el que se haga clic.</description>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Bring_Object_to_the_Front</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Traer al frente cualquier objeto en el que se haga clic
Al hacer clic en cualquier símbolo del escenario, se coloca delante del resto de instancias.
*/

// Este código permite que se pueda hacer clic en todas las instancias de símbolo del escenario. Para ello, hace que detecten el evento CLICK.
for (var fl_ChildIndex:int = 0;
		fl_ChildIndex < this.numChildren;
		fl_ChildIndex++)
{
	this.getChildAt(fl_ChildIndex).addEventListener(MouseEvent.CLICK, fl_ClickToBringToFront);
}

// Esta es la función que mueve delante de la lista de visualización el objeto en el que se ha hecho clic

function fl_ClickToBringToFront(event:MouseEvent):void
{
	this.addChild(event.currentTarget as DisplayObject);
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Temporizador simple</title>
	  <description>Muestra un temporizador en el panel Salida con una cuenta atrás de duración indicada por el usuario.</description>
	  <placeholders>
		<placeholder
			type="hotTextNumber"
			text="30"
			subType="int"
			min="1" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Simple_Timer</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Temporizador simple
Muestra un temporizador en el panel Salida con una cuenta atrás de 30 segundos.
Este código es un buen lugar para empezar a crear temporizadores para sus propios fines.

Instrucciones:
1. Para cambiar el número de segundos del temporizador, reemplace el valor 30 de la primera línea por el número de segundos que desee.
*/

var fl_TimerInstance:Timer = new Timer(1000, 30);
fl_TimerInstance.addEventListener(TimerEvent.TIMER, fl_TimerHandler);
fl_TimerInstance.start();

var fl_SecondsElapsed:Number = 1;

function fl_TimerHandler(event:TimerEvent):void
{
	trace("Segundos transcurridos: " + fl_SecondsElapsed);
	fl_SecondsElapsed++;
}
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Temporizador de cuenta atrás</title>
	  <description>Realiza la cuenta atrás desde la duración especificada.</description>
	  <placeholders>
		<placeholder
			type="hotTextNumber"
			text="10"
			subType="int"
			min="2" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Countdown_Timer</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Temporizador de cuenta atrás
Activa una cuenta atrás desde el número especificado de segundos.

Instrucciones:
1. Para cambiar la duración de la cuenta atrás, reemplace el valor 10 de la primera línea por el número de segundos que desee.
*/

var fl_SecondsToCountDown:Number = 10;

var fl_CountDownTimerInstance:Timer = new Timer(1000, fl_SecondsToCountDown);
fl_CountDownTimerInstance.addEventListener(TimerEvent.TIMER, fl_CountDownTimerHandler);
fl_CountDownTimerInstance.start();

function fl_CountDownTimerHandler(event:TimerEvent):void
{
	trace(fl_SecondsToCountDown + " segundos");
	fl_SecondsToCountDown--;
}
]]></code>
	</snippet>
	</category>


	<category title="Navegación de línea de tiempo"
	    isBranch="true"
	    description="Código para controlar reproducción de película">
	<snippet isBranch="false">
	  <title>Detener en este fotograma</title>
	  <description>Impide que la cabeza lectora avance hasta el siguiente fotograma de la línea de tiempo.</description>
	  <ADOBE_PIP_ID>Stop_at_this_Frame</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Detener en este fotograma
La línea de tiempo de Flash se detendrá/pausará en el fotograma en el que inserte este código.
También se puede utilizar para detener/pausar la línea de tiempo de clips de película.
*/

stop();
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para ir al fotograma y detener</title>
	  <description>Al hacer clic en el objeto, la cabeza lectora se mueve hasta el fotograma especificado y se detiene.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			text="5"
			type="hotTextNumber"
			min="1" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Go_to_Frame_and_Stop</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para ir al fotograma y detener
Al hacer clic en la instancia del símbolo especificado, la cabeza lectora se mueve hasta el fotograma especificado en la línea de tiempo y detiene la película.
Se puede utilizar en la línea de tiempo principal o en líneas de tiempo de clips de película.

Instrucciones:
1. Reemplace el número 5 del siguiente código por el número de fotograma hasta el que quiere que se mueva la cabeza lectora cuando se haga clic en la instancia del símbolo.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame);

function fl_ClickToGoToAndStopAtFrame(event:MouseEvent):void
{
	gotoAndStop(5);
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para ir al fotograma y reproducir</title>
	  <description>Al hacer clic en el objeto, la cabeza lectora se mueve hasta el fotograma especificado y prosigue la reproducción.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			text="5"
			type="hotTextNumber"
			min="1" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Go_to_Frame_and_Play</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para ir al fotograma y reproducir
Al hacer clic en la instancia del símbolo especificado, la cabeza lectora se mueve hasta el fotograma especificado en la línea de tiempo y prosigue la reproducción desde dicho fotograma.
Se puede utilizar en la línea de tiempo principal o en líneas de tiempo de clips de película.

Instrucciones:
1. Reemplace el número 5 del siguiente código por el número de fotograma hasta el que quiere que se mueva la cabeza lectora cuando se haga clic en la instancia del símbolo.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndPlayFromFrame);

function fl_ClickToGoToAndPlayFromFrame(event:MouseEvent):void
{
	gotoAndPlay(5);
}
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Hacer clic para ir al fotograma siguiente y detener</title>
	  <description>Al hacer clic en el objeto especificado, la cabeza lectora se mueve hasta el siguiente fotograma y se detiene.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Go_to_Next_Frame_and_Stop</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para ir al fotograma siguiente y detener
Al hacer clic en la instancia del símbolo especificado, la cabeza lectora se mueve hasta el fotograma siguiente y detiene la película.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextFrame);

function fl_ClickToGoToNextFrame(event:MouseEvent):void
{
	nextFrame();
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para ir al fotograma anterior y detener</title>
	  <description>Al hacer clic en el objeto especificado, la cabeza lectora se mueve hasta el fotograma anterior y se detiene.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Go_to_Previous_Frame_and_Stop</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para ir al fotograma anterior y detener
Al hacer clic en la instancia del símbolo especificado, la cabeza lectora se mueve hasta el fotograma anterior y detiene la película.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToGoToPreviousFrame);

function fl_ClickToGoToPreviousFrame(event:MouseEvent):void
{
	prevFrame();
}
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Hacer clic para ir a la escena siguiente y reproducir</title>
	  <description>Al hacer clic en el objeto, la cabeza lectora se mueve hasta la escena siguiente y prosigue la reproducción.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Go_to_Next_Scene_and_Play</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para ir a la escena siguiente y reproducir
Al hacer clic en la instancia del símbolo especificado, la cabeza lectora se mueve hasta la escena siguiente en la línea de tiempo y prosigue la reproducción en dicha escena.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToGoToNextScene);

function fl_ClickToGoToNextScene(event:MouseEvent):void
{
	MovieClip(this.root).nextScene();
}
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Hacer clic para ir a la escena anterior y reproducir</title>
	  <description>Al hacer clic en el objeto, la cabeza lectora se mueve hasta la escena anterior y prosigue la reproducción.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Go_to_Previous_Scene_and_Play</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para ir a la escena anterior y reproducir
Al hacer clic en la instancia del símbolo especificado, la cabeza lectora se mueve hasta la escena anterior en la línea de tiempo y prosigue la reproducción en dicha escena.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToGoToPreviousScene);

function fl_ClickToGoToPreviousScene(event:MouseEvent):void
{
	MovieClip(this.root).prevScene();
}
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Hacer clic para ir a la escena y reproducir</title>
	  <description>Al hacer clic en el objeto, se reproduce la película desde la escena y fotograma especificados.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			text="Escena 3"
			type="editableText" />
		<placeholder
			text="1"
			type="hotTextNumber"
			min="1" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Go_to_Scene_and_Play</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para ir a la escena y reproducir
Al hacer clic en la instancia del símbolo especificado, se reproduce la película desde la escena y fotograma especificados.

Instrucciones:
1. Reemplace "Scene 3" por el nombre de la escena que quiera reproducir.
2. Reemplace 1 por el número de fotograma que quiera que la película reproduzca desde la escena especificada.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene);

function fl_ClickToGoToScene(event:MouseEvent):void
{
	MovieClip(this.root).gotoAndPlay(1, "Escena 3");
}
]]></code>
	</snippet>
	</category>


	<category title="Animación"
	    isBranch="true"
	    description="Código para cambiar las propiedades de un objeto con el paso del tiempo">

	<snippet isBranch="false">
	  <title>Mover con flechas del teclado</title>
	  <description>Permite mover el objeto con las flechas del teclado.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="5"
			subType="int"
			min="1" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Move_with_Keyboard_Arrows</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Mover con flechas del teclado
Permite mover la instancia del símbolo especificado con las flechas del teclado.

Instrucciones:
1. Para aumentar o reducir la cantidad de movimiento, reemplace el número 5 siguiente por el número de píxeles que quiere que se mueva la instancia cada vez que pulse una tecla.
Observe que el número 5 aparece cuatro veces en el código.
*/

var upPressed:Boolean = false;
var downPressed:Boolean = false;
var leftPressed:Boolean = false;
var rightPressed:Boolean = false;

instance_name_here.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey);
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed);

function fl_MoveInDirectionOfKey(event:Event)
{
	if (upPressed)
	{
		instance_name_here.y -= 5;
	}
	if (downPressed)
	{
		instance_name_here.y += 5;
	}
	if (leftPressed)
	{
		instance_name_here.x -= 5;
	}
	if (rightPressed)
	{
		instance_name_here.x += 5;
	}
}

function fl_SetKeyPressed(event:KeyboardEvent):void
{
	switch (event.keyCode)
	{
		case Keyboard.UP:
		{
			upPressed = true;
			break;
		}
		case Keyboard.DOWN:
		{
			downPressed = true;
			break;
		}
		case Keyboard.LEFT:
		{
			leftPressed = true;
			break;
		}
		case Keyboard.RIGHT:
		{
			rightPressed = true;
			break;
		}
	}
}

function fl_UnsetKeyPressed(event:KeyboardEvent):void
{
	switch (event.keyCode)
	{
		case Keyboard.UP:
		{
			upPressed = false;
			break;
		}
		case Keyboard.DOWN:
		{
			downPressed = false;
			break;
		}
		case Keyboard.LEFT:
		{
			leftPressed = false;
			break;
		}
		case Keyboard.RIGHT:
		{
			rightPressed = false;
			break;
		}
	}
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Mover horizontalmente</title>
	  <description>Mueve el objeto especificado a la izquierda o a la derecha el número de píxeles indicado.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="100"
			min="-500"
			max="500" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Move_Horizontally</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Mover horizontalmente
Mueve la instancia del símbolo especificado hacia la izquierda o hacia la derecha reduciendo o aumentando su propiedad x según el número especificado de píxeles.

Instrucciones:
1. Este código moverá la instancia del símbolo hacia la derecha de forma predeterminada.
2. Para mover la instancia del símbolo hacia la izquierda, cambie el número 100 siguiente por un valor negativo.
3. Para modificar la distancia que se mueve la instancia del símbolo, cambie el número 100 siguiente por el número de píxeles que quiere que se mueva la instancia del símbolo.
*/

instance_name_here.x += 100;
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Mover verticalmente</title>
	  <description>Mueve el objeto especificado hacia arriba o hacia abajo el número de píxeles indicado.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="100"
			min="-500"
			max="500" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Move_Vertically</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Mover verticalmente
Mueve la instancia del símbolo hacia arriba o hacia abajo aumentando o reduciendo su propiedad y según el número especificado de píxeles.

Instrucciones:
1. El movimiento predeterminado del código tal como está es hacia abajo.
2. Para subir la instancia del símbolo, cambie el número 100 por un valor negativo.
3. Para modificar la distancia que se mueve la instancia del símbolo, cambie el número 100 siguiente por el número de píxeles que quiere que se mueva la instancia del símbolo.
*/

instance_name_here.y += 100;
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Rotar una vez</title>
	  <description>Gira el objeto especificado una vez en una dirección indicada actualizando la propiedad rotation.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="45"
			min="-180"
			max="180" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Rotate_Once</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Rotar una vez
Gira la instancia del símbolo actualizando su propiedad rotation según el número especificado de grados.

Instrucciones:
1. La rotación predeterminada del código tal como está es en el sentido horario.
2. Para girar la instancia del símbolo en sentido antihorario, cambie el número 45 siguiente por un valor negativo.
3. Para modificar la cantidad de giro de la instancia del símbolo, cambie el siguiente valor 45 por el número de grados de rotación que desee.
*/

instance_name_here.rotation += 45;
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Rotar continuadamente</title>
	  <description>Gira el objeto continuamente actualizando su propiedad rotation en un evento ENTER_FRAME.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="10"
			min="-180"
			max="180" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Rotate_Continuously</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Rotar continuadamente
Gira la instancia del símbolo continuadamente actualizando su propiedad rotation en un evento ENTER_FRAME.

Instrucciones:
1. La rotación predeterminada del código tal como está es en el sentido horario.
2. Para modificar la dirección de rotación a sentido antihorario, cambie el número 10 siguiente por un valor negativo.
3. Para modificar la velocidad a la que gira la instancia del símbolo, cambie el número 10 siguiente por el número de grados que quiere que gire la instancia del símbolo en cada fotograma. Cuanto mayor sea el número, más rápida será la rotación.
4. Dado que la animación utiliza un evento ENTER_FRAME, avanza únicamente cuando la cabeza lectora se mueve hasta un nuevo fotograma. La velocidad de la animación también se ve afectada por la velocidad de fotogramas.
*/

instance_name_here.addEventListener(Event.ENTER_FRAME, fl_RotateContinuously);

function fl_RotateContinuously(event:Event)
{
	instance_name_here.rotation += 10;
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Animar horizontalmente</title>
	  <description>Anima el objeto especificado horizontalmente en el escenario actualizando la propiedad X en el evento ENTER_FRAME.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="10"
			min="-100"
			max="100" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Animate_Horizontally</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Animar horizontalmente
Mueve la instancia del símbolo a la derecha o a la izquierda en el escenario. Para ello, aumenta o reduce su propiedad x en un evento ENTER_FRAME.

Instrucciones:
1. La dirección predeterminada de la animación es hacia la derecha.
2. Para modificar la dirección de la animación hacia la izquierda, cambie el número 10 siguiente por un valor negativo.
3. Para modificar la velocidad a la que se mueve la instancia del símbolo, cambie el número 10 siguiente por el número de píxeles que quiere que se mueva la instancia del símbolo en cada fotograma.
4. Dado que la animación utiliza un evento ENTER_FRAME, avanza únicamente cuando la cabeza lectora se mueve hasta un nuevo fotograma. La velocidad de la animación también se ve afectada por la velocidad de fotogramas.
*/

instance_name_here.addEventListener(Event.ENTER_FRAME, fl_AnimateHorizontally);

function fl_AnimateHorizontally(event:Event)
{
	instance_name_here.x += 10;
}
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Animar verticalmente</title>
	  <description>Anima el objeto especificado verticalmente en el escenario actualizando la propiedad Y en el evento ENTER_FRAME.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="10"
			min="-100"
			max="100" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Animate_Vertically</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Animar verticalmente
Mueve la instancia del símbolo verticalmente en el escenario. Para ello, aumenta o reduce su propiedad y en un evento ENTER_FRAME.

Instrucciones:
1. La dirección predeterminada de la animación es hacia abajo.
2. Para modificar la dirección de la animación hacia arriba, cambie el número 10 siguiente por un valor negativo.
3. Para modificar la velocidad a la que se mueve la instancia del símbolo, cambie el número 10 siguiente por el número de píxeles que quiere que se mueva la instancia del símbolo en cada fotograma.
4. Dado que la animación utiliza un evento ENTER_FRAME, avanza únicamente cuando la cabeza lectora se mueve hasta un nuevo fotograma. La velocidad de la animación también se ve afectada por la velocidad de fotogramas.
*/

instance_name_here.addEventListener(Event.ENTER_FRAME, fl_AnimateVertically);

function fl_AnimateVertically(event:Event)
{
	instance_name_here.y += 10;
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Aumento progresivo de un clip de película</title>
	  <description>Atenúa el objeto especificado actualizando la propiedad alpha en el evento ENTER_FRAME.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="0.01"
			subType="Number"
			increment="0.001"
			min="0.001"
			max="1" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Fade_In_a_Movie_Clip</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Aumento progresivo de un clip de película
Aumenta progresivamente la instancia del símbolo aumentando su propiedad alpha en un evento ENTER_FRAME hasta que es totalmente visible.

Instrucciones:
1. Para modificar la velocidad a la que aumenta progresivamente la instancia del símbolo, cambie el valor 0.01 siguiente (el número debe ser mayor que 0 y menor o igual que 1). Cuanto mayor sea el valor, más rápido será el aumento progresivo.
2. Dado que la animación utiliza un evento ENTER_FRAME, avanza únicamente cuando la cabeza lectora se mueve hasta un nuevo fotograma. La velocidad de la animación también se ve afectada por la velocidad de fotogramas.
*/

instance_name_here.addEventListener(Event.ENTER_FRAME, fl_FadeSymbolIn);
instance_name_here.alpha = 0;

function fl_FadeSymbolIn(event:Event)
{
	instance_name_here.alpha += 0.01;
	if(instance_name_here.alpha >= 1)
	{
		instance_name_here.removeEventListener(Event.ENTER_FRAME, fl_FadeSymbolIn);
	}
}
]]></code>
	</snippet>
	<snippet isBranch="false">
	  <title>Desvanecimiento de un clip de película</title>
	  <description>Atenúa el objeto especificado actualizando la propiedad alpha en el evento ENTER_FRAME.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="0.01"
			subType="Number"
			increment="0.001"
			min="0.001"
			max="1" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Fade_Out_a_Movie_Clip</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Desvanecimiento de un clip de película
Desvanece la instancia del símbolo reduciendo su propiedad alpha en un evento ENTER_FRAME hasta que es invisible.

Instrucciones:
1. Para modificar la velocidad a la que desvanece progresivamente la instancia del símbolo, cambie el valor 0.01 siguiente (el número debe ser mayor que 0 y menor o igual que 1). Cuanto mayor sea el valor, más rápido será el desvanecimiento.
2. Dado que la animación utiliza un evento ENTER_FRAME, avanza únicamente cuando la cabeza lectora se mueve hasta un nuevo fotograma. La velocidad de la animación también se ve afectada por la velocidad de fotogramas.
*/

instance_name_here.addEventListener(Event.ENTER_FRAME, fl_FadeSymbolOut);
instance_name_here.alpha = 1;

function fl_FadeSymbolOut(event:Event)
{
	instance_name_here.alpha -= 0.01;
	if(instance_name_here.alpha <= 0)
	{
		instance_name_here.removeEventListener(Event.ENTER_FRAME, fl_FadeSymbolOut);
	}
}
]]></code>
	</snippet>
  </category>


  <category title="Cargar y descargar"
      isBranch="true"
      description="Código para cargar y descargar activos">
	<snippet isBranch="false">
	  <title>Hacer clic para cargar/descargar archivo SWF o imagen</title>
	  <description>Al hacer clic en el objeto especificado, se carga un SWF o URL de imagen. Cuando se hace clic una segunda vez, se descarga.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="editableText"
			text="http://www.helpexamples.com/flash/images/image1.jpg" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Load_Unload_SWF_or_Image</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para cargar/descargar archivo SWF o imagen desde una dirección URL.
Al hacer clic en la instancia del símbolo, se carga y se visualiza la dirección URL especificada del archivo SWF o de la imagen. Al hacer clic en la instancia del símbolo una segunda vez, se descarga el archivo SWF o la imagen.

Instrucciones:
1. Reemplace "http://www.helpexamples.com/flash/images/image1.jpg" a continuación por la dirección URL que desee para el archivo SWF o la imagen. Conserve las comillas ("").
2. Los archivos de dominios de Internet distintos del dominio en el que reside el archivo SWF al que se llama no se pueden cargar sin una configuración especial.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToLoadUnloadSWF);

import fl.display.ProLoader;
var fl_ProLoader:ProLoader;

//Esta variable realiza un seguimiento de las veces que quiere cargar o descargar el archivo SWF
var fl_ToLoad:Boolean = true;

function fl_ClickToLoadUnloadSWF(event:MouseEvent):void
{
	if(fl_ToLoad)
	{
		fl_ProLoader = new ProLoader();
		fl_ProLoader.load(new URLRequest("http://www.helpexamples.com/flash/images/image1.jpg"));
		addChild(fl_ProLoader);
	}
	else
	{
		fl_ProLoader.unload();
		removeChild(fl_ProLoader);
		fl_ProLoader = null;
	}
	// Cambia si quiere cargar o descargar el archivo SWF
	fl_ToLoad = !fl_ToLoad;
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para cargar imagen desde biblioteca</title>
	  <description>Al hacer clic en el objeto especificado, se carga y se visualiza una imagen de la biblioteca.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="editableText"
			subType="identifierName"
			text="MyImage" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Load_Image_from_Library</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para cargar imagen desde biblioteca
Al hacer clic en la instancia el símbolo, se visualiza la imagen especificada desde la biblioteca.
Para cargar una imagen desde la biblioteca, debe encontrarse en la biblioteca, tener su propiedad Exportar para ActionScript activada y disponer de un nombre de clase válido.

Instrucciones:
1. Haga clic en cualquier símbolo de mapa de bits dentro de la biblioteca y seleccione "Propiedades...".
2. Haga clic en el botón "Avanzado" para expandir el diálogo "Propiedades de mapa de bits".
3. Active la opción "Exportar para ActionScript".
3. Escriba 'MyImage' en el campo de texto Clase.
5. Haga clic en Aceptar dos veces.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToLoadImageFromLibrary);

function fl_ClickToLoadImageFromLibrary(event:MouseEvent):void
{
	// Si quiere añadir una imagen distinta desde la biblioteca,
	// escriba otro nombre en el campo de texto Clase del paso 4 anterior y en el siguiente código.
	var libImage:MyImage = new MyImage();

	var holder:Bitmap = new Bitmap(libImage);
	addChild(holder);
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Añadir instancia desde la biblioteca</title>
	  <description>Añade una instancia del símbolo especificado de la biblioteca en el escenario.</description>
	  <placeholders>
		<placeholder
			type="editableText"
			subType="identifierName"
			text="LibrarySymbol" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Add_Instance_from_Library</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Añadir instancia desde la biblioteca en el escenario
Añade una instancia del símbolo MovieClip o Button de la biblioteca en el escenario. Si desea añadir un símbolo Bitmap de la biblioteca en el escenario, utilice el fragmento de código "Hacer clic para cargar imagen desde biblioteca".

Instrucciones:
1. Haga clic en cualquier símbolo de la biblioteca y seleccione "Propiedades...".
2. Haga clic en el botón "Avanzado" para expandir el diálogo "Propiedades de símbolo".
3. Active la opción "Exportar para ActionScript".
4. Escriba 'LibrarySymbol' en el campo de texto Clase.
5. Haga clic en Aceptar dos veces.
*/

// Si quiere añadir un símbolo distinto desde la biblioteca,
// escriba otro nombre en el campo de texto Clase del paso 4 anterior y en el siguiente código.
var fl_MyInstance:LibrarySymbol = new LibrarySymbol();
addChild(fl_MyInstance);
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Quitar instancia del escenario</title>
	  <description>Quita la instancia del símbolo especificado del escenario.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Remove_Instance_from_Stage</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Quitar instancia del escenario
Quita la instancia del símbolo especificado del escenario.
*/

removeChild(instance_name_here);
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Cargar texto externo</title>
	  <description>Carga y visualiza un archivo de texto en el panel Salida.</description>
	  <placeholders>
		<placeholder
			type="editableText"
			text="http://www.helpexamples.com/flash/text/loremipsum.txt" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Load_External_Text</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Cargar texto externo
Carga un archivo de texto externo y lo visualiza en el panel Salida.

Instrucciones:
1. Reemplace "http://www.helpexamples.com/flash/text/loremipsum.txt" por la dirección URL del archivo de texto que quiera cargar.
La dirección puede ser un vínculo relativo o un vínculo "http://".
La dirección debe estar encerrada entre comillas ("").
*/

var fl_TextLoader:URLLoader = new URLLoader();
var fl_TextURLRequest:URLRequest = new URLRequest("http://www.helpexamples.com/flash/text/loremipsum.txt");

fl_TextLoader.addEventListener(Event.COMPLETE, fl_CompleteHandler);

function fl_CompleteHandler(event:Event):void
{
	var textData:String = new String(fl_TextLoader.data);
	trace(textData);
}

fl_TextLoader.load(fl_TextURLRequest);
]]></code>
	</snippet>

	</category>

	<category title="Audio y vídeo"
	    isBranch="true"
	    description="Código para trabajar con audio y vídeo">
	<snippet isBranch="false">
      <title>Hacer clic para reproducir/detener sonido</title>
      <description>Al hacer clic en el objeto especificado, se reproduce un sonido. Si se hace clic una segunda vez, el sonido deja de reproducirse. </description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="editableText"
			text="http://www.helpexamples.com/flash/sound/song1.mp3" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Play_Stop_Sound</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para reproducir/detener sonido
Al hacer clic en la instancia del símbolo, se reproduce el sonido especificado.
Al hacer clic en la instancia del símbolo otra vez, el sonido se detiene.

Instrucciones:
1. Reemplace "http://www.helpexamples.com/flash/sound/song1.mp3" a continuación por la dirección URL del archivo de sonido. Conserve las comillas ("").
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToPlayStopSound);

var fl_SC:SoundChannel;

//Esta variable realiza un seguimiento de las veces que quiere reproducir o detener el sonido
var fl_ToPlay:Boolean = true;

function fl_ClickToPlayStopSound(evt:MouseEvent):void
{
	if(fl_ToPlay)
	{
		var s:Sound = new Sound(new URLRequest("http://www.helpexamples.com/flash/sound/song1.mp3"));
		fl_SC = s.play();
	}
	else
	{
		fl_SC.stop();
	}
	fl_ToPlay = !fl_ToPlay;
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para detener todos los sonidos</title>
	  <description>Al hacer clic en el objeto, se detienen todos los sonidos que se estén reproduciendo.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Stop_All_Sounds</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para detener todos los sonidos
Al hacer clic en la instancia del símbolo, se detienen todos los sonidos en reproducción.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToStopAllSounds);

function fl_ClickToStopAllSounds(event:MouseEvent):void
{
	SoundMixer.stopAll();
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Evento OnCuePoint</title>
	  <description>Asigna la ejecución de una función cada vez que se pasa por un punto de referencia (momento importante dentro de un clip de vídeo) en el vídeo seleccionado.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			subType="FLVPlayback"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>On_Cue_Point_Event</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Controlador de eventos OnCuePoint
Ejecuta la función fl_CuePointHandler definida a continuación cada vez que se transfiere un punto de referencia en la instancia de vídeo especificada.

Instrucciones:
1. Añada el código personalizado en una nueva línea después de la línea que dice "// Inicio del código personalizado" más abajo.
El código se ejecutará cuando se llegue a los puntos de referencia del vídeo que se está reproduciendo.
*/

import fl.video.MetadataEvent;

instance_name_here.addEventListener(MetadataEvent.CUE_POINT, fl_CuePointHandler);

function fl_CuePointHandler(event:MetadataEvent):void
{
	// Inicio del código personalizado
	// Este fragmento de código muestra el nombre del punto de referencia en el panel Salida
	trace(event.info.name);
	// Fin del código personalizado
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para reproducir vídeo</title>
	  <description>Al hacer clic en el objeto especificado, se reproduce un vídeo dentro de un componente FLVPlayback.</description>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="stageInstance"
			subType="FLVPlayback"
			text="video_instance_name" />
	  </placeholders>
	  <requiresSymbol>true</requiresSymbol>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Play_Video</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para reproducir vídeo (es necesario el componente FLVPlayback)
Al hacer clic en la instancia del símbolo, se reproduce un vídeo en la instancia especificada del componente FLVPlayback.

Instrucciones:
1. Reemplace 'video_instance_name' a continuación por el nombre de instancia del componente FLVPlayback que quiera que reproduzca el vídeo.
   Se reproducirá la instancia especificada del componente de vídeo FLVPlayback en el escenario.
2. Asegúrese de asignar un archivo de origen de vídeo en las propiedades de la instancia del componente FLVPlayback.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToPlayVideo);

function fl_ClickToPlayVideo(event:MouseEvent):void
{
	// Reemplace 'video_instance_name' por el nombre de instancia del componente de vídeo
	video_instance_name.play();
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para pausar vídeo</title>
	  <description>Al hacer clic en el objeto especificado, se detiene el vídeo en un componente FLVPlayback.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="stageInstance"
			subType="FLVPlayback"
			text="video_instance_name" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Pause_Video</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para pausar vídeo (es necesario el componente FLVPlayback)
Al hacer clic en la instancia del símbolo, se pausa un vídeo en la instancia especificada del componente FLVPlayback.

Instrucciones:
1. Reemplace 'video_instance_name' a continuación por el nombre de instancia del componente FLVPlayback que quiera pausar.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToPauseVideo);

function fl_ClickToPauseVideo(event:MouseEvent):void
{
	// Reemplace 'video_instance_name' por el nombre de instancia del componente de vídeo
	video_instance_name.pause();
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para rebobinar vídeo</title>
	  <description>Al hacer clic en el objeto especificado, se retrocede en el vídeo en un componente FLVPlayback.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="stageInstance"
			subType="FLVPlayback"
			text="video_instance_name" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Rewind_Video</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para rebobinar vídeo (es necesario el componente FLVPlayback)
Al hacer clic en la instancia del símbolo, se rebobina un vídeo en la instancia especificada del componente FLVPlayback.

Instrucciones:
1. Reemplace 'video_instance_name' a continuación por el nombre de instancia del componente FLVPlayback que quiera rebobinar.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToPauseVideo);

function fl_ClickToPauseVideo(event:MouseEvent):void
{
	// Reemplace 'video_instance_name' por el nombre de instancia del componente de vídeo
	video_instance_name.seek(0);
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para definir origen de vídeo</title>
	  <description>Al hacer clic en el objeto especificado, se reemplaza el vídeo en un componente FLVPlayback.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="stageInstance"
			subType="FLVPlayback"
			text="video_instance_name" />
		<placeholder
			type="editableText"
			text="http://www.helpexamples.com/flash/video/water.flv" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Set_Video_Source</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para definir origen de vídeo (es necesario FLVPlayback)
Al hacer clic en la instancia del símbolo especificado, se reproduce un nuevo archivo de vídeo en la instancia especificada del componente FLVPlayback. La instancia del componente FLVPlayback especificado se pausará.

Instrucciones:
1. Reemplace 'video_instance_name' a continuación por el nombre de instancia del componente FLVPlayback que quiera que reproduzca el nuevo archivo de vídeo.
2. Reemplace "http://www.helpexamples.com/flash/video/water.flv" a continuación por la dirección URL del nuevo archivo de vídeo que quiera reproducir. Conserve las comillas ("").
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToSetSource);

function fl_ClickToSetSource(event:MouseEvent):void
{
	video_instance_name.source = "http://www.helpexamples.com/flash/video/water.flv";
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Hacer clic para buscar punto de referencia</title>
	  <description>Al hacer clic en el objeto especificado, se busca un punto de referencia del vídeo en un componente FLVPlayback.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="stageInstance"
			subType="FLVPlayback"
			text="video_instance_name" />
		<placeholder
			type="editableText"
			text="Punto de referencia 1" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Click_to_Seek_to_Cue_Point</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Hacer clic para buscar punto de referencia (es necesario un componente FLVPlayback)
Al hacer clic en la instancia del símbolo especificado, se busca un punto de referencia del vídeo en la instancia del componente FLVPlayback especificado.

Instrucciones:
1. Reemplace 'video_instance_name' a continuación por el nombre de instancia del componente FLVPlayback que quiera buscar.
2. Reemplace "Cue Point 1" a continuación por el nombre del punto de referencia que quiera buscar.    Conserve las comillas ("").
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_ClickToSeekToCuePoint);

function fl_ClickToSeekToCuePoint(event:MouseEvent):void
{
	// Reemplace 'video_instance_name' por el nombre de instancia del componente de vídeo.
	// Reemplace "Cue Point" por el nombre del punto de referencia que quiera buscar.
	var cuePointInstance:Object = video_instance_name.findCuePoint("Punto de referencia 1");
	video_instance_name.seek(cuePointInstance.time);
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Creación de un vídeo NetStream</title>
	  <description>Comienza a reproducir un archivo de vídeo sin usar el componente FLVPlayback.</description>
	  <requiresSymbol>false</requiresSymbol>
	  <placeholders>
		<placeholder
			type="editableText"
			text="http://www.helpexamples.com/flash/video/water.flv" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Create_a_NetStream_Video</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Creación de un vídeo NetStream
Visualiza un vídeo en el escenario sin usar el componente de vídeo FLVPlayback.

Instrucciones:

1. Si se conecta a un archivo de vídeo ubicado en un servidor de flujos, como Adobe Flash Media Server 2, reemplace 'null' por la dirección URL del archivo de vídeo. Encierre la dirección URL entre comillas ("").
2. Si se conecta a un archivo de vídeo local o a otro que no utilice ningún servidor de flujos, deje 'null' tal como está.
3. Reemplace "http://www.helpexamples.com/flash/video/water.flv" por la dirección URL del vídeo que quiera reproducir.    Conserve las comillas ("").
*/

var fl_NC:NetConnection = new NetConnection();
fl_NC.connect(null);    // inicia una conexión; null se utiliza a no ser que se use Flash Media Server

var fl_NS:NetStream = new NetStream(fl_NC);
fl_NS.client = {};

var fl_Vid:Video = new Video();
fl_Vid.attachNetStream(fl_NS);
addChild(fl_Vid);

fl_NS.play("http://www.helpexamples.com/flash/video/water.flv");
]]></code>
	</snippet>
	</category>

	<category title="Controladores de eventos"
	    isBranch="true"
	    description="Código para gestionar la introducción básica del usuario">
	<snippet isBranch="false">
	  <title>Evento MouseClick</title>
	  <description>Al hacer clic en el objeto especificado, se ejecuta una función con código personalizado.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Mouse_Click_Event</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Evento MouseClick
Al hacer clic en la instancia del símbolo especificado, se ejecuta una función a la que puede añadir su código personalizado.

Instrucciones:
1. Añada el código personalizado en una nueva línea después de la línea que dice "// Inicio del código personalizado" más abajo.
El código se ejecutará al hacer clic en la instancia del símbolo.
*/

instance_name_here.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);

function fl_MouseClickHandler(event:MouseEvent):void
{
	// Inicio del código personalizado
	// Este código de ejemplo muestra las palabras "Ratón pulsado" en el panel Salida.
	trace("Ratón pulsado");
	// Fin del código personalizado
}
]]></code>
	</snippet>

 	<snippet isBranch="false">
	  <title>Evento MouseOver</title>
	  <description>Al pasar el ratón por encima del objeto especificado, se ejecuta una función con su código personalizado.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Mouse_Over_Event</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Evento MouseOver
Al pasar el ratón por encima de la instancia del símbolo especificado, se ejecuta una función a la que puede añadir su código personalizado.

Instrucciones:
1. Añada el código personalizado en una nueva línea después de la línea que dice "// Inicio del código personalizado" más abajo.
El código se ejecutará al pasar el ratón por encima de la instancia del símbolo.
*/

instance_name_here.addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOverHandler);

function fl_MouseOverHandler(event:MouseEvent):void
{
	// Inicio del código personalizado
	// Este código de ejemplo muestra las palabras "Ratón pasado por encima" en el panel Salida.
	trace("Ratón pasado por encima");
	// Fin del código personalizado
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Evento MouseOut</title>
	  <description>Al retirar el ratón del objeto, se ejecuta una función con su código personalizado.</description>
	  <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Mouse_Out_Event</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Evento MouseOut
Al retirar el ratón de la instancia del símbolo especificado, se ejecuta una función a la que puede añadir su código personalizado.

Instrucciones:
1. Añada el código personalizado en una nueva línea después de la línea que dice "// Inicio del código personalizado" más abajo.
El código se ejecutará al retirar el ratón de la instancia del símbolo.
*/

instance_name_here.addEventListener(MouseEvent.MOUSE_OUT, fl_MouseOutHandler);

function fl_MouseOutHandler(event:MouseEvent):void
{
	// Inicio del código personalizado
	// Este código de ejemplo muestra las palabras "Ratón retirado" en el panel Salida.
	trace("Ratón retirado");
	// Fin del código personalizado
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Evento KeyPressed</title>
	  <description>Asigna una función que se ejecutará cada vez que se pulse una tecla.</description>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Key_Pressed_Event</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Evento KeyPressed
Ejecuta la función fl_KeyboardDownHandler definida a continuación cuando se pulsa cualquier tecla.

Instrucciones:
1. Añada el código personalizado en una nueva línea después de la línea que dice "// Inicio del código personalizado" más abajo.
El código se ejecutará al pulsar cualquier tecla.
*/

stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_KeyboardDownHandler);

function fl_KeyboardDownHandler(event:KeyboardEvent):void
{
	// Inicio del código personalizado
	// Este código de ejemplo muestra las palabras "Código de tecla pulsada:" y el código de tecla de la tecla pulsada en el panel Salida.
	trace("Código de tecla pulsada: " + event.keyCode);
	// Fin del código personalizado
}
]]></code>
	</snippet>

	<snippet isBranch="false">
	  <title>Evento EnterFrame</title>
	  <description>Asigna una función que se ejecutará cada vez que la cabeza lectora se mueva a un nuevo fotograma.</description>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Enter_Frame_Event</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Evento EnterFrame
Ejecuta la función fl_EnterFrameHandler definida a continuación cada vez que la cabeza lectora se mueve a un nuevo fotograma de la línea de tiempo.

Instrucciones:
1. Añada el código personalizado en una nueva línea después de la línea que dice "// Inicio del código personalizado" más abajo.
El código se ejecutará cuando la cabeza lectora se mueva a un nuevo fotograma de la línea de tiempo.
*/

addEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);

function fl_EnterFrameHandler(event:Event):void
{
	//Inicio del código personalizado
	// Este código de ejemplo muestra las palabras "Acceso a fotograma" en el panel Salida.
	trace("Acceso a fotograma");
	// Fin del código personalizado
}
]]></code>
	</snippet>
	</category>
	<category title="Eventos táctiles móviles"
	  	isBranch="true"
	  	expanded="false"
	  	description="Código para gestionar entrada táctil en dispositivos móviles">
    <snippet isBranch="false">
      <title>Evento de toque</title>
      <description>Al tocar el objeto especificado, se ejecuta una función con su código personalizado.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Tap_Event</ADOBE_PIP_ID>
      <code><![CDATA[
/* Evento de toque
Al tocar la instancia del símbolo, se ejecuta una función a la que puede añadir su código personalizado.

Instrucciones:
1. Añada el código personalizado en una nueva línea después de la línea que dice "// Inicio del código personalizado" más abajo.
El código se ejecutará al tocar la instancia del símbolo.
*/

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

instance_name_here.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHandler);

function fl_TapHandler(event:TouchEvent):void
{
	// Inicio del código personalizado
	// Este código de ejemplo reduce la transparencia del objeto a la mitad con cada evento de toque
	instance_name_here.alpha *= 0.5;
	// Fin del código personalizado
}
]]></code>
    </snippet>
    <snippet isBranch="false">
      <title>Evento de toque y arrastre</title>
      <description>Permite que el objeto especificado se pueda mover con la función de arrastrar y soltar.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Touch_and_Drag_Event</ADOBE_PIP_ID>
      <code><![CDATA[
/* Evento de toque y arrastre
Permite mover el objeto sujetando y arrastrando el objeto.
*/

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

instance_name_here.addEventListener(TouchEvent.TOUCH_BEGIN, fl_TouchBeginHandler);
instance_name_here.addEventListener(TouchEvent.TOUCH_END, fl_TouchEndHandler);

var fl_DragBounds:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);

function fl_TouchBeginHandler(event:TouchEvent):void
{
	event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds);
}

function fl_TouchEndHandler(event:TouchEvent):void
{
	event.target.stopTouchDrag(event.touchPointID);
}
]]></code>
    </snippet>
    <snippet isBranch="false">
      <title>Evento de pulsación larga</title>
      <description>Al pulsar el objeto especificado durante un segundo, se ejecuta una función con su código personalizado. Esta acción se puede utilizar para ver un menú de dicho objeto.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Long_Press_Event</ADOBE_PIP_ID>
      <code><![CDATA[
/* Pulsación larga
Al pulsar el objeto durante más de un segundo, se ejecuta una función que contiene su código personalizado. Puede usar esta acción para mostrar un menú contextual para dicho objeto.

Instrucciones:
1. Añada el código personalizado en una nueva línea después de las líneas que dicen "// Inicio del código personalizado" más abajo.
*/

var fl_PressTimer:Timer = new Timer(1000);
fl_PressTimer.addEventListener(TimerEvent.TIMER, fl_PressTimerHandler);

function fl_PressTimerHandler(event:TimerEvent):void
{
	// Inicio del código personalizado
	// Este código de ejemplo duplica el tamaño del objeto
	instance_name_here.scaleX = 2;
	instance_name_here.scaleY = 2;
	// Fin del código personalizado
}

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

instance_name_here.addEventListener(TouchEvent.TOUCH_BEGIN, fl_PressBeginHandler);
instance_name_here.addEventListener(TouchEvent.TOUCH_END, fl_PressEndHandler);
instance_name_here.addEventListener(TouchEvent.TOUCH_OUT, fl_PressEndHandler);
instance_name_here.addEventListener(TouchEvent.TOUCH_ROLL_OUT, fl_PressEndHandler);

function fl_PressBeginHandler(event:TouchEvent):void
{
	fl_PressTimer.start();
}

function fl_PressEndHandler(event:TouchEvent):void
{
	fl_PressTimer.stop();
	// Inicio del código personalizado
	// Este código de ejemplo restablece el objeto en su tamaño original
	instance_name_here.scaleX = 1;
	instance_name_here.scaleY = 1;
	// Fin del código personalizado
}
]]></code>
    </snippet>
    </category>
   	<category title="Eventos de gestos para móviles"
	  	isBranch="true"
	  	expanded="false"
	  	description="Código para gestionar entrada de gestos en dispositivos móviles">
	<snippet isBranch="false">
      <title>Evento de toque con dos dedos</title>
      <description>Al tocar el escenario con dos dedos, se ejecuta una función que contiene el código personalizado.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Two_Finger_Tap_Event</ADOBE_PIP_ID>
      <code><![CDATA[
/* Evento de toque con dos dedos
Al tocar el escenario con dos dedos, se ejecuta una función a la que puede añadir su código personalizado.

Instrucciones:
1. Añada el código personalizado en una nueva línea después de la línea que dice "// Inicio del código personalizado" más abajo.
El código se ejecutará cuando se toque el escenario con dos dedos.
*/

Multitouch.inputMode = MultitouchInputMode.GESTURE;

stage.addEventListener(GestureEvent.GESTURE_TWO_FINGER_TAP, fl_TwoFingerTapHandler);

function fl_TwoFingerTapHandler(event:GestureEvent):void
{
	// Inicio del código personalizado
	// Este código de ejemplo amplía el sujeto cada vez que se produce un evento de toque con dos dedos
	// El objeto debe ser un fondo con el tamaño del escenario
	instance_name_here.scaleX *= 2;
	instance_name_here.scaleY *= 2;
	// Fin del código personalizado
}
]]></code>
    </snippet>
	<snippet isBranch="false">
      <title>Evento de pellizco para zoom</title>
      <description>Si pellizca en el escenario, acercará el objeto seleccionado.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Pinch_to_Zoom_Event</ADOBE_PIP_ID>
      <code><![CDATA[
/* Evento de pellizco para zoom
Si pellizca en el escenario, acercará el objeto seleccionado.

Instrucciones:
1. Los puntos de registro y de transformación del símbolo deben estar en el centro.
2. El símbolo debe ser el fondo de la aplicación y tener el mismo tamaño que el escenario.
*/

Multitouch.inputMode = MultitouchInputMode.GESTURE;

stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM, fl_ZoomHandler);

function fl_ZoomHandler(event:TransformGestureEvent):void
{
	instance_name_here.scaleX *= event.scaleX;
	instance_name_here.scaleY *= event.scaleY;
}
]]></code>
    </snippet>
    <snippet isBranch="false">
      <title>Evento de desplazamiento</title>
      <description>Desplaza el objeto seleccionado en el escenario. El objeto que se desplaza suele ser más grande que el área visible.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Pan_Event</ADOBE_PIP_ID>
      <code><![CDATA[
/* Evento de desplazamiento
Desplaza el objeto seleccionado en el escenario. El objeto que se desplaza suele ser más grande que el área visible.

Instrucciones:
1. Para desplazar todos los objetos en el escenario, colóquelos en un único clip de película contenedor y aplique este fragmento de código a dicho clip.
*/

Multitouch.inputMode = MultitouchInputMode.GESTURE;

instance_name_here.addEventListener(TransformGestureEvent.GESTURE_PAN, fl_PanHandler);

function fl_PanHandler(event:TransformGestureEvent):void
{
	event.currentTarget.x += event.offsetX;
	event.currentTarget.y += event.offsetY;
}
]]></code>
    </snippet>
	<snippet isBranch="false">
      <title>Evento de rotación</title>
      <description>Gira el objeto seleccionado, normalmente moviendo dos dedos en el sentido horario o antihorario.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Rotate_Event</ADOBE_PIP_ID>
      <code><![CDATA[
/* Evento de rotación
Gira el objeto seleccionado, normalmente moviendo dos dedos en el sentido horario o antihorario.

Instrucciones:
1. Los puntos de transformación y de registro del símbolo deben estar en el centro.
*/

Multitouch.inputMode = MultitouchInputMode.GESTURE;

instance_name_here.addEventListener(TransformGestureEvent.GESTURE_ROTATE, fl_RotateHandler);

function fl_RotateHandler(event:TransformGestureEvent):void
{
	event.target.rotation += event.rotation;
}
]]></code>
    </snippet>
	<snippet isBranch="false">
      <title>Evento de barrido</title>
      <description>Un gesto de barrido en el escenario ejecuta una función con su código personalizado. Este evento se puede utilizar para desplazarse por texto en un campo TextField o para cambiar estados de la aplicación.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="20"
			min="1"
			max="100" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Swipe_Event</ADOBE_PIP_ID>
      <code><![CDATA[
/* Evento de barrido
Al aplicar un gesto de barrido en el escenario, se ejecuta una función con su código personalizado. Puede usar este evento para desplazar texto en un objeto TextField o para cambiar estados de la aplicación.

Instrucciones:
1. Añada el código personalizado en una nueva línea después de las líneas que dicen "// Inicio del código personalizado" más abajo.
*/

Multitouch.inputMode = MultitouchInputMode.GESTURE;

stage.addEventListener (TransformGestureEvent.GESTURE_SWIPE, fl_SwipeHandler);

function fl_SwipeHandler(event:TransformGestureEvent):void
{
	switch(event.offsetX)
	{
		// barrido a la derecha
		case 1:
		{
			// Inicio del código personalizado
			// Este código de ejemplo mueve el objeto seleccionado 20 píxeles a la derecha.
			instance_name_here.x += 20;
			// Fin del código personalizado
			break;
		}
		// barrido a la izquierda
		case -1:
		{
			// Inicio del código personalizado
			// Este código de ejemplo mueve el objeto seleccionado 20 píxeles a la izquierda.
			instance_name_here.x -= 20;
			// Fin del código personalizado
			break;
		}
	}

	switch(event.offsetY)
	{
		// barrido hacia abajo
		case 1:
		{
			// Inicio del código personalizado
			// Este código de ejemplo mueve el objeto seleccionado 20 píxeles hacia abajo.
			instance_name_here.y += 20;
			// Fin del código personalizado
			break;
		}
		// barrido hacia arriba
		case -1:
		{
			// Inicio del código personalizado
			// Este código de ejemplo mueve el objeto seleccionado 20 hacia arriba.
			instance_name_here.y -= 20;
			// Fin del código personalizado
			break;
		}
	}
}
]]></code>
    </snippet>
  </category>
    <category title="Acciones móviles"
    			isBranch="true"
    			expanded="false"
    			description="Código para interacciones habituales en dispositivos móviles">
    <snippet isBranch="false">
      <title>Barrido para ir al fotograma siguiente/anterior y detener</title>
      <description>Un gesto de barrido en el escenario mueve la cabeza lectora al fotograma anterior/siguiente en la línea de tiempo y detiene la cabeza lectora.</description>
      <requiresSymbol>false</requiresSymbol>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Swipe_to_Go_to_Next_Previous_Frame_and_Stop</ADOBE_PIP_ID>
      <code><![CDATA[
/* Barrido para ir al fotograma siguiente/anterior y detener
Al aplicar el gesto de barrido en el escenario, la cabeza lectora se mueve al fotograma siguiente/anterior y detiene el vídeo.
*/

Multitouch.inputMode = MultitouchInputMode.GESTURE;

stage.addEventListener (TransformGestureEvent.GESTURE_SWIPE, fl_SwipeToGoToNextPreviousFrame);

function fl_SwipeToGoToNextPreviousFrame(event:TransformGestureEvent):void
{
	if(event.offsetX == 1)
	{
		// barrido a la derecha
		prevFrame();
	}
	else if(event.offsetX == -1)
	{
		// barrido a la izquierda
		nextFrame();
	}
}
]]></code>
    </snippet>
    <snippet isBranch="false">
      <title>Barrido para ir a la escena siguiente/anterior y reproducir</title>
      <description>Un gesto de barrido en el escenario mueve la cabeza lectora a la escena anterior/siguiente en la línea de tiempo y continúa la reproducción en dicha escena.</description>
      <requiresSymbol>false</requiresSymbol>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Swipe_to_Go_to_Next_Previous_Scene_and_Play</ADOBE_PIP_ID>
      <code><![CDATA[
/* Barrido para ir a la escena siguiente/anterior y reproducir
Al aplicar un gesto de barrido en el escenario, la cabeza lectora se mueve a la escena siguiente/anterior en la línea de tiempo y continúa la reproducción en esa escena.
*/

Multitouch.inputMode = MultitouchInputMode.GESTURE;

stage.addEventListener (TransformGestureEvent.GESTURE_SWIPE, fl_SwipeToGoToNextPreviousScene);

function fl_SwipeToGoToNextPreviousScene(event:TransformGestureEvent):void
{
	if(event.offsetX == 1)
	{
		// barrido a la derecha
		prevScene();
	}
	else if(event.offsetX == -1)
	{
		// barrido a la izquierda
		nextScene();
	}
}
]]></code>
    </snippet>
    <snippet isBranch="false">
      <title>Mover con acelerómetro</title>
      <description>Permite mover el objeto inclinando el dispositivo móvil.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="hotTextNumber"
			text="30"
			min="1"
			max="100" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Move_with_Accelerometer</ADOBE_PIP_ID>
      <code><![CDATA[
/* Mover con acelerómetro
Permite mover el objeto inclinando el dispositivo móvil.

Instrucciones:
1. Para aumentar o reducir la cantidad de movimiento, reemplace el número 30 siguiente por el número de píxeles que quiere que se mueva la instancia cuando se incline el dispositivo.
Observe que el número 30 aparece dos veces en el código.
*/

var fl_Accelerometer:Accelerometer = new Accelerometer();
fl_Accelerometer.addEventListener(AccelerometerEvent.UPDATE, fl_AccelerometerUpdateHandler);

function fl_AccelerometerUpdateHandler(event:AccelerometerEvent):void
{
	instance_name_here.x -= event.accelerationX*30;
	instance_name_here.y += event.accelerationY*30;
}
]]></code>
    </snippet>
	<snippet isBranch="false">
      <title>Evento de desactivación/activación</title>
      <description>Para ahorrar uso de CPU, anule la aplicación con el evento Deactivate y reanúdela con el evento Activate.</description>
      <requiresSymbol>false</requiresSymbol>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Conserve_CPU_on_Deactivate_Activate</ADOBE_PIP_ID>
      <code><![CDATA[
/* Evento de desactivación/activación
Ahorre uso de CPU y carga de batería suspendiendo los procesos que más recursos consumen, como los eventos ENTER_FRAME y TIMER, cada vez que la aplicación no esté seleccionada.

Instrucciones:
1. Inicie los temporizadores y detectores de eventos de "fl_Activate".
2. Detenga los temporizadores y elimine detectores de eventos en "fl_Deactivate".
*/

stage.addEventListener(Event.ACTIVATE, fl_Activate);
stage.addEventListener(Event.DEACTIVATE, fl_Deactivate);

function fl_Activate(event:Event):void
{
	// Inicie los temporizadores y añada detectores de eventos aquí.
}

function fl_Deactivate(event:Event):void
{
	// Detenga los temporizadores y elimine detectores de eventos aquí.
}
]]></code>
    </snippet>
    <snippet isBranch="false">
	  <title>Evento de pulsación de tecla de menú</title>
	  <description>Ejecuta el código cuando se pulsa la tecla Menú del dispositivo.</description>
	  <minASVersion>3</minASVersion>
	  <ADOBE_PIP_ID>Menu_Key_Pressed_Event</ADOBE_PIP_ID>
	  <code><![CDATA[
/* Evento de pulsación de tecla de menú
Ejecuta el código cuando se pulsa la tecla Menú del dispositivo. Resulta útil para visualizar un menú de opciones.
Consulte la muestra Menú de opciones que encontrará en las plantillas.

Instrucciones:
1. Añada el código para visualizar un menú de opciones tras la línea que dice "// Inicio del código personalizado".
2. Elimine el código de ejemplo con un rectángulo gris.
*/

stage.addEventListener(KeyboardEvent.KEY_UP, fl_OptionsMenuHandler);

function fl_OptionsMenuHandler(event:KeyboardEvent):void
{
	if( (event.keyCode == 95) || (event.keyCode == Keyboard.MENU) )
	{
		// Inicio del código personalizado
		// Este código de ejemplo se muestra con un rectángulo gris.
		var grayRectangle:Sprite = new Sprite();
		grayRectangle.graphics.lineStyle(3, 0x888888, 0.95);
		grayRectangle.graphics.beginFill(0xececec, 0.95);
		grayRectangle.graphics.drawRect(1, stage.stageHeight - 100, stage.stageWidth-3, 100);
		grayRectangle.graphics.endFill();
		addChild(grayRectangle);
		// Fin del código personalizado
	}
}
]]></code>
	</snippet>
  </category>
  <category title="AIR para móvil"
	  			isBranch="true"
	  			expanded="false"
	  			description="Código para acciones móviles habituales disponibles con AIR.">
  	<snippet isBranch="false">
      <title>Mostrar geolocalización</title>
      <description>Mostrar latitud y longitud en un objeto TextField.</description>
      <requiresSymbol>false</requiresSymbol>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Show_Geolocation</ADOBE_PIP_ID>
      <code><![CDATA[
/* Mostrar geolocalización
Mostrar latitud y longitud en un objeto TextField.

Instrucciones:
1. Active los permisos "ACCESS_FINE_LOCATION" y "ACCESS_COARSE_LOCATION" en Archivo -> Configuración de AIR for Android.
*/

var fl_GeolocationDisplay:TextField = new TextField();
fl_GeolocationDisplay.autoSize = TextFieldAutoSize.LEFT;
fl_GeolocationDisplay.text = "La geolocalización no responde. Compruebe la configuración de ubicación del dispositivo.";
addChild(fl_GeolocationDisplay);

if(!Geolocation.isSupported)
{
	fl_GeolocationDisplay.text = "La geolocalización no se admite en este dispositivo.";
}
else
{
	var fl_Geolocation:Geolocation = new Geolocation();
	fl_Geolocation.setRequestedUpdateInterval(1000);
	fl_Geolocation.addEventListener(GeolocationEvent.UPDATE, fl_UpdateGeolocation);
}

function fl_UpdateGeolocation(event:GeolocationEvent):void
{
	fl_GeolocationDisplay.text = "latitud: ";
	fl_GeolocationDisplay.appendText(event.latitude.toString() + "\n");
	fl_GeolocationDisplay.appendText("longitud: ");
	fl_GeolocationDisplay.appendText(event.longitude.toString() + "\n");
	fl_GeolocationDisplay.appendText("altitud: ");
	fl_GeolocationDisplay.appendText(event.altitude.toString() + "\n");
}
]]></code>
    </snippet>
	<snippet isBranch="false">
      <title>Reorientar objeto al girar el dispositivo</title>
      <description>Reorienta el objeto especificado cuando se gira el dispositivo.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>ReOrient_Objects_on_Device_Rotation</ADOBE_PIP_ID>
      <code><![CDATA[
/* Reorientar Objetos al girar el dispositivo
Reorientar objeto(s) al girar el dispositivo.
Los objetos específicos se pueden orientar de forma distinta con respecto al resto de la aplicación.
Se puede utilizar para que un objeto permanezca invariable con la misma rotación o lo haga de forma distinta que la aplicación.

Instrucciones:
1. Active la opción "Orientación automática" en Archivo -> Configuración de AIR for Android.
*/

var fl_initialRotation = instance_name_here.rotation;	// Guarda el valor inicial de rotación

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, fl_OrientationChange);

function fl_OrientationChange(event:StageOrientationEvent):void
{
	switch (stage.deviceOrientation)
	{
		case StageOrientation.DEFAULT:
		{
			// Reorienta objetos de visualización con la orientación predeterminada (derecha arriba).
			instance_name_here.rotation = fl_initialRotation;	// Restaura el valor inicial de rotación
			break;
		}
		case StageOrientation.ROTATED_RIGHT:
		{
			// Reorientar objetos de visualización a partir de la orientación derecha.
			instance_name_here.rotation += 90;
			break;
		}
		case StageOrientation.ROTATED_LEFT:
		{
			// Reorientar objetos de visualización a partir de la orientación izquierda.
			instance_name_here.rotation -= 90;
			break;
		}
		case StageOrientation.UPSIDE_DOWN:
		{
			// Reorientar objetos de visualización a partir de la orientación invertida.
			instance_name_here.rotation += 180;
			break;
		}
	}
}
]]></code>
    </snippet>
  </category>
  <category title="AIR"
	  			isBranch="true"
	  			expanded="false"
	  			description="Código para aplicaciones de AIR">
    <snippet isBranch="false">
      <title>Hacer clic para cerrar la ventana de AIR</title>
      <description>Al hacer clic en el objeto especificado, se sale de la aplicación de AIR.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Click_to_Close_AIR_Window</ADOBE_PIP_ID>
      <code><![CDATA[
/* Hacer clic para cerrar la ventana de AIR
Al hacer clic en el objeto especificado, se sale de la aplicación de AIR.
*/
instance_name_here.addEventListener(MouseEvent.CLICK, fl_CloseWindow);

function fl_CloseWindow(event:Event):void
{
	stage.nativeWindow.close();
}
]]></code>
    </snippet>
    <snippet isBranch="false">
      <title>Hacer clic para minimizar la ventana de AIR</title>
      <description>Al hacer clic en el objeto especificado, se minimiza la aplicación de AIR.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Click_to_Minimize_AIR_Window</ADOBE_PIP_ID>
      <code><![CDATA[
/* Hacer clic para minimizar la ventana de AIR
Al hacer clic en el objeto especificado, se minimiza la aplicación de AIR.
*/
instance_name_here.addEventListener(MouseEvent.CLICK, fl_MinimizeWindow);

function fl_MinimizeWindow(event:Event):void
{
	stage.nativeWindow.minimize();
}

]]></code>
    </snippet>
    <snippet isBranch="false">
      <title>Hacer clic para maximizar o restaurar la ventana de AIR</title>
      <description>Al hacer clic en el objeto especificado, se maximiza la aplicación de AIR o se restaura la ventana en su tamaño anterior si ya estuviera maximizada.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Click_to_Maximize_or_Restore_AIR_Window</ADOBE_PIP_ID>
      <code><![CDATA[
/* Hacer clic para maximizar o restaurar la ventana de AIR
Al hacer clic en el objeto especificado, se maximiza la aplicación de AIR o se restaura la ventana en su tamaño anterior si ya estuviera maximizada.
*/
instance_name_here.addEventListener(MouseEvent.MOUSE_DOWN, fl_MaximizeWindow);

function fl_MaximizeWindow(event:Event):void
{
	if(stage.nativeWindow.displayState != NativeWindowDisplayState.MAXIMIZED)
	{
		stage.nativeWindow.maximize();
	}
	else
	{
		stage.nativeWindow.restore();
	}
}

]]></code>
    </snippet>
    <snippet isBranch="false">
      <title>Arrastrar para mover la ventana de AIR</title>
      <description>Permite que toda la ventana de la aplicación de AIR pueda moverse haciendo clic y arrastrando el objeto especificado.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Drag_to_Move_AIR_Window</ADOBE_PIP_ID>
      <code><![CDATA[
/* Arrastrar para mover la ventana de AIR
Permite que toda la ventana de la aplicación de AIR pueda moverse haciendo clic y arrastrando el objeto especificado.

Instrucciones:
1. El símbolo suele ser la barra de título de la aplicación.
*/
instance_name_here.addEventListener(MouseEvent.MOUSE_DOWN, fl_MoveWindow);

function fl_MoveWindow(event:Event):void
{
	stage.nativeWindow.startMove();
}
]]></code>
    </snippet>
    <snippet isBranch="false">
      <title>Hacer clic para leer desde archivo de texto</title>
      <description>Al hacer clic en el objeto especificado, se pide al usuario que seleccione un archivo que después se mostrará en el panel Salida.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Click_to_Read_from_a_Text_File</ADOBE_PIP_ID>
      <code><![CDATA[
/* Hacer clic para leer desde archivo de texto
Si hace clic en la instancia del símbolo especificada, se le pedirá al usuario que seleccione un archivo que después se mostrará en el panel Salida.

Instrucciones:
1. Para utilizar los datos leídos desde el archivo, use la variable fileData en la función fl_FileReadHandler.
*/

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

instance_name_here.addEventListener(MouseEvent.CLICK, fl_OpenFile);

var fl_OpenFileStream:FileStream = new FileStream();	// Se utiliza FileStream para leer desde el archivo
var fl_OpenFileChooser:File = File.documentsDirectory;	// La ubicación predeterminada es el directorio de documentos
fl_OpenFileChooser.addEventListener(Event.SELECT, fl_FileOpenSelected);

// Función principal para abrir un archivo
function fl_OpenFile(event:MouseEvent):void
{
	fl_OpenFileChooser.browseForOpen("Seleccione un archivo de texto.");
}

// Abre un objeto FileStream para leer el archivo
function fl_FileOpenSelected(event:Event):void
{
	fl_OpenFileChooser = event.target as File;
	fl_OpenFileStream = new FileStream();
	fl_OpenFileStream.addEventListener(Event.COMPLETE, fl_FileReadHandler);

	fl_OpenFileStream.openAsync(fl_OpenFileChooser, FileMode.READ);
}

// Escribe datos desde el archivo en el panel Salida
function fl_FileReadHandler(event:Event):void
{
	var fileData:String = fl_OpenFileStream.readMultiByte(fl_OpenFileStream.bytesAvailable, File.systemCharset);
	// Los datos cargados desde el archivo ahora se pueden usar en la variable fileData.
	// Este código de ejemplo muestra datos del archivo en el panel Salida.
	trace(fileData);
	fl_OpenFileStream.close();
}
]]></code>
    </snippet>
    <snippet isBranch="false">
      <title>Hacer clic para escribir en un archivo de texto</title>
      <description>Al hacer clic en el objeto especificado, se pide al usuario que seleccione una ubicación y nombre de archivo y que guarde una cadena de texto.</description>
      <requiresSymbol>true</requiresSymbol>
	  <placeholders>
		<placeholder
			type="stageInstance"
			text="instance_name_here" />
		<placeholder
			type="editableText"
			text="Texto para guardar en el archivo." />
	  </placeholders>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Click_to_Write_to_a_Text_File</ADOBE_PIP_ID>
      <code><![CDATA[
/* Hacer clic para escribir en un archivo de texto
Al hacer clic en el objeto especificado, se pide al usuario que seleccione una ubicación y nombre de archivo y que guarde una cadena de texto.

Instrucciones:
1. Para definir los datos que se guardan en el archivo, cambie "Texto para guardar en el archivo." por los datos que desee guardar.
*/

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

instance_name_here.addEventListener(MouseEvent.CLICK, fl_SaveFile);

var fl_FileDataToSave:String = "Texto para guardar en el archivo.";

var fl_SaveFileStream:FileStream = new FileStream();	// Se utiliza FileStream para escribir en el archivo

var fl_SaveFileChooser:File = File.documentsDirectory;	// La ubicación predeterminada es el directorio de documentos
fl_SaveFileChooser.addEventListener(Event.SELECT, fl_WriteFileHandler);

// Abre un cuadro de diálogo Guardar como para que el usuario pueda especificar un nombre de archivo
function fl_SaveFile(event:MouseEvent):void
{
	fl_SaveFileChooser.browseForSave("Guardar como:");
}

// Escribe datos en la variable fl_FileDataToSave
function fl_WriteFileHandler(event:Event):void
{
	fl_SaveFileChooser = event.target as File;
	fl_SaveFileStream = new FileStream();

	fl_SaveFileStream.openAsync(fl_SaveFileChooser, FileMode.WRITE);

	fl_SaveFileStream.writeMultiByte(fl_FileDataToSave, File.systemCharset);

	fl_SaveFileStream.close();
}
]]></code>
    </snippet>
	<snippet isBranch="false">
      <title>Guardar y cargar preferencias</title>
      <description>Guarda los datos en almacenamiento local y los carga en el siguiente inicio.</description>
      <requiresSymbol>false</requiresSymbol>
      <minASVersion>3</minASVersion>
      <ADOBE_PIP_ID>Save_and_Load_Preferences</ADOBE_PIP_ID>
      <code><![CDATA[
/* Guardar y cargar preferencias
Guarda los datos en almacenamiento local y los carga en el siguiente inicio.

La función "fl_SavePreference" guardará las preferencias.
La función "fl_LoadPreference" cargará las preferencias.
Las preferencias de este ejemplo incluyen el tamaño y la posición de la ventana de la aplicación, así como una cadena de texto "Hello World".

Instrucciones:
1. Aplique el fragmento de código del fotograma 1 para garantizar que se cargan las preferencias.
2. Para guardar las preferencias al salir, inserte el fragmento de código "Hacer clic para cerrar ventana de AIR" y coloque "fl_SavePreferences();" dentro de la función "fl_CloseWindow()".
3. Los valores adicionales se pueden guardar en "fl_SavePreference" mediante "fs.writeObject."
4. Los valores adicionales se pueden recuperar en "fl_LoadPreferences" usando "fs.readObject" en el mismo orden que "fs.writeObject".
*/

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

// Define el nombre del archivo en el medio de almacenamiento local en el que se escribirán las preferencias
var fl_ConfigFile:File = new File("app-storage:/AppConfig.cfg");
// En Windows 7: C:\Usuarios\<nombredeusuario>\AppData\Roaming\<Nombre de aplicación de AIR>\Local Store\AppConfig.cfg
// En Windows XP: C:\Documents and Settings\<nombredeusuario>\Datos de programa\<Nombre de aplicación de AIR>\Local Store\AppConfig.cfg
// En Mac: /Usuarios/<nombredeusuario>/Librería/Preferences/<Nombre de aplicación de AIR>/Local Store/AppConfig.cfg

// Crea TextField para mostrar la cadena guardada en las preferencias
var fl_AppPreference = new TextField();
addChild(fl_AppPreference);

fl_LoadPreferences();	// Llamada para cargar las preferencias
fl_SavePreferences();	// Llamada para guardar las preferencias (mover esto donde se quieran guardar las preferencias)

// Escribir preferencias en el archivo de configuración
function fl_SavePreferences():void
{
	// Abrir archivo de preferencias para escritura
	var fs:FileStream = new FileStream();
	fs.open(fl_ConfigFile, FileMode.UPDATE);


	// Guardar tamaño y posición de la ventana
	fs.writeObject(stage.nativeWindow.bounds);

	// Guardar la cadena "Hello World"
	fs.writeObject("Hello World");

	// Puede añadir más valores para guardar aquí

	fs.close();
}

// Leer preferencias del archivo de configuración
function fl_LoadPreferences():void
{
	if (fl_ConfigFile.exists)
	{
		// Abrir archivo de preferencias para lectura
		var fs:FileStream = new FileStream();
		fs.open(fl_ConfigFile, FileMode.READ);

		// Carga y restaura el tamaño y la posición del escenario
		var savedBounds:Object = fs.readObject();
		stage.nativeWindow.bounds = new Rectangle(savedBounds.x, savedBounds.y, savedBounds.width, savedBounds.height);

		var dataString:String = String(fs.readObject());	// Carga cadena de texto desde el archivo de preferencias
		fl_AppPreference.text = dataString;					// Muestra el texto cargado en el campo de texto

		fs.close();
	}
}
]]></code>
    </snippet>
  </category>
</snippets>
</CodeSnippets>
