<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CODIGO.actionscript &#187; Aportes</title>
	<atom:link href="http://www.codigoactionscript.org/category/aportes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codigoactionscript.org</link>
	<description>Blog de programación en ActionScript. Tips, tutoriales, ejemplos de Adobe Flash, Flex y AIR</description>
	<lastBuildDate>Mon, 31 May 2010 14:58:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Curso de Adobe AIR, online y gratuito, en Video2brain</title>
		<link>http://www.codigoactionscript.org/curso-de-adobe-air-online-y-gratuito-en-video2brain/</link>
		<comments>http://www.codigoactionscript.org/curso-de-adobe-air-online-y-gratuito-en-video2brain/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 14:35:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Aportes]]></category>
		<category><![CDATA[Cursos]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Publicidad]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.codigoactionscript.org/?p=517</guid>
		<description><![CDATA[<p>Para quienes no lo conozcan aun, Video2brain es Centro de formación autorizado de Adobe que ofrece cursos online en vídeo de calidad de numerosas aplicaciones de Adobe. </p>
<p>Actualmente tienen disponible un curso de Adobe AIR totalmente gratuito a cargo de Jorge Glez. Villanueva, responsable de, entre otros, los cursos Adobe Flash CS3 y Adobe Dreamweaver CS3. Este vídeo-training es una introducción en el uso de AIR, para aprender a programar aplicaciones
de escritorio usando los programas de Adobe, Flex y Flash.

Índice del curso:</p>

Descripción del runtime AIR. Instalación de la aplicación
Creación de [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/69/' rel='bookmark' title='Permanent Link: Tutoriales de Adobe Flex y Apollo para principiantes'>Tutoriales de Adobe Flex y Apollo para principiantes</a></li>
<li><a href='http://www.codigoactionscript.org/adobe-en-vivo-2009-en-su-version-online/' rel='bookmark' title='Permanent Link: Adobe en Vivo 2009 en su versión onLine'>Adobe en Vivo 2009 en su versión onLine</a></li>
<li><a href='http://www.codigoactionscript.org/videos-online-de-las-sesiones-del-adobe-max-2009/' rel='bookmark' title='Permanent Link: Videos online de las sesiones del Adobe MAX 2009'>Videos online de las sesiones del Adobe MAX 2009</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Para quienes no lo conozcan aun, <a href="http://www.video2brain.com/es/">Video2brain</a> es Centro de formación autorizado de Adobe que ofrece cursos online en vídeo de calidad de numerosas aplicaciones de Adobe. </p>
<p>Actualmente tienen disponible un curso de <a href="http://www.video2brain.com/es/products-14.htm">Adobe AIR</a> totalmente gratuito a cargo de <a href="http://www.video2brain.com/es/trainer-12-p14.htm">Jorge Glez. Villanueva</a>, responsable de, entre otros, los cursos Adobe Flash CS3 y Adobe Dreamweaver CS3. Este vídeo-training es una introducción en el uso de AIR, para aprender a programar aplicaciones<br />
de escritorio usando los programas de Adobe, Flex y Flash.<br />
<div align="center"><a href="http://www.video2brain.com/es/products-14.htm"><img src="http://www.video2brain.com/es/images_dynam/product/thumbs/AIR_online.jpg" alt="" /></a></div><br />
<strong>Índice del curso:</strong></p>
<ul>
<li>Descripción del runtime AIR. Instalación de la aplicación</li>
<li>Creación de un ejemplo de xml cargado a través de PHP en un DataGrid que corra como aplicación de escritorio</li>
<li>Creación de un ejemplo simple de drag and drop sobre el escritorio</li>
<li>Creación de una aplicación AIR basada en ActionScript 3. Control de la ventana de la aplicación</li>
<li>Uso de la API de control de ficheros de ActionScript/AIR: crear, copiar, borrar y seleccionar archivos</li>
<li>Uso del drag and drop de AIR. Aplicación que permite arrastrar imágenes al escritorio</li>
<li>Creación de aplicaciones AIR: personalización del icono de las aplicaciones. Uso de certificados</li>
</ul>
<p><strong>Enlace del curso:</strong></p>
<ul>
<li><a href="http://www.video2brain.com/es/products-14.htm">http://www.video2brain.com/es/products-14.htm</a></li>
</ul>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fcurso-de-adobe-air-online-y-gratuito-en-video2brain%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Curso%20de%20Adobe%20AIR%2C%20online%20y%20gratuito%2C%20en%20Video2brain%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fcurso-de-adobe-air-online-y-gratuito-en-video2brain%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fcurso-de-adobe-air-online-y-gratuito-en-video2brain%2F&amp;t=Curso%20de%20Adobe%20AIR%2C%20online%20y%20gratuito%2C%20en%20Video2brain" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fcurso-de-adobe-air-online-y-gratuito-en-video2brain%2F&amp;title=Curso%20de%20Adobe%20AIR%2C%20online%20y%20gratuito%2C%20en%20Video2brain&amp;annotation=Para%20quienes%20no%20lo%20conozcan%20aun%2C%20Video2brain%20es%20Centro%20de%20formaci%C3%B3n%20autorizado%20de%20Adobe%20que%20ofrece%20cursos%20online%20en%20v%C3%ADdeo%20de%20calidad%20de%20numerosas%20aplicaciones%20de%20Adobe.%20%0D%0A%0D%0AActualmente%20tienen%20disponible%20un%20curso%20de%20Adobe%20AIR%20totalmente%20gratuito%20a%20c" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fcurso-de-adobe-air-online-y-gratuito-en-video2brain%2F&amp;title=Curso%20de%20Adobe%20AIR%2C%20online%20y%20gratuito%2C%20en%20Video2brain&amp;notes=Para%20quienes%20no%20lo%20conozcan%20aun%2C%20Video2brain%20es%20Centro%20de%20formaci%C3%B3n%20autorizado%20de%20Adobe%20que%20ofrece%20cursos%20online%20en%20v%C3%ADdeo%20de%20calidad%20de%20numerosas%20aplicaciones%20de%20Adobe.%20%0D%0A%0D%0AActualmente%20tienen%20disponible%20un%20curso%20de%20Adobe%20AIR%20totalmente%20gratuito%20a%20c" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fcurso-de-adobe-air-online-y-gratuito-en-video2brain%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Curso%20de%20Adobe%20AIR%2C%20online%20y%20gratuito%2C%20en%20Video2brain&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fcurso-de-adobe-air-online-y-gratuito-en-video2brain%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fcurso-de-adobe-air-online-y-gratuito-en-video2brain%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/69/' rel='bookmark' title='Permanent Link: Tutoriales de Adobe Flex y Apollo para principiantes'>Tutoriales de Adobe Flex y Apollo para principiantes</a></li>
<li><a href='http://www.codigoactionscript.org/adobe-en-vivo-2009-en-su-version-online/' rel='bookmark' title='Permanent Link: Adobe en Vivo 2009 en su versión onLine'>Adobe en Vivo 2009 en su versión onLine</a></li>
<li><a href='http://www.codigoactionscript.org/videos-online-de-las-sesiones-del-adobe-max-2009/' rel='bookmark' title='Permanent Link: Videos online de las sesiones del Adobe MAX 2009'>Videos online de las sesiones del Adobe MAX 2009</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/curso-de-adobe-air-online-y-gratuito-en-video2brain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADM, aplicación AIR para editar archivos de configuración</title>
		<link>http://www.codigoactionscript.org/adm-aplicacion-air-para-editar-archivos-de-configuracion/</link>
		<comments>http://www.codigoactionscript.org/adm-aplicacion-air-para-editar-archivos-de-configuracion/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 03:46:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Aportes]]></category>
		<category><![CDATA[aplicación]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.codigoactionscript.org/?p=471</guid>
		<description><![CDATA[<p>En mi tip anterior escribí una descripción del archivo de configuración de las aplicaciones AIR. Este archivo de configuración lo deberemos editar para definir las características de nuestra aplicación.</p>
<p>Navegando por internet encontré una aplicación creada por David Deraedt que me pareció muy útil. Se trata de ADM (AIR Application Descriptor Manager), una aplicación AIR que nos permite abrir y editar todos los parámetros de un archivo de configuración.</p>
<p>Es una aplicación gratuita que la podemos descargar desde la página del autor:</p>

Descargar ADM

<p>Una vez instalada la aplicación podremos abrir cualquier archivo .XML [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/listar-archivos-de-un-directorio-web-con-php-y-xml/' rel='bookmark' title='Permanent Link: Listar archivos de un directorio web con PHP y XML'>Listar archivos de un directorio web con PHP y XML</a></li>
<li><a href='http://www.codigoactionscript.org/impedir-la-visualizacion-de-archivos-swf-individualmente/' rel='bookmark' title='Permanent Link: Impedir la visualización de archivos SWF individualmente'>Impedir la visualización de archivos SWF individualmente</a></li>
<li><a href='http://www.codigoactionscript.org/editar-cadenas-de-texto-utilizando-expresiones-regulares/' rel='bookmark' title='Permanent Link: Editar cadenas de texto utilizando expresiones regulares'>Editar cadenas de texto utilizando expresiones regulares</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>En mi <a href="http://www.codigoactionscript.org/archivo-de-configuracion-de-air">tip anterior</a> escribí una descripción del archivo de configuración de las aplicaciones <a href="http://www.cristalab.com/tips/tags/php">AIR</a>. Este archivo de configuración lo deberemos editar para definir las características de nuestra aplicación.</p>
<p>Navegando por internet encontré una aplicación creada por <a href="http://www.dehats.com">David Deraedt</a> que me pareció muy útil. Se trata de <strong>ADM (AIR Application Descriptor Manager)</strong>, una aplicación AIR que nos permite <strong>abrir y editar todos los parámetros de un archivo de configuración</strong>.</p>
<p>Es una aplicación gratuita que la podemos descargar desde la <a href="http://www.dehats.com/drupal/?qnode/55">página del autor</a>:</p>
<ul>
<li><a href="http://www.dehats.com/projets/adm/ADM.air">Descargar ADM</a></li>
</ul>
<p>Una vez instalada la aplicación podremos abrir cualquier archivo .XML de configuración de nuestros proyectos AIR, y podremos introducir los parámetros de una manera más cómoda:</p>
<div align="center"><img src="http://www.cristalab.com/images/tips/air/adm/cap_0012.png" alt="" /></div>
<p>Una característica que especialmente me gustó es que te permite generar de forma automática todos los tamaños necesarios para los iconos de la aplicación desde un mismo archivo de imagen:</p>
<div align="center"><img src="http://www.cristalab.com/images/tips/air/adm/cap_0022.png" alt="" /></div>
<p>La página web del autor también tenemos disponible un vídeo para ver una demostración de la aplicación:</p>
<div align="center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/sgW7eysWNWY&amp;hl=es&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/sgW7eysWNWY&amp;hl=es&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>En definitiva, una aplicación muy práctica y recomendable para los que generan habitualmente aplicaciones AIR.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fadm-aplicacion-air-para-editar-archivos-de-configuracion%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=ADM%2C%20aplicaci%C3%B3n%20AIR%20para%20editar%20archivos%20de%20configuraci%C3%B3n%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fadm-aplicacion-air-para-editar-archivos-de-configuracion%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fadm-aplicacion-air-para-editar-archivos-de-configuracion%2F&amp;t=ADM%2C%20aplicaci%C3%B3n%20AIR%20para%20editar%20archivos%20de%20configuraci%C3%B3n" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fadm-aplicacion-air-para-editar-archivos-de-configuracion%2F&amp;title=ADM%2C%20aplicaci%C3%B3n%20AIR%20para%20editar%20archivos%20de%20configuraci%C3%B3n&amp;annotation=En%20mi%20%20escrib%C3%AD%20una%20descripci%C3%B3n%20del%20archivo%20de%20configuraci%C3%B3n%20de%20las%20aplicaciones%20.%20Este%20archivo%20de%20configuraci%C3%B3n%20lo%20deberemos%20editar%20para%20definir%20las%20caracter%C3%ADsticas%20de%20nuestra%20aplicaci%C3%B3n.%0A%0ANavegando%20por%20internet%20encontr%C3%A9%20una%20aplicaci%C3%B3n%20creada" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fadm-aplicacion-air-para-editar-archivos-de-configuracion%2F&amp;title=ADM%2C%20aplicaci%C3%B3n%20AIR%20para%20editar%20archivos%20de%20configuraci%C3%B3n&amp;notes=En%20mi%20%20escrib%C3%AD%20una%20descripci%C3%B3n%20del%20archivo%20de%20configuraci%C3%B3n%20de%20las%20aplicaciones%20.%20Este%20archivo%20de%20configuraci%C3%B3n%20lo%20deberemos%20editar%20para%20definir%20las%20caracter%C3%ADsticas%20de%20nuestra%20aplicaci%C3%B3n.%0A%0ANavegando%20por%20internet%20encontr%C3%A9%20una%20aplicaci%C3%B3n%20creada" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fadm-aplicacion-air-para-editar-archivos-de-configuracion%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=ADM%2C%20aplicaci%C3%B3n%20AIR%20para%20editar%20archivos%20de%20configuraci%C3%B3n&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fadm-aplicacion-air-para-editar-archivos-de-configuracion%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fadm-aplicacion-air-para-editar-archivos-de-configuracion%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/listar-archivos-de-un-directorio-web-con-php-y-xml/' rel='bookmark' title='Permanent Link: Listar archivos de un directorio web con PHP y XML'>Listar archivos de un directorio web con PHP y XML</a></li>
<li><a href='http://www.codigoactionscript.org/impedir-la-visualizacion-de-archivos-swf-individualmente/' rel='bookmark' title='Permanent Link: Impedir la visualización de archivos SWF individualmente'>Impedir la visualización de archivos SWF individualmente</a></li>
<li><a href='http://www.codigoactionscript.org/editar-cadenas-de-texto-utilizando-expresiones-regulares/' rel='bookmark' title='Permanent Link: Editar cadenas de texto utilizando expresiones regulares'>Editar cadenas de texto utilizando expresiones regulares</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/adm-aplicacion-air-para-editar-archivos-de-configuracion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tray Icon animado en AIR</title>
		<link>http://www.codigoactionscript.org/tray-icon-animado-en-air/</link>
		<comments>http://www.codigoactionscript.org/tray-icon-animado-en-air/#comments</comments>
		<pubDate>Wed, 20 May 2009 23:36:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Aportes]]></category>
		<category><![CDATA[animacion]]></category>
		<category><![CDATA[colaboracion]]></category>
		<category><![CDATA[icon]]></category>

		<guid isPermaLink="false">http://www.codigoactionscript.org/?p=398</guid>
		<description><![CDATA[<p>
Autor de post: David Villegas - Dvgmex</p>
<p>Estuve buscando como usar los Tray Ballons en Windows desde AIR, pero al no encontrar hice una alternativa, con mismos mensajes cortos pero en el icono directamente! Algo así como un Tray Icon con Mensaje tipo Ticker.  Que además funciona tanto en Windows como en Mac.</p>
<p>Aquí se ve el ejemplo:
</p>
<p>Este es el código que utilizo en mi película principal:</p>



import flash.desktop.DockIcon;
import flash.desktop.SystemTrayIcon;
import flash.desktop.NotificationType;
import flash.desktop.NativeApplication;</p>
<p>if &#40;NativeApplication.supportsDockIcon&#41;
&#123;
var dockIcon:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
&#125;
else if &#40;NativeApplication.supportsSystemTrayIcon&#41;
&#123;
var sysTrayIcon:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon;
sysTrayIcon.tooltip = "Mi ToolTip \n" + "Flash Version: [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.codigoactionscript.org/files/TrayIconTicker/avatar.jpg" alt="" /><br />
<strong>Autor de post: <a href="http://www.facebook.com/s.php?k=100000080&#038;id=559414686">David Villegas</a> - <a href="http://groups.adobe.com/people/c8db396873">Dvgmex</a></strong></p>
<p>Estuve buscando como usar los <strong>Tray Ballons</strong> en Windows desde AIR, pero al no encontrar hice una alternativa, con mismos mensajes cortos pero en el icono directamente! Algo así como un <strong>Tray Icon</strong> con Mensaje tipo Ticker.  Que además funciona tanto en Windows como en Mac.</p>
<p>Aquí se ve el ejemplo:<br />
<object width="472" height="80" data="http://www.codigoactionscript.org/files/TrayIconTicker/capture-1_1.swf" type="application/x-shockwave-flash"><param name="src" value="http://www.codigoactionscript.org/files/TrayIconTicker/capture-1_1.swf" /><param name="allowfullscreen" value="true" /></object></p>
<p>Este es el código que utilizo en mi película principal:</p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-3">
<div class="actionscript"><span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">desktop</span>.<span style="color: #006600;">DockIcon</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">desktop</span>.<span style="color: #006600;">SystemTrayIcon</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">desktop</span>.<span style="color: #006600;">NotificationType</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">desktop</span>.<span style="color: #006600;">NativeApplication</span>;</p>
<p><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>NativeApplication.<span style="color: #006600;">supportsDockIcon</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">var</span> dockIcon:DockIcon = NativeApplication.<span style="color: #006600;">nativeApplication</span>.<span style="color: #006600;">icon</span> as DockIcon;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>NativeApplication.<span style="color: #006600;">supportsSystemTrayIcon</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">var</span> sysTrayIcon:SystemTrayIcon = NativeApplication.<span style="color: #006600;">nativeApplication</span>.<span style="color: #006600;">icon</span> as SystemTrayIcon;<br />
sysTrayIcon.<span style="color: #006600;">tooltip</span> = <span style="color: #ff0000;">"Mi ToolTip <span style="color: #000099; font-weight: bold;">\n</span>"</span> + <span style="color: #ff0000;">"Flash Version: "</span> + <span style="color: #0066CC;">Capabilities</span>.<span style="color: #0066CC;">version</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">var</span> icon16bitmapData:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> i16<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> icon32bitmapData:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> i32<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> icon48bitmapData:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> i48<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> icon128bitmapData:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> i128<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> iconDefaultSet = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span>icon16bitmapData,icon32bitmapData,icon48bitmapData,icon128bitmapData<span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #808080; font-style: italic;">//Carga TrayIconTicker</span><br />
<span style="color: #000000; font-weight: bold;">var</span> MyTrayIconTicker = <span style="color: #000000; font-weight: bold;">new</span> TrayIconTicker<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
MyTrayIconTicker.<span style="color: #0066CC;">Show</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"MENSAJE INFORMATIVO"</span><span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
</div>
<p></p>
<p>Y este código lo coloco dentro de un MovieClip llamado "TrayIconTicker" que es el que utilizo para animar y crear el icono:</p>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-4">
<div class="actionscript"><span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">desktop</span>.<span style="color: #006600;">DockIcon</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">desktop</span>.<span style="color: #006600;">SystemTrayIcon</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">desktop</span>.<span style="color: #006600;">NotificationType</span>;<br />
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">desktop</span>.<span style="color: #006600;">NativeApplication</span>;</p>
<p><span style="color: #000000; font-weight: bold;">var</span> tickerWidth = <span style="color: #cc66cc;">128</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> tickerStep = <span style="color: #cc66cc;">8</span>;</p>
<p><span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">Show</span><span style="color: #66cc66;">&#40;</span>sMsg<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#123;</span><br />
txtTicker.<span style="color: #0066CC;">text</span> = sMsg;<br />
txtTicker.<span style="color: #0066CC;">autoSize</span> = TextFieldAutoSize.<span style="color: #0066CC;">LEFT</span>;<br />
addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>,myEnterFrame<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">Hide</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#123;</span><br />
txtTicker.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">"."</span>;<br />
txtTicker.<span style="color: #0066CC;">autoSize</span> = TextFieldAutoSize.<span style="color: #0066CC;">LEFT</span>;<br />
removeEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>,myEnterFrame<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span></p>
<p><span style="color: #000000; font-weight: bold;">function</span> myEnterFrame<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#123;</span><br />
txtTicker.<span style="color: #006600;">x</span> = txtTicker.<span style="color: #006600;">x</span> - tickerStep;<br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>txtTicker.<span style="color: #006600;">x</span> + txtTicker.<span style="color: #0066CC;">width</span><span style="color: #66cc66;">&#41;</span>&amp;lt;<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#123;</span><br />
txtTicker.<span style="color: #006600;">x</span> = tickerWidth;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">var</span> icon128bitmapData:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span>tickerWidth,tickerWidth,<span style="color: #000000; font-weight: bold;">true</span>,0x00ffffff<span style="color: #66cc66;">&#41;</span>;<br />
icon128bitmapData.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000000; font-weight: bold;">var</span> iconSet = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span>icon128bitmapData<span style="color: #66cc66;">&#41;</span>;<br />
NativeApplication.<span style="color: #006600;">nativeApplication</span>.<span style="color: #006600;">icon</span>.<span style="color: #006600;">bitmaps</span> = iconSet;</p>
<p><span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></p>
<p>Puedes descargar el <a href="http://www.codigoactionscript.org/files/TrayIconTicker/TrayIconTicker.zip">archivo .FLA del ejemplo</a> para verlo implementado.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Ftray-icon-animado-en-air%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Tray%20Icon%20animado%20en%20AIR%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Ftray-icon-animado-en-air%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Ftray-icon-animado-en-air%2F&amp;t=Tray%20Icon%20animado%20en%20AIR" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Ftray-icon-animado-en-air%2F&amp;title=Tray%20Icon%20animado%20en%20AIR&amp;annotation=%0D%0AAutor%20de%20post%3A%20David%20Villegas%20-%20Dvgmex%0D%0A%0D%0AEstuve%20buscando%20como%20usar%20los%20Tray%20Ballons%20en%20Windows%20desde%20AIR%2C%20pero%20al%20no%20encontrar%20hice%20una%20alternativa%2C%20con%20mismos%20mensajes%20cortos%20pero%20en%20el%20icono%20directamente%21%20Algo%20as%C3%AD%20como%20un%20Tray%20Icon%20con%20Mensaje%20" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Ftray-icon-animado-en-air%2F&amp;title=Tray%20Icon%20animado%20en%20AIR&amp;notes=%0D%0AAutor%20de%20post%3A%20David%20Villegas%20-%20Dvgmex%0D%0A%0D%0AEstuve%20buscando%20como%20usar%20los%20Tray%20Ballons%20en%20Windows%20desde%20AIR%2C%20pero%20al%20no%20encontrar%20hice%20una%20alternativa%2C%20con%20mismos%20mensajes%20cortos%20pero%20en%20el%20icono%20directamente%21%20Algo%20as%C3%AD%20como%20un%20Tray%20Icon%20con%20Mensaje%20" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Ftray-icon-animado-en-air%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Tray%20Icon%20animado%20en%20AIR&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Ftray-icon-animado-en-air%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Ftray-icon-animado-en-air%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/tray-icon-animado-en-air/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sorteo de libros &#8220;Adobe AIR Cookbook&#8221; y &#8220;Youtube: an insider&#8217;s guide&#8221;</title>
		<link>http://www.codigoactionscript.org/sorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide/</link>
		<comments>http://www.codigoactionscript.org/sorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide/#comments</comments>
		<pubDate>Wed, 13 May 2009 01:44:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Aportes]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[colaboracion]]></category>
		<category><![CDATA[cookbook]]></category>
		<category><![CDATA[oreilly]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.codigoactionscript.org/?p=396</guid>
		<description><![CDATA[<p>Justo esta mañana me acaba de llegar un paquete de O'Reilly con un par de libros de promoción. El Cookbook de AIR y otro libro sobre Youtube. Dado que los libros vienen de regalo por ser un Adobe User Group los sortearé entre los miembros del grupo que realicen algún tipo de colaboración. Ya sea escribir un ejemplo de AIR, mostrar alguna aplicación o hacer algún review de un libro o aplicación que pueda ser de interés para el grupo.</p>
<p>Cómo ya he dicho unos de los libros es el Adobe [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/ganadores-del-sorteo-navideno-de-actionscript/' rel='bookmark' title='Permanent Link: Ganadores del sorteo &#8220;navideño&#8221; de Actionscript'>Ganadores del sorteo &#8220;navideño&#8221; de Actionscript</a></li>
<li><a href='http://www.codigoactionscript.org/libros-de-flex-3/' rel='bookmark' title='Permanent Link: Libros de Flex 3'>Libros de Flex 3</a></li>
<li><a href='http://www.codigoactionscript.org/libros-sobre-programacion-creativa/' rel='bookmark' title='Permanent Link: Libros sobre programación creativa'>Libros sobre programación creativa</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Justo esta mañana me acaba de llegar un paquete de <a href="http://oreilly.com/">O'Reilly</a> con un par de libros de promoción. El <strong>Cookbook de AIR</strong> y otro libro sobre <strong>Youtube</strong>. Dado que los libros vienen de regalo por ser un <a href="http://groups.adobe.com/groups/3924ff1ac2/summary">Adobe User Group</a> los <strong>sortearé entre los miembros del grupo que realicen algún tipo de colaboración</strong>. Ya sea escribir un ejemplo de AIR, mostrar alguna aplicación o hacer algún review de un libro o aplicación que pueda ser de interés para el grupo.</p>
<p>Cómo ya he dicho unos de los libros es el <a href="http://www.amazon.com/Adobe-AIR-1-5-Cookbook-Application/dp/0596522509?&amp;camp=212361&amp;creative=383845&amp;linkCode=wss&amp;tag=codact-20">Adobe AIR 1.5 Cookbook</a>. Para los que no conozcan la serie de libros "Cookbook" les diré que son libros imprescindibles para el aprendizaje de una aplicación. Cómo su nombre indica, el libro está lleno de "recetas", osea de pequeños trucos y códigos de ejemplo que cubren prácticamente todas las posibilidades que ofrece AIR. Desde el nivel más básico a otro más avanzado.</p>
<p><a href="http://www.amazon.com/Adobe-AIR-1-5-Cookbook-Application/dp/0596522509?&amp;camp=212361&amp;creative=383845&amp;linkCode=wss&amp;tag=codact-20"><img class="alignnone" title="book-air" src="http://farm3.static.flickr.com/2068/3527166672_d11d929fb6.jpg" alt="" width="500" height="375" /></a></p>
<p>El segundo libro es el <a href="http://www.amazon.com/YouTube-Insiders-Guide-Climbing-Charts/dp/0596521146/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1242177023&amp;sr=1-1">YouTube: An Insider's Guide to Climbing the Charts</a>. Es una interesante guía de editores de vídeos en <a href="http://www.youtube.com/">Youtube</a>. Muestra todo lo que debes saber si quieres crear y tener éxito con tu canal. Interesante el capítulo sobre como ganar dinero con tu canal de Youtube.</p>
<p><a href="http://www.amazon.com/YouTube-Insiders-Guide-Climbing-Charts/dp/0596521146/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1242177023&amp;sr=1-1"><img class="alignnone" title="book-youtube" src="http://farm4.static.flickr.com/3541/3526356009_11ca6a13c4.jpg" alt="" width="500" height="375" /></a></p>
<p>Cómo ya he dicho, los libros serán sorteados entre lo que hagan algún aporte al grupo. Para aportar únicamente tienes que <a href="http://groups.adobe.com/groups/3924ff1ac2/summary">registrarte en el grupo</a> y dejar tu aporte en <a href="http://groups.adobe.com/posts/8f2dd8ab8b">este post</a>. También si quieres puedes hacerlo desde el <a href="http://www.facebook.com/group.php?gid=72891900125">grupo de Facebook</a>, o comunicándote conmigo por email.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fsorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Sorteo%20de%20libros%20%22Adobe%20AIR%20Cookbook%22%20y%20%22Youtube%3A%20an%20insider%27s%20guide%22%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fsorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fsorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide%2F&amp;t=Sorteo%20de%20libros%20%22Adobe%20AIR%20Cookbook%22%20y%20%22Youtube%3A%20an%20insider%27s%20guide%22" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fsorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide%2F&amp;title=Sorteo%20de%20libros%20%22Adobe%20AIR%20Cookbook%22%20y%20%22Youtube%3A%20an%20insider%27s%20guide%22&amp;annotation=Justo%20esta%20ma%C3%B1ana%20me%20acaba%20de%20llegar%20un%20paquete%20de%20O%27Reilly%20con%20un%20par%20de%20libros%20de%20promoci%C3%B3n.%20El%20Cookbook%20de%20AIR%20y%20otro%20libro%20sobre%20Youtube.%20Dado%20que%20los%20libros%20vienen%20de%20regalo%20por%20ser%20un%20Adobe%20User%20Group%20los%20sortear%C3%A9%20entre%20los%20miembros%20del%20grup" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fsorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide%2F&amp;title=Sorteo%20de%20libros%20%22Adobe%20AIR%20Cookbook%22%20y%20%22Youtube%3A%20an%20insider%27s%20guide%22&amp;notes=Justo%20esta%20ma%C3%B1ana%20me%20acaba%20de%20llegar%20un%20paquete%20de%20O%27Reilly%20con%20un%20par%20de%20libros%20de%20promoci%C3%B3n.%20El%20Cookbook%20de%20AIR%20y%20otro%20libro%20sobre%20Youtube.%20Dado%20que%20los%20libros%20vienen%20de%20regalo%20por%20ser%20un%20Adobe%20User%20Group%20los%20sortear%C3%A9%20entre%20los%20miembros%20del%20grup" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fsorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Sorteo%20de%20libros%20%22Adobe%20AIR%20Cookbook%22%20y%20%22Youtube%3A%20an%20insider%27s%20guide%22&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fsorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fsorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/ganadores-del-sorteo-navideno-de-actionscript/' rel='bookmark' title='Permanent Link: Ganadores del sorteo &#8220;navideño&#8221; de Actionscript'>Ganadores del sorteo &#8220;navideño&#8221; de Actionscript</a></li>
<li><a href='http://www.codigoactionscript.org/libros-de-flex-3/' rel='bookmark' title='Permanent Link: Libros de Flex 3'>Libros de Flex 3</a></li>
<li><a href='http://www.codigoactionscript.org/libros-sobre-programacion-creativa/' rel='bookmark' title='Permanent Link: Libros sobre programación creativa'>Libros sobre programación creativa</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/sorteo-de-libros-adobe-air-cookbook-y-youtube-an-insiders-guide/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>AdobeTV: Videotutorial de creacion de componentes en Flex</title>
		<link>http://www.codigoactionscript.org/adovetv-videotutorial-de-creacion-de-componentes-en-flex/</link>
		<comments>http://www.codigoactionscript.org/adovetv-videotutorial-de-creacion-de-componentes-en-flex/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 03:24:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Aportes]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[componentes]]></category>
		<category><![CDATA[vidotutorial]]></category>

		<guid isPermaLink="false">http://www.codigoactionscript.org/?p=302</guid>
		<description><![CDATA[<p>Videotutorial "Creating New Components in Flex 3" por Deepa Subramaniam</p>
<p></p>



Comparte:


	
	
	
	
	
	
	
	




<p>Related posts:Personalizar la tipografía en componentes Flex
Personalizar componentes de Flex con estilos programáticos
Modificar datos en componentes Flex con ItemEditors
</p>


Related posts:<ol><li><a href='http://www.codigoactionscript.org/personalizar-la-tipografia-en-componentes-flex/' rel='bookmark' title='Permanent Link: Personalizar la tipografía en componentes Flex'>Personalizar la tipografía en componentes Flex</a></li>
<li><a href='http://www.codigoactionscript.org/personalizar-componentes-de-flex-con-estilos-programaticos/' rel='bookmark' title='Permanent Link: Personalizar componentes de Flex con estilos programáticos'>Personalizar componentes de Flex con estilos programáticos</a></li>
<li><a href='http://www.codigoactionscript.org/modificar-datos-en-componentes-flex-con-itemeditors/' rel='bookmark' title='Permanent Link: Modificar datos en componentes Flex con ItemEditors'>Modificar datos en componentes Flex con ItemEditors</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Videotutorial "<em>Creating New Components in Flex 3</em>" por Deepa Subramaniam</p>
<p><embed src="http://tv.adobe.com/Embed.swf" quality="high" bgcolor="#000000" width="600" height="385" name="AdobeTVPlayer" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashVars="v=~b64~aHR0cDovL2Fkb2JlLmVkZ2Vib3NzLm5ldC9mbGFzaC9hZG9iZS9hZG9iZXR2Mi9tYXhfMjAwOF9kZXZlbG9wLzE1OTY3NDE2MTNfMjkyNzMxNDAwMV8yMDAxLWRlbm5lcnQtdHVlLTQzMHBtLWRlc2lnbi1kZXZlbG9wLmZsdj9yc3NfZmVlZGlkPTE1Mzg0JnhtbHZlcnM9Mg==&#038;w=600&#038;t=http://tv.adobe.com/#vi+f15384v1008&#038;h=385"></embed></p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fadovetv-videotutorial-de-creacion-de-componentes-en-flex%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=AdobeTV%3A%20Videotutorial%20de%20creacion%20de%20componentes%20en%20Flex%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fadovetv-videotutorial-de-creacion-de-componentes-en-flex%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fadovetv-videotutorial-de-creacion-de-componentes-en-flex%2F&amp;t=AdobeTV%3A%20Videotutorial%20de%20creacion%20de%20componentes%20en%20Flex" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fadovetv-videotutorial-de-creacion-de-componentes-en-flex%2F&amp;title=AdobeTV%3A%20Videotutorial%20de%20creacion%20de%20componentes%20en%20Flex&amp;annotation=Videotutorial%20%22Creating%20New%20Components%20in%20Flex%203%22%20por%20Deepa%20Subramaniam%0D%0A%0D%0A" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fadovetv-videotutorial-de-creacion-de-componentes-en-flex%2F&amp;title=AdobeTV%3A%20Videotutorial%20de%20creacion%20de%20componentes%20en%20Flex&amp;notes=Videotutorial%20%22Creating%20New%20Components%20in%20Flex%203%22%20por%20Deepa%20Subramaniam%0D%0A%0D%0A" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fadovetv-videotutorial-de-creacion-de-componentes-en-flex%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=AdobeTV%3A%20Videotutorial%20de%20creacion%20de%20componentes%20en%20Flex&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fadovetv-videotutorial-de-creacion-de-componentes-en-flex%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fadovetv-videotutorial-de-creacion-de-componentes-en-flex%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/personalizar-la-tipografia-en-componentes-flex/' rel='bookmark' title='Permanent Link: Personalizar la tipografía en componentes Flex'>Personalizar la tipografía en componentes Flex</a></li>
<li><a href='http://www.codigoactionscript.org/personalizar-componentes-de-flex-con-estilos-programaticos/' rel='bookmark' title='Permanent Link: Personalizar componentes de Flex con estilos programáticos'>Personalizar componentes de Flex con estilos programáticos</a></li>
<li><a href='http://www.codigoactionscript.org/modificar-datos-en-componentes-flex-con-itemeditors/' rel='bookmark' title='Permanent Link: Modificar datos en componentes Flex con ItemEditors'>Modificar datos en componentes Flex con ItemEditors</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/adovetv-videotutorial-de-creacion-de-componentes-en-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>onReleaseOutside, onDragOut, onDragOver en ActionScript 3</title>
		<link>http://www.codigoactionscript.org/onreleaseoutside-ondragout-ondragover-en-actionscript-3/</link>
		<comments>http://www.codigoactionscript.org/onreleaseoutside-ondragout-ondragover-en-actionscript-3/#comments</comments>
		<pubDate>Fri, 01 Jun 2007 10:59:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Aportes]]></category>
		<category><![CDATA[Avanzado]]></category>
		<category><![CDATA[Class]]></category>

		<guid isPermaLink="false">http://www.codigo.as/blog/?p=78</guid>
		<description><![CDATA[<p>Un problema de AS3 es  que no trae los eventos de Mouse onReleaseOutside, onDragOut, onDragOver. Visitando la web de André Michelle he visto que ha creado una clase para controlar estos eventos  </p>
<p>Estos serían los códigos:</p>




/* code by: André Michelle - http://blog.andre-michelle.com */</p>
<p>package de.popforge.events
&#123;
&#160; &#160; import flash.events.Event;</p>
<p>&#160; &#160; public class SimpleMouseEvent extends Event
&#160; &#160; &#123;
&#160; &#160; &#160; &#160; static public&#160; const PRESS:String='onPress';
&#160; &#160; &#160; &#160; static public&#160; const RELEASE:String='onRelease';
&#160; &#160; &#160; &#160; static public&#160; const RELEASE_OUTSIDE:String='onReleaseOutside';
&#160; &#160; &#160; &#160; static public&#160; const ROLL_OVER:String='onRollOver';
&#160; &#160; &#160; &#160; static public&#160; [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/comunicacion-entre-clases-actionscript-3-con-eventdispatcher/' rel='bookmark' title='Permanent Link: Comunicación entre clases Actionscript 3 con EventDispatcher'>Comunicación entre clases Actionscript 3 con EventDispatcher</a></li>
<li><a href='http://www.codigoactionscript.org/anadir-funciones-al-teclado-con-actionscript-3/' rel='bookmark' title='Permanent Link: Añadir funciones al teclado con Actionscript 3'>Añadir funciones al teclado con Actionscript 3</a></li>
<li><a href='http://www.codigoactionscript.org/clase-de-actionscript-3-para-retardar-la-ejecucion-de-funciones/' rel='bookmark' title='Permanent Link: Clase de ActionScript 3 para retardar la ejecución de funciones'>Clase de ActionScript 3 para retardar la ejecución de funciones</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Un problema de AS3 es  que no trae los eventos de Mouse <strong>onReleaseOutside</strong>, <strong>onDragOut</strong>, <strong>onDragOver</strong>. Visitando la web de <a href="http://blog.andre-michelle.com">André Michelle</a> he visto que ha creado una clase para controlar estos eventos <img src='http://www.codigoactionscript.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Estos serían los códigos:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-9">
<div class="actionscript"><span style="color: #808080; font-style: italic;">/* code by: André Michelle - http://blog.andre-michelle.com */</span></p>
<p>package de.<span style="color: #006600;">popforge</span>.<span style="color: #006600;">events</span><br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;</p>
<p>&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SimpleMouseEvent <span style="color: #0066CC;">extends</span> Event<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span>&nbsp; const PRESS:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">'onPress'</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span>&nbsp; const RELEASE:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">'onRelease'</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span>&nbsp; const RELEASE_OUTSIDE:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">'onReleaseOutside'</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span>&nbsp; const ROLL_OVER:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">'onRollOver'</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span>&nbsp; const ROLL_OUT:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">'onRollOut'</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span>&nbsp; const DRAG_OVER:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">'onDragOver'</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span>&nbsp; const DRAG_OUT:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">'onDragOut'</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> SimpleMouseEvent<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">type</span>:<span style="color: #0066CC;">String</span>,bubbles:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">true</span>,cancelable:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">super</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">type</span>,bubbles,cancelable<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-10">
<div class="actionscript"><span style="color: #808080; font-style: italic;">/* code by: André Michelle - http://blog.andre-michelle.com */</span></p>
<p>package de.<span style="color: #006600;">popforge</span>.<span style="color: #006600;">events</span><br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">InteractiveObject</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #0066CC;">MovieClip</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #0066CC;">Stage</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">MouseEvent</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Dictionary</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SimpleMouseEventHandler<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> register<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span>: InteractiveObject, <span style="color: #0066CC;">trackAsMenu</span>: <span style="color: #0066CC;">Boolean</span> = <span style="color: #000000; font-weight: bold;">false</span> <span style="color: #66cc66;">&#41;</span>: <span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">new</span> SimpleMouseEventHandler<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span>, <span style="color: #0066CC;">trackAsMenu</span> <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> unregister<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span>: InteractiveObject <span style="color: #66cc66;">&#41;</span>: <span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SimpleMouseEventHandler<span style="color: #66cc66;">&#40;</span> table<span style="color: #66cc66;">&#91;</span> <span style="color: #0066CC;">target</span> <span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">dispose</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">delete</span> table<span style="color: #66cc66;">&#91;</span> <span style="color: #0066CC;">target</span> <span style="color: #66cc66;">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">static</span> <span style="color: #0066CC;">private</span> const table: Dictionary = <span style="color: #000000; font-weight: bold;">new</span> Dictionary<span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">true</span> <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//-- target must have set buttonMode = true</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">target</span>: InteractiveObject;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">trackAsMenu</span>: <span style="color: #0066CC;">Boolean</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> SimpleMouseEventHandler<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span>: InteractiveObject, <span style="color: #0066CC;">trackAsMenu</span>: <span style="color: #0066CC;">Boolean</span> <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">target</span> = <span style="color: #0066CC;">target</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">trackAsMenu</span> = <span style="color: #0066CC;">trackAsMenu</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>: <span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span> is Sprite <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Sprite<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span> <span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">buttonMode</span> = <span style="color: #000000; font-weight: bold;">true</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span> is <span style="color: #0066CC;">MovieClip</span> <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span> <span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">buttonMode</span> = <span style="color: #000000; font-weight: bold;">true</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_OVER</span>, onTargetMouseOver <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_OUT</span>, onTargetMouseOut <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_DOWN</span>, onTargetMouseDown <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_UP</span>, onTargetMouseUp <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; table<span style="color: #66cc66;">&#91;</span> <span style="color: #0066CC;">target</span> <span style="color: #66cc66;">&#93;</span> = <span style="color: #0066CC;">this</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> dispose<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>: <span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_OVER</span>, onTargetMouseOver <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_OUT</span>, onTargetMouseOut <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_DOWN</span>, onTargetMouseDown <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_UP</span>, onTargetMouseUp <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onTargetMouseOver<span style="color: #66cc66;">&#40;</span> event: MouseEvent <span style="color: #66cc66;">&#41;</span>: <span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> event.<span style="color: #006600;">buttonDown</span> <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span>.<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">focus</span> == <span style="color: #0066CC;">target</span> || <span style="color: #0066CC;">trackAsMenu</span> <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dispatch<span style="color: #66cc66;">&#40;</span> SimpleMouseEvent.<span style="color: #006600;">DRAG_OVER</span> <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dispatch<span style="color: #66cc66;">&#40;</span> SimpleMouseEvent.<span style="color: #006600;">ROLL_OVER</span> <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onTargetMouseOut<span style="color: #66cc66;">&#40;</span> event: MouseEvent <span style="color: #66cc66;">&#41;</span>: <span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> event.<span style="color: #006600;">buttonDown</span> <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span>.<span style="color: #0066CC;">stage</span> != <span style="color: #000000; font-weight: bold;">null</span> <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span>.<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">focus</span> == <span style="color: #0066CC;">target</span> || <span style="color: #0066CC;">trackAsMenu</span> <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dispatch<span style="color: #66cc66;">&#40;</span> SimpleMouseEvent.<span style="color: #006600;">DRAG_OUT</span> <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dispatch<span style="color: #66cc66;">&#40;</span> SimpleMouseEvent.<span style="color: #006600;">ROLL_OUT</span> <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onTargetMouseDown<span style="color: #66cc66;">&#40;</span> event: MouseEvent <span style="color: #66cc66;">&#41;</span>: <span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dispatch<span style="color: #66cc66;">&#40;</span> SimpleMouseEvent.<span style="color: #006600;">PRESS</span> <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_UP</span>, onStageMouseUp <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onTargetMouseUp<span style="color: #66cc66;">&#40;</span> event: MouseEvent <span style="color: #66cc66;">&#41;</span>: <span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">target</span>.<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">focus</span> == <span style="color: #0066CC;">target</span> <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dispatch<span style="color: #66cc66;">&#40;</span> SimpleMouseEvent.<span style="color: #006600;">RELEASE</span> <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_UP</span>, onStageMouseUp <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onStageMouseUp<span style="color: #66cc66;">&#40;</span> event: MouseEvent <span style="color: #66cc66;">&#41;</span>: <span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dispatch<span style="color: #66cc66;">&#40;</span> SimpleMouseEvent.<span style="color: #006600;">RELEASE_OUTSIDE</span> <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">Stage</span><span style="color: #66cc66;">&#40;</span> event.<span style="color: #006600;">currentTarget</span> <span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">MOUSE_UP</span>, onStageMouseUp <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> dispatch<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">type</span>: <span style="color: #0066CC;">String</span> <span style="color: #66cc66;">&#41;</span>: <span style="color: #0066CC;">void</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">target</span>.<span style="color: #006600;">dispatchEvent</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> SimpleMouseEvent<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">type</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Podéis ver el <a href="http://blog.andre-michelle.com/2007/simplemouseevents-onreleaseoutside-ondragout/">post original en el blog de André Michelle</a>, y descargaros los archivos del ejemplo <a href="http://blog.andre-michelle.com/go.php?http://blog.andre-michelle.com/upload/SimpleMouseEvents.zip">aqui</a>.</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fonreleaseoutside-ondragout-ondragover-en-actionscript-3%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=onReleaseOutside%2C%20onDragOut%2C%20onDragOver%20en%20ActionScript%203%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fonreleaseoutside-ondragout-ondragover-en-actionscript-3%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fonreleaseoutside-ondragout-ondragover-en-actionscript-3%2F&amp;t=onReleaseOutside%2C%20onDragOut%2C%20onDragOver%20en%20ActionScript%203" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fonreleaseoutside-ondragout-ondragover-en-actionscript-3%2F&amp;title=onReleaseOutside%2C%20onDragOut%2C%20onDragOver%20en%20ActionScript%203&amp;annotation=Un%20problema%20de%20AS3%20es%20%20que%20no%20trae%20los%20eventos%20de%20Mouse%20onReleaseOutside%2C%20onDragOut%2C%20onDragOver.%20Visitando%20la%20web%20de%20Andr%C3%A9%20Michelle%20he%20visto%20que%20ha%20creado%20una%20clase%20para%20controlar%20estos%20eventos%20%3B%29%0D%0A%0D%0AEstos%20ser%C3%ADan%20los%20c%C3%B3digos%3A%0D%0A%0D%0A%5Bas%5D%2F%2A%20code%20by%3A%20An" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fonreleaseoutside-ondragout-ondragover-en-actionscript-3%2F&amp;title=onReleaseOutside%2C%20onDragOut%2C%20onDragOver%20en%20ActionScript%203&amp;notes=Un%20problema%20de%20AS3%20es%20%20que%20no%20trae%20los%20eventos%20de%20Mouse%20onReleaseOutside%2C%20onDragOut%2C%20onDragOver.%20Visitando%20la%20web%20de%20Andr%C3%A9%20Michelle%20he%20visto%20que%20ha%20creado%20una%20clase%20para%20controlar%20estos%20eventos%20%3B%29%0D%0A%0D%0AEstos%20ser%C3%ADan%20los%20c%C3%B3digos%3A%0D%0A%0D%0A%5Bas%5D%2F%2A%20code%20by%3A%20An" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fonreleaseoutside-ondragout-ondragover-en-actionscript-3%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=onReleaseOutside%2C%20onDragOut%2C%20onDragOver%20en%20ActionScript%203&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fonreleaseoutside-ondragout-ondragover-en-actionscript-3%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fonreleaseoutside-ondragout-ondragover-en-actionscript-3%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/comunicacion-entre-clases-actionscript-3-con-eventdispatcher/' rel='bookmark' title='Permanent Link: Comunicación entre clases Actionscript 3 con EventDispatcher'>Comunicación entre clases Actionscript 3 con EventDispatcher</a></li>
<li><a href='http://www.codigoactionscript.org/anadir-funciones-al-teclado-con-actionscript-3/' rel='bookmark' title='Permanent Link: Añadir funciones al teclado con Actionscript 3'>Añadir funciones al teclado con Actionscript 3</a></li>
<li><a href='http://www.codigoactionscript.org/clase-de-actionscript-3-para-retardar-la-ejecucion-de-funciones/' rel='bookmark' title='Permanent Link: Clase de ActionScript 3 para retardar la ejecución de funciones'>Clase de ActionScript 3 para retardar la ejecución de funciones</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/onreleaseoutside-ondragout-ondragover-en-actionscript-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apollo: Preguntas Frecuentes del Desarrollador (Developer FAQ) en Castellano.</title>
		<link>http://www.codigoactionscript.org/apollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano/</link>
		<comments>http://www.codigoactionscript.org/apollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano/#comments</comments>
		<pubDate>Tue, 17 Apr 2007 22:59:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Aportes]]></category>
		<category><![CDATA[Referencia]]></category>

		<guid isPermaLink="false">http://www.codigo.as/blog/?p=71</guid>
		<description><![CDATA[<p>Nota: traducción hecha del original en ingles al español por Oscar Cortes - Hola Flex!</p>

<p>1 General</p>


<p>1.1 Que es Apollo?
   1.2 Esta Apollo disponible para descarga?
   1.3 A que tipo de aplicaciones esta orientado Apollo?
   1.4 A que tipo de desarrolladores esta dirigido Apollo?
   1.5 Es Apollo gratis ( como en â€˜cerveza gratis')?
   1.6 Cuando será liberado Apollo?
   1.7 A que plataformas esta dirigido Apollo?
   1.8 Suporta Apollo Linux?
   1.9 Cuales son los sistemas operativos [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/ebook-apollo-in-flight/' rel='bookmark' title='Permanent Link: eBook : Apollo in Flight'>eBook : Apollo in Flight</a></li>
<li><a href='http://www.codigoactionscript.org/apollo-code/' rel='bookmark' title='Permanent Link: Apollo-Code'>Apollo-Code</a></li>
<li><a href='http://www.codigoactionscript.org/crear-una-aplicacion-apollo-con-flash-cs3/' rel='bookmark' title='Permanent Link: Crear una aplicación Apollo con Flash CS3'>Crear una aplicación Apollo con Flash CS3</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a name=top></a><strong>Nota</strong>: traducción hecha del original en ingles al español por <strong>Oscar Cortes</strong> - <a href="http://holaflex.ocortes.com" title="Hola Flex! Oscar Cortes" target="_blank">Hola Flex!</a></p>
<div>
<p><a href="#General"><strong>1 General</strong></a></p>
</div>
<div>
<p><a href="#What_is_Apollo.3F">1.1 Que es Apollo?</a><br />
   <a href="#Is_Apollo_Available_for_Download.3F">1.2 Esta Apollo disponible para descarga?</a><br />
   <a href="#What_type_of_applications_does_Apollo_t">1.3 A que tipo de aplicaciones esta orientado Apollo?</a><br />
   <a href="#What_types_of_developers_is_Apollo_targ">1.4 A que tipo de desarrolladores esta dirigido Apollo?</a><br />
   <a href="#Is_Apollo_free_.28as_in_beer.29.3F">1.5 Es Apollo gratis ( como en â€˜cerveza gratis')?</a><br />
   <a href="#When_will_Apollo_be_released.3F">1.6 Cuando será liberado Apollo?</a><br />
   <a href="#What_platforms_does_Apollo_1.0_target.3">1.7 A que plataformas esta dirigido Apollo?</a><br />
   <a href="#Does_Apollo_support_Linux">1.8 Suporta Apollo Linux?</a><br />
   <a href="#What_are_the_supported_operating_system">1.9 Cuales son los sistemas operativos suportados para el alpha de Apollo?</a><br />
   <a href="#What_are_some_of_the_features_included_">1.10 Cuales son algunas de las características incluidas en el alpha de Apollo?</a><br />
   <a href="#What_are_some_of_the_features_that_are_">1.11 Cuales son algunas de las características no incluidas en el alpha de Apollo?</a><br />
   <a href="#Is_Apollo_a_web_browser.3F">1.12 Es Apollo un navegador Web?</a><br />
   <a href="#What_is_the_target_size_for_the_Apollo_">1.13 Cual es el tamaño previsible para el runtime de Apollo?</a><br />
   <a href="#How_is_Apollo_related_to_Macromedia_Cen">1.14 Como esta relacionado Apollo con Macromedia Central?</a></p>
</div>
<div>
<p><a href="#Development"><strong>2 Desarrollo</strong></a></p>
</div>
<div>
<p><a href="#What_technologies_can_I_leverage_within">2.1 Que tecnologías puedo explotar dentro de una aplicación Apollo?</a><br />
   <a href="#Can_I_use_just_HTML_and_JavaScript_to_b">2.2 Puedo usar solo HTML y JavaScript para construir aplicaciones Apollo?</a><br />
   <a href="#What_IDE_do_I_use_to_develop_Apollo_App">2.3 Cual IDE debo usar para desarrollar aplicaciones Apollo?</a><br />
   <a href="#Will_I_be_able_to_create_Apollo_Applica">2.4 Podré crear aplicaciones Apollo con el Flash Authoring?</a><br />
   <a href="#How_will_the_Apollo_runtime_be_distribu">2.5 Como será distribuido el runtime de Apollo?</a><br />
   <a href="#Will_developers_be_able_to_distribute_t">2.6 Podrán los desarrolladores distribuir el instalador del runtime de Apollo con sus aplicaciones?</a><br />
   <a href="#How_are_Apollo_applications_installed.3">2.7 Como se instalan las aplicaciones Apollo?</a><br />
   <a href="#What_HTML_and_JavaScript_Engine_is_used">2.8 Que motor de HTML y JavaScript es usado dentro de Apollo?</a><br />
   <a href="#Is_this_the_same_WebKit_project_that_th">2.9 Es este el mismo proyecto WebKit en que están basados el navegador Safari en Mac OS y el navegador KHTML en KDE?</a><br />
   <a href="#Why_did_Adobe_choose_WebKit">2.10 Por que escogió Adobe WebKit</a>?<br />
   <a href="#Will_Apollo.27s_use_of_WebKit_result_in">2.11 Resultara el uso de Webkit en Apollo en un nuevo motor para HTML del cual los desarrolladores serán responsables?</a><br />
   <a href="#Does_Adobe_plan_to_submit_changes_back_">2.12 Planea Adobe presentar cambios al proyecto WebKit?</a><br />
   <a href="#Is_this_the_same_WebKit_as_the_WebKit_f">2.13 Es este el mismo WebKit framework que el de Mac OS X</a>?<br />
   <a href="#Where_can_I_find_more_information_on_We">2.14 Donde puedo encontrar más información sobre WebKit</a>?<br />
   <a href="#Will_Apollo_Applications_be_able_to_com">2.15 Podrán comunicarse las aplicaciones Apollo unas con otras?</a><br />
   <a href="#Will_Apollo_Applications_be_able_to_com2">2.16 Podrán comunicarse las aplicaciones Apollo directamente con bases de datos?</a><br />
   <a href="#Will_Apollo_include_an_embedded_databas">2.17 Incluirá Apollo una base de datos integrada que las aplicaciones puedan acceder?</a><br />
   <a href="#How_much_control_will_developers_.2F_de">2.18 Que tanto control tendrán los desarrolladores / diseñadores sobre la apariencia de sus aplicaciones?</a><br />
   <a href="#Can_I_reuse_existing_Flex_2_code_in_an_">2.19 Puedo usar código de Flex 2 en una aplicación Apollo?</a><br />
   <a href="#What_are_some_of_the_APIs_that_Apollo_w">2.20 Cuales son algunas de las APIs de Apollo que estarán disponibles para los desarrolladores?</a><br />
   <a href="#Will_Apollo_applications_be_able_to_wor">2.21 Podrán funcionar las aplicaciones Apollo fuera de línea(offline) ?</a><br />
   <a href="#Will_developers_be_able_to_extend_Apoll">2.22 Podrán los desarrolladores extender Apollo con código nativo?</a> <br />
   <a href="#Will_Apollo_Applications_be_able_to_lau">2.23 Podrán las aplicaciones Apollo iniciar las aplicaciones por defecto según el tipo de archivo?</a><br />
   <a href="#Will_Apollo_Applications_be_able_to_dir">2.24 Podrán las aplicaciones Apollo iniciar directamente aplicaciones nativas</a>?<br />
   <a href="#Does_Apollo_provide_an_Application_upda">2.25 Ofrece Apollo un mecanismo de actualización de aplicaciones?</a><br />
   <a href="#Is_Apollo_an_exe_.2F_projector_creator.">2.26 Puede Apollo crear ejecutables o proyectores (exe / projector)?</a><br />
   <a href="#What_security_model_does_the_Apollo_run">2.27 Que modelo de seguridad provee Apollo?</a><br />
   <a href="#Can_I_create_CD-Rom_or_Kiosk_applicatio">2.28 Podré crear aplicaciones en un CD-ROM o aplicaciones de tipo Quiosco que hagan uso de Apollo?</a><br />
   <a href="#Will_Macromedia_Central_Apps_be_able_to">2.29 Podrán correr dentro de Apollo las aplicaciones Macromedia Central?</a><br />
   <a href="#Will_Flash_version_8_and_below_SWFs_bei">2.30 Podrán las versiones 8 de Flash y menores correr en Apollo?</a></p>
</div>
<div>
<p><a href="#Known_Issues_and_Workarounds"><strong>3 Problemas conocidos y soluciones </strong></a></p>
</div>
<div>
<p><a href="#Can_I_install_an_Apollo_Application_ont">3.1 Puedo instalar una aplicación Apollo en un sistemas operativo que no este en ingles?</a></p>
</div>
<div>
<p><a href="#Feedback"><strong>4 Sugerencias y Comentarios</strong></a></p>
</div>
<div>
<p><a href="#Where_can_I_report_Issues_.2F_problems_">4.1 Donde puede reportar dificultades / problemas con Apollo?</a><br />
   <a href="#Where_can_I_send_feature_requests_for_A">4.2 Donde puedo enviar requerimientos de funcionalidad de Apollo?</a></p>
</div>
<div>
<p><a href="#News_and_Information"><strong>5 Noticias e información</strong></a></p>
</div>
<div>
<p><a href="#Where_can_I_find_the_latest_news_and_in">5.1 Donde puedo encontrar las últimas noticias con respecto a noticias e información acerca de Apollo?</a><br />
   <a href="#Is_Apollo_being_discussed_at_any_upcomi">5.2 Se hablara de Apollo en las próximas conferencias?</a></p>
</div>
<div>
<p><a href="#FAQ_Information"><strong>6 Información FAQ </strong></a></p>
</div>
<div>
<p><a href="#Is_this_an_Official_FAQ.3F">6.1 Es este el sitio oficial de la FAQ?</a><br />
   <a href="#How_can_I_send_feedback_about_the_FAQ">6.2 Donde puede enviar sugerencias y comentarios acerca de la FAQ?</a></p>
</div>
<h3><a name=General></a>General</h3>
<p></p>
<h2><a name="What_is_Apollo.3F"></a>Que es Apollo?</h2>
<p>Apollo es el nombre código de un runtime para múltiples sistemas operativos siendo desarrollado por Adobe, que permite a desarrolladores el utilizar sus conocimientos en desarrollo Web (Flash,Flex,HTML,JavaScript,Ajax) para desarrollar y distribuir Aplicaciones Ricas para el Internet (RIA) para escritorio. </p>
<p></p>
<h2><a name="Is_Apollo_Available_for_Download.3F"></a>Esta Apollo disponible para descarga?</h2>
<p>Si. Se puede descargar la versión Alpha pre-liberada de la página <a href="http://www.adobe.com/go/getapollo" target="_blank" title="http://www.adobe.com/go/getapollo">Apollo Download</a> </p>
<p></p>
<h2><a name="What_type_of_applications_does_Apollo_t"></a>A que tipo de aplicaciones esta orientado Apollo?</h2>
<p>Apollo esta orientado a permitirles a los desarrolladores Web construir y distribuir aplicaciones para el escritorio.</p>
<p></p>
<h2><a name="What_types_of_developers_is_Apollo_targ"></a>A que tipo de desarrolladores esta dirigido Apollo?</h2>
<p>Apollo esta dirigido a desarrolladores que están actualmente haciendo uso de tecnologías Web tales como Flash, Flex, HTML, JavaScript y técnicas Ajax para construir y distribuir Aplicaciones Ricas para el Internet. </p>
<p></p>
<h2><a name="Is_Apollo_free_.28as_in_beer.29.3F"></a>Es Apollo gratis ( como en â€˜cerveza gratis')?</h2>
<p><a name="When_will_Apollo_be_released.3F"></a>Si. El runtime de Apollo será gratis (similar al Flash Player y Adobe Reader). </p>
<p></p>
<h2>Cuando será liberado Apollo?</h2>
<p>Se puede bajar una versión Alpha de pre-liberación al DIA de hoy de <a href="http://www.adobe.com/go/getapollo" target="_blank" title="http://www.adobe.com/go/getapollo">Apollo Download Page</a> </p>
<p>Por el momento estamos buscando liberar Apollo 1.0 en la segunda mitad del 2007 </p>
<p></p>
<h2><a name="What_platforms_does_Apollo_1.0_target.3"></a>A que plataformas esta dirigido Apollo?</h2>
<p><a name="Does_Apollo_support_Linux"></a>Apollo 1.0 será soportado en Windows y OS X. </p>
<p><b>Suporta Apollo Linux?</b></p>
<p>Apollo 1.0 no estará disponible para Linux. Planeamos liberar soporte para Linux poco después de la liberación de la versión 1.0 </p>
<p>Aunque originalmente habíamos planeado suportar Linux en el mismo periodo que la versión 1.0, tuvimos que esperar a que las partes esenciales del Flash Player para Linux estuvieran terminadas.</p>
<p></p>
<h2><a name="What_are_the_supported_operating_system"></a>Cuales son los sistemas operativos suportados para el alpha de Apollo?</h2>
<p>Windows XP con Service Pack 2 (SP2) o Vista Home premium edition </p>
<p>Macintosh Mac OSX 10.4 en PPC o Intel </p>
<p></p>
<h2><a name="What_are_some_of_the_features_included_"></a>Cuales son algunas de las características incluidas en el alpha de Apollo?</h2>
<p>Algunas de las características incluidas en el alpha de Apollo, pero limitadas a son: </p>
<ul type=disc>
<li >Suporte completo de HTML dentro de contenido basado en Flex- y Flash. </li>
<li >API de escritura y lectura de archivos. I/O API </li>
<li >múltiples modos de window chrome (incluyendo el native y custom/transparent) </li>
<li >Nativa windowing API (parcialmente implementada) </li>
<li >Comunicación entre ActionScript/JavaScript script </li>
<li >Componentes Flex </li>
<li >APIs para actualización de bajo nivel. (Low-level update APIs) </li>
<li >Suporte para uso de iconos </li>
</ul>
<p></p>
<h2><a name="What_are_some_of_the_features_that_are_"></a>Cuales son algunas de las características no incluidas en el alpha de Apollo?</h2>
<p>De bajo esta una lista parcial de las características planeadas para Apollo 1.0, las cuales no están aun implementadas en el alpha de Apollo: </p>
<ul type=disc>
<li >Suporte de archivos PDF </li>
<li >Online/offline APIs </li>
<li >Suporte completo para el top-level de aplicaciones HTML</li>
<li >APIs para persistencia de datos y su configuración </li>
<li >Soporte de Arrastrar y Soltar (Drag and drop) </li>
<li >Soporte de Copiar y Pegar </li>
<li >Cajas de dialogo nativas para seleccionar archivos </li>
<li >Soporte nativo completo de ventanas </li>
<li >Registro de extensiones de archivo </li>
<li >Iniciar una aplicación para manejar un tipo de archivo.</li>
<li >Control completo del menú de boton derecho ( right-click)</li>
<li > Transparencia in HTML </li>
</ul>
<p></p>
<h2><a name="Is_Apollo_a_web_browser.3F"></a>Es Apollo un navegador Web?</h2>
<p><a name="What_is_the_target_size_for_the_Apollo_"></a>No. Apollo es un multi-sistema operativo runtime que corre afuera del navegador. </p>
<p>En teoría se podría desarrollar un navegador Web encima de Apollo. </p>
<p></p>
<h2>Cual es el tamaño previsible para el runtime de Apollo?</h2>
<p><a name="How_is_Apollo_related_to_Macromedia_Cen"></a>El tamaño esperado actualmente para el runtime de Apollo es entre 5 y 9 megas. </p>
<p>Es importante aclarar que el runtime solo necesita ser instalado una vez. </p>
<p></p>
<h2>Como esta relacionado Apollo con Macromedia Central?</h2>
<p>Aunque hay un numero de miembros del equipo de Apollo que trabajo previamente en Macromedia Central, Apollo no esta directamente relacionado con Macromedia Central. </p>
<p>El código base de Apollo es completamente separado del de Macromedia Central. </p>
<p></p>
<h3><a name=Development></a>Desarrollo</h3>
<p></p>
<h2><a name="What_technologies_can_I_leverage_within"></a>Que tecnologías puedo explotar dentro de una aplicación Apollo?</h2>
<p>Apollo permitirá desarrollar aplicaciones usando Flash / Flex y HTML / JavaScript o una combinación de ambos. </p>
<p>Aplicaciones basadas en Flash serán capaces de incluir contenido creado en HTML , y aplicaciones basadas en HTML serán capaces de usar contenido creado con Flash. </p>
<p>Además, las aplicaciones Apollo podrán integrarse cercanamente con documentos en formato PDF, aunque esta funcionalidad no es disponible para el alpha de Apollo.</p>
<p></p>
<h2><a name="Can_I_use_just_HTML_and_JavaScript_to_b"></a>Puedo usar solo HTML y JavaScript para construir aplicaciones?</h2>
<p>Si. </p>
<p></p>
<h2><a name="What_IDE_do_I_use_to_develop_Apollo_App"></a>Cual IDE debo usar para desarrollar aplicaciones Apollo?</h2>
<p>Se puede hacer uso de cualquiera de los IDE ya existentes para el desarrollo de Flash/Flex o HTML/JavaScript. (Tales como Flex Builder, Eclipse, vim, etc...). Apollo no requiere de un IDE específico. </p>
<p>Liberaremos una serie de herramientas de comandos en línea para Apollo que harán fácil para los desarrolladores hacer el empacamiento y desarrollo de aplicaciones Apollo usando su IDE o editor favorito. Se puede descargar una versión alpha de estas herramientas en el <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs_apollo" target="_blank" title="http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs apollo">Apollo SDK</a>. </p>
<p>Básicamente, se puede usar cualquier cosa que cree archivos SWF's o HTML</p>
<p></p>
<h2><a name="Will_I_be_able_to_create_Apollo_Applica"></a>Podré crear aplicaciones Apollo con el Flash Authoring?</h2>
<p>Si. </p>
<p>Publicaremos más información en como crear contenido Flash con Flash Authoring, una vez que la siguiente versión del Flash Authoring sea liberada.</p>
<p></p>
<h2><a name="How_will_the_Apollo_runtime_be_distribu"></a>Como será distribuido el runtime de Apollo?</h2>
<p>Apollo será distribuido en varias formas, incluyendo pero no limitado a: </p>
<ul type=disc>
<li >Descarga del sitio Web de Adobe </li>
<li >Distribuido con aplicaciones Apollo (en el caso que el usuario no tenga Apollo instalado). </li>
</ul>
<p>Estamos también explorando una variedad de métodos de distribución, y tenemos confianza de que podremos tener significa distribución del runtime de Apollo rápidamente.</p>
<p>Nota, este tópico fue discutido en más detalle en <a href="http://weblogs.macromedia.com/mesh/archives/2006/07/podcast_july_14.html" target="_blank" title="http://weblogs.macromedia.com/mesh/archives/2006/07/podcast july 14.html">este podcast</a>. </p>
<p></p>
<h2><a name="Will_developers_be_able_to_distribute_t"></a>Podrán los desarrolladores distribuir el instalador del runtime de Apollo con sus aplicaciones?</h2>
<p>Si, además de crear y distribuir archivos de instalación para aplicaciones Apollo multi-plataforma, los desarrolladores podrán crear instaladores nativos que primero revisaran si el usuario tiene el runtime de Apollo instalado. Si no esta instalado, se instalara, y entonces se instalara la aplicación.</p>
<p>Nota, este tópico fue discutido en más detalle en <a href="http://weblogs.macromedia.com/mesh/archives/2006/07/podcast_july_14.html" target="_blank" title="http://weblogs.macromedia.com/mesh/archives/2006/07/podcast july 14.html">este podcast</a>. </p>
<p></p>
<h2><a name="How_are_Apollo_applications_installed.3"></a>Como se instalan las aplicaciones Apollo?</h2>
<p>Las aplicaciones Apollo son instaladas como cualquier otra en la computadora del usuario. El usuario descarga un archivo de instalación multi-plataforma, hace doble clic, lo cual empieza el proceso de instalación. </p>
<p>La experiencia para el usuario final dependerá de que sistema operativo esté usando, ya que Apollo proveerá de un mecanismo de instalación consistente con dicho sistema operativo.</p>
<p>También estamos explorando otros mecanismos para la instalación de aplicaciones Apollo.</p>
<p></p>
<h2><a name="What_HTML_and_JavaScript_Engine_is_used"></a>Que motor de HTML y JavaScript es usado dentro de Apollo?</h2>
<p>HTML y JavaScript dentro de Apollo son manejados por el motor WebKit HTML / JavaScript </p>
<p></p>
<h2><a name="Is_this_the_same_WebKit_project_that_th"></a>Es este el mismo proyecto WebKit en que están basados el navegador Safari en Mac OS y el navegador KHTML en KDE?</h2>
<p>Si. </p>
<p></p>
<h2>
<p><a name="Why_did_Adobe_choose_WebKit"></a><b>Por que escogió Adobe WebKit?</b></p>
</h2>
<p>Pusimos una cantidad considerable de tiempo investigando un número de motores de HTML para usar en Apollo. Teníamos cuatro principales requerimientos, los cuales WebKit cumplió: </p>
<ul type=disc>
<li >Proyecto abierto al cual pudiéramos contribuir </li>
<li >Tecnología comprobada, con la cual ya estuvieran familiarizados los desarrolladores de Web y usuarios finales</li>
<li >Mínimo impacto en el tamaño del runtime de Apollo </li>
<li >Habilidad comprobada para correr en dispositivos móviles </li>
</ul>
<p>Aunque la decisión final fue difícil, sentimos que el WebKit es la opción más cercana para Apollo por el momento.</p>
<p></p>
<h2><a name="Will_Apollo.27s_use_of_WebKit_result_in"></a>Resultara el uso de Webkit en Apollo en un nuevo motor para HTML del cual los desarrolladores serán responsables?</h2>
<p>No. Nuestra meta es mantener compatibilidad completa con las implementaciones existentes de WebKit. Esto ayudara a asegurar que el contenido que corre en los navegadores basados en WebKit, tales como Safari de Apple , también corran dentro de las aplicaciones Apollo. </p>
<p></p>
<h2><a name="Does_Adobe_plan_to_submit_changes_back_"></a>Planea Adobe presentar cambios al proyecto WebKit?</h2>
<p><a name="Is_this_the_same_WebKit_as_the_WebKit_f"></a>Si. Nuestra meta es convertirnos en activo miembro de la comunidad WebKit y activamente presentar cambios y correcciones al proyecto WebKit para consideración. </p>
<p></p>
<h2>Es este el mismo WebKit framework que el de Mac OS X?</h2>
<p>No exactamente. El proyecto WebKit de código abierto, y el Apple WebKit Framework para Mac OS X son dos cosas diferentes. </p>
<p>Apollo usa el código base directamente del proyecto WebKit, y no del de Apple WebKit framework. </p>
<p></p>
<h2><a name="Where_can_I_find_more_information_on_We"></a>Donde puedo encontrar mas información sobre WebKit</h2>
<p>Se puede encontrar más información sobre el WebKit en: </p>
<ul type=disc>
<li ><a href="http://WebKit.org/projects/documentation/index.html" target="_blank" title="http://WebKit.org/projects/documentation/index.html">WebKit Project Home</a> </li>
<li ><a href="http://WebKit.org/blog/" target="_blank" title="http://WebKit.org/blog/">Surfin Safari Blog</a> </li>
</ul>
<p></p>
<h2><a name="Will_Apollo_Applications_be_able_to_com">Podrán comunicarse las aplicaciones Apollo unas con otras?</a></h2>
<p>Si. Serán capaces de comunicarse unas con otras haciendo uso de LocalConnection una API de ActionScript. </p>
<p></p>
<h2><a name="Will_Apollo_Applications_be_able_to_com2">Podrán comunicarse las aplicaciones Apollo directamente con bases de datos?</a></h2>
<p>Apollo 1.0 no tendrá soporte incluido para comunicación directa con bases de datos. Sin embargo, será posible escribir manejadores de base de datos con ActionScript( usando soques binarios o de XML), los cuales le permitirán a las aplicaciones de Apolo comunicarse directamente con una base de datos ( local y remotamente) </p>
<p></p>
<h2><a name="Will_Apollo_include_an_embedded_databas"></a>Incluirá Apollo una base de datos integrada que las aplicaciones puedan acceder?</h2>
<p>Esta es una característica que todavía estamos considerando para la versión 1.0. </p>
<p></p>
<h2><a name="How_much_control_will_developers_.2F_de"></a>Que tanto control tendrán los desarrolladores / diseñadores sobre la apariencia de sus aplicaciones?</h2>
<p>Desarrolladores y diseñadores tendrán 100% control sobre la apariencia de sus aplicaciones. </p>
<p></p>
<h2><a name="Can_I_reuse_existing_Flex_2_code_in_an_"></a>Puedo usar código de Flex 2 en una aplicación Apollo?</h2>
<p>Si. De hecho, no se necesitara re-escribir nada del código para tener una aplicación Flex corriendo dentro de Apollo, aunque tal vez se necesite escribir código adicional para tomar ventaja de especificas APIs de Apollo.</p>
<p></p>
<h2><a name="What_are_some_of_the_APIs_that_Apollo_w"></a>Cuales son algunas de las APIs de Apollo que estarán disponibles para los desarrolladores?</h2>
<p><a name="Will_Apollo_applications_be_able_to_wor"></a>Algunas de las APIs que han sido discutidas son: </p>
<ul type=disc>
<li >Escritura y lectura de archivos (File I/O) </li>
<li >Online / Offline </li>
<li >Windowing </li>
<li >Portapapeles (Clipboard) </li>
<li >Sistema de arrastrar y soltar (System Drag and Drop) </li>
<li >API de manejo completo de red. Full Network API support </li>
<li >Almacenamiento Local y su configuración </li>
<li >más... </li>
</ul>
<p></p>
<h2>Podrán funcionar las aplicaciones Apollo fuera de línea(offline)?</h2>
<p>Si. Apollo proveerá de un conjunto de APIs que hacen fácil desarrollar aplicaciones que trabajen offline. </p>
<p>Esta funcionalidad no esta implementada en el alpha de Apollo. </p>
<p></p>
<h2><a name="Will_developers_be_able_to_extend_Apoll"></a>Podrán los desarrolladores extender Apollo con código nativo?</h2>
<p>No. Esta funcionalidad no estará disponible en Apollo 1.0</p>
<p></p>
<h2><a name="Will_Apollo_Applications_be_able_to_lau"></a>Podrán las aplicaciones Apollo abrir las aplicaciones por defecto según el tipo de archivo?</h2>
<p>Si. Aplicaciones Apollo podrán abrir las aplicaciones por defecto para abrir un archive especifico dependiendo de su tipo. </p>
<p>Por ejemplo, se le podrá decir al sistema operativo que abra la aplicación por defecto para un documento específico. </p>
<p></p>
<h2><a name="Will_Apollo_Applications_be_able_to_dir"></a>Podrán las aplicaciones Apollo iniciar directamente aplicaciones nativas?</h2>
<p>Esta es una característica que todavía estamos considerando para Apollo 1.0. </p>
<p></p>
<h2><a name="Does_Apollo_provide_an_Application_upda"></a>Ofrece Apollo un mecanismo de actualización de aplicaciones?</h2>
<p>Si, Apollo ofrecerá un mecanismo para actualizar aplicaciones fácilmente. Esto esta parcialmente implementado en el alpha de Apollo. </p>
<p></p>
<h2><a name="Is_Apollo_an_exe_.2F_projector_creator."></a>Puede Apollo crear ejecutables o proyectores (exe / projector)?</h2>
<p>No. Apollo es un runtime que corre en varios sistemas operativos y que corre en el sistema del usuario. </p>
<p>Una de las ventajas de esto es que los archivos de instalación de Apollo pueden ser mucho mas pequeños, ya que no requieren del motor del runtime en su totalidad para ser distribuidos con cada una de la copias de la aplicación. </p>
<p>Esto también permite integrar tecnologías juntas (Flash,HTML,PDF) en un mucho mas bajo nivel de lo que de otra manera no seria posible.</p>
<p>Finalmente, esto nos permite ofrecer un modelo de seguridad más estandarizado y consistente para las aplicaciones Apollo y usuarios.</p>
<p></p>
<h2><a name="What_security_model_does_the_Apollo_run"></a>Que modelo de seguridad ofrece Apollo?</h2>
<p>Nuestra meta es ofrecer la funcionalidad que desarrolladores quieren y necesitan, y al mismo tiempo permitirles crear aplicaciones seguras. </p>
<p>Aunque todavía estamos terminando la política de seguridad, en la base de cualquier política esta el hecho de que las aplicaciones Apollo son descargadas, instaladas y ejecutadas en el escritorio del usuario. Es por ello que estas corren en un contexto de seguridad diferente a las aplicaciones que se ejecutan en un servidor Web, y tendrán un modelo de seguridad mas cercano al de una aplicación de escritorio.</p>
<p></p>
<h2><a name="Can_I_create_CD-Rom_or_Kiosk_applicatio"></a>Podré crear aplicaciones en un CD-ROM o aplicaciones de tipo Quiosco que hagan uso de Apollo?</h2>
<p>Si se podrá distribuir e instalar aplicaciones Apollo desde un CD-ROM, aunque por el momento, no tenemos planes de permitir que las aplicaciones Apollo corran desde un CD-ROM sin que hallan sido instaladas primero en el sistema del usuario. </p>
<p>También será posible crear aplicaciones Quisco que usen el runtime de Apollo, de nuevo, este no es un caso de uso que este motivando las características de Apollo 1.0</p>
<p></p>
<h2><a name="Will_Macromedia_Central_Apps_be_able_to"></a>Podrán correr dentro de Apollo las aplicaciones Macromedia Central?</h2>
<p>No. Aplicaciones Central fueron construidas con ActionScript 2 y están dirigidas a una versión anterior de la maquina virtual (AVM1) del Flash Player, y descansa en una arquitectura muy especifica para central. Es por esto que las aplicaciones Central no correrán en Apollo. </p>
<p></p>
<h2><a name="Will_Flash_version_8_and_below_SWFs_bei"></a>Podrán las versiones 8 de Flash y menores correr en Apollo?</h2>
<p>Si. Sin embargo las API de Apollo están solo expuestas a contenido Flash a través de ActionScript 3 / AVM2, y por eso Flash 8 /AVM1 SWFs serán capaces de correr, pero no tendrán acceso directo a las API de Apollo.</p>
<p></p>
<h3><a name="Known_Issues_and_Workarounds"></a>Problemas conocidos y soluciones </h3>
<p></p>
<h2><a name="Can_I_install_an_Apollo_Application_ont"></a>Puedo instalar una aplicación Apollo en un sistema operativo que no este en ingles?</h2>
<p>Si, aunque esto no es suportado en Alpha 1. En sistemas operativos basados en Windows que no estén en ingles, puede que se necesite hacer lo siguiente para poder instalar aplicaciones Apollo: </p>
<p>Cambiar la variable TEMP para el usuario en My Computer ( Mi Computadora) para que apunte a una ruta que contenga solo caracteres en ingles ( a algo como C:\TMP)</p>
<p><a href="http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=72&amp;catid=641&amp;threadid=1252135&amp;enterthread=y" target="_blank" title="http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=72&amp;catid=641&amp;threadid=1252135&amp;enterthread=y">de los labs forum</a> </p>
<p></p>
<h3><a name=Feedback></a>Sugerencias y Comentarios</h3>
<p></p>
<h2><a name="Where_can_I_report_Issues_.2F_problems_"></a>Donde puede reportar dificultades / problemas con Apollo?</h2>
<p>Favor de reportar cualquier defecto o dificultades que se encuentren con el alpha de Apollo en el <a href="http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&amp;catid=641" target="_blank" title="http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&amp;catid=641">Apollo Labs forum</a>. </p>
<p></p>
<h2><a name="Where_can_I_send_feature_requests_for_A"></a>Donde puedo enviar requerimientos de funcionalidad de Apollo?</h2>
<p><a name="News_and_Information"></a>Pueden ser enviadas a <a href="mailto:wish-apollo@adobe.com" target="_blank" title="mailto:wish-apollo@adobe.com">wish-apollo@adobe.com</a>. </p>
<p></p>
<h3>Noticias e información</h3>
<p></p>
<h2><a name="Where_can_I_find_the_latest_news_and_in"></a>Donde puedo encontrar las últimas noticias con respecto a noticias e información acerca de Apollo?</h2>
<ul type=disc>
<li ><a href="http://labs.adobe.com/wiki/index.php/Apollo" target="_blank" title="http://labs.adobe.com/wiki/index.php/Apollo">Adobe Labs Apollo Page</a> </li>
<li ><a href="http://weblogs.macromedia.com/mxna/index.cfm?query=bySmartCategory&amp;smartCategoryId=28&amp;smartCategoryName=Apollo&amp;smartCategoryKey=F2DFD9E0-FBB6-4C2D-2AFE6AFD941FDDB1" target="_blank" title="http://weblogs.macromedia.com/mxna/index.cfm?query=bySmartCategory&amp;smartCategoryId=28&amp;smartCategoryName=Apollo&amp;smartCategoryKey=F2DFD9E0-FBB6-4C2D-2AFE6AFD941FDDB1">Apollo Smart Category at MXNA</a> (<a href="http://weblogs.macromedia.com/mxna/xml/rss.cfm?query=bySmartCategory&amp;languages=1&amp;smartCategoryId=28&amp;smartCategoryKey=F2DFD9E0-FBB6-4C2D-2AFE6AFD941FDDB1" target="_blank" title="http://weblogs.macromedia.com/mxna/xml/rss.cfm?query=bySmartCategory&amp;languages=1&amp;smartCategoryId=28&amp;smartCategoryKey=F2DFD9E0-FBB6-4C2D-2AFE6AFD941FDDB1">RSS Feed</a>) </li>
<li ><a href="http://www.bloglines.com/search?q=adobe+apollo&amp;ql=en&amp;s=f&amp;pop=l&amp;news=m" target="_blank" title="http://www.bloglines.com/search?q=adobe apollo&amp;ql=en&amp;s=f&amp;pop=l&amp;news=m">Apollo Search at Bloglines</a> (<a href="http://www.bloglines.com/search?q=adobe+apollo&amp;ql=en&amp;s=f&amp;pop=l&amp;news=m&amp;format=rss" target="_blank" title="http://www.bloglines.com/search?q=adobe apollo&amp;ql=en&amp;s=f&amp;pop=l&amp;news=m&amp;format=rss">RSS Feed</a>) </li>
<li ><a href="http://weblogs.macromedia.com/mesh/" target="_blank" title="http://weblogs.macromedia.com/mesh/">Mike Chambers' Weblog</a> Developer Relations para Apollo </li>
</ul>
<p></p>
<h2><a name="Is_Apollo_being_discussed_at_any_upcomi"></a>Se hablara de Apollo en las próximas conferencias?</h2>
<p>Si. Se puede encontrar una lista actualizada de las pláticas públicas acerca de Apollo <a href="http://weblogs.macromedia.com/mesh/archives/2006/09/public_apollo_c.html" target="_blank" title="http://weblogs.macromedia.com/mesh/archives/2006/09/public apollo c.html">aquí</a>. </p>
<p></p>
<h3><a name="FAQ_Information"></a>Información FAQ</h3>
<p></p>
<h2><a name="Is_this_an_Official_FAQ.3F"></a>Es este el sitio oficial de la FAQ?</h2>
<p>Nota del traductor: Esta es una traducción de la FAQ oficial en ingles la cual es mantenida por Mike Chambers, que esta a cargo del Developer Relations para Apollo en Adobe. </p>
<p></p>
<h2><a name="How_can_I_send_feedback_about_the_FAQ"></a>Donde puede enviar sugerencias y comentarios acerca de la FAQ</h2>
<p>Puede enviarlos a <a href="mailto:mesh@adobe.com" target="_blank" title="mailto:mesh@adobe.com">Mike Chambers</a>. </p>
<p><!-- Saved in parser cache with key labswiki:pcache:idhash:1415-1!1!0!1!0!1!0!!en and timestamp 20070319171522 --></p>
<p>Traducido de &quot;<a href="http://labs.adobe.com/wiki/index.php/Apollo:DeveloperFAQ">http://labs.adobe.com/wiki/index.php/Apollo:DeveloperFAQ</a>&quot;</p>
<p>De la copia de las 17:15,19 Mar 2007</p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fapollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Apollo%3A%20Preguntas%20Frecuentes%20del%20Desarrollador%20%28Developer%20FAQ%29%20en%20Castellano.%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fapollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fapollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano%2F&amp;t=Apollo%3A%20Preguntas%20Frecuentes%20del%20Desarrollador%20%28Developer%20FAQ%29%20en%20Castellano." title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fapollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano%2F&amp;title=Apollo%3A%20Preguntas%20Frecuentes%20del%20Desarrollador%20%28Developer%20FAQ%29%20en%20Castellano.&amp;annotation=Nota%3A%20traducci%C3%B3n%20hecha%20del%20original%20en%20ingles%20al%20espa%C3%B1ol%20por%20Oscar%20Cortes%20-%20Hola%20Flex%21%0D%0A%0D%0A%201%20General%0D%0A%0D%0A%0D%0A%201.1%20Que%20es%20Apollo%3F%0D%0A%20%20%201.2%20Esta%20Apollo%20disponible%20para%20descarga%3F%0D%0A%20%20%201.3%20A%20que%20tipo%20de%20aplicaciones%20esta%20orientado%20Apollo%3F%0D%0A%20%20%201.4%20A%20que%20tipo" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fapollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano%2F&amp;title=Apollo%3A%20Preguntas%20Frecuentes%20del%20Desarrollador%20%28Developer%20FAQ%29%20en%20Castellano.&amp;notes=Nota%3A%20traducci%C3%B3n%20hecha%20del%20original%20en%20ingles%20al%20espa%C3%B1ol%20por%20Oscar%20Cortes%20-%20Hola%20Flex%21%0D%0A%0D%0A%201%20General%0D%0A%0D%0A%0D%0A%201.1%20Que%20es%20Apollo%3F%0D%0A%20%20%201.2%20Esta%20Apollo%20disponible%20para%20descarga%3F%0D%0A%20%20%201.3%20A%20que%20tipo%20de%20aplicaciones%20esta%20orientado%20Apollo%3F%0D%0A%20%20%201.4%20A%20que%20tipo" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fapollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Apollo%3A%20Preguntas%20Frecuentes%20del%20Desarrollador%20%28Developer%20FAQ%29%20en%20Castellano.&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fapollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fapollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/ebook-apollo-in-flight/' rel='bookmark' title='Permanent Link: eBook : Apollo in Flight'>eBook : Apollo in Flight</a></li>
<li><a href='http://www.codigoactionscript.org/apollo-code/' rel='bookmark' title='Permanent Link: Apollo-Code'>Apollo-Code</a></li>
<li><a href='http://www.codigoactionscript.org/crear-una-aplicacion-apollo-con-flash-cs3/' rel='bookmark' title='Permanent Link: Crear una aplicación Apollo con Flash CS3'>Crear una aplicación Apollo con Flash CS3</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/apollo-preguntas-frecuentes-del-desarrollador-developer-faq-en-castellano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lo que yo sé de AS2 #Enlaces, enlaces, millones de enlaces</title>
		<link>http://www.codigoactionscript.org/lo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces/</link>
		<comments>http://www.codigoactionscript.org/lo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces/#comments</comments>
		<pubDate>Wed, 21 Mar 2007 21:51:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Aportes]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[Referencia]]></category>

		<guid isPermaLink="false">http://www.codigo.as/blog/?p=68</guid>
		<description><![CDATA[
<p>Lo que yo sé de AS2 (condensado y pasteurizado)</p>
<p>*AUTOR: Juan Delgado Zárate
  zarate.tv &#124; dandolachapa.com &#124; loqueyosede.comFlashLa.com &#124; After-Hours.org</p>

Enlaces, enlaces, millones de enlaces
<p>>Indice de contenidos</p>
Software 

MTASC,&#160;compilador&#160;de&#160;AS2&#160;gratuito 
SWFMill,&#160;generador&#160;de&#160;swfs&#160;muy&#160;usado&#160;junto&#160;con&#160;MTASC 
FLASC&#160;(Flash&#160;IDE&#160;+&#160;MTASC) 
Herramientas&#160;de&#160;debug&#160;en&#160;OSFlash 
Zlog,&#160;sencilla&#160;consola&#160;de&#160;Log 

Tutoriales 

Flash&#160;Libre,&#160;fácil.&#160;Aprende&#160;a&#160;utilizar&#160;MTASC&#160;y&#160;SWFMill 
Delegando&#160;que&#160;es&#160;gerundio 

EventDispatcher 

GDispatcher.&#160;La&#160;versión&#160;que&#160;va&#160;en&#160;el&#160;zip&#160;con&#160;el&#160;código&#160;está&#160;modificada&#160;para&#160;meterla dentro&#160;de&#160;un&#160;classpath&#160;normal&#160;y&#160;para&#160;que&#160;compile&#160;con&#160;strict&#160;en&#160;MTASC 
Jorge&#160;Maestre,&#160;Comunicación&#160;basada&#160;en&#160;eventos&#160;para&#160;AS2 
Cómo&#160;crear&#160;instancias&#160;de&#160;clase&#160;dinámicamente 
http://www.zarate.tv/articulos/cargarclasesdinamicamente/ 
Using&#160;_exclude.xml,&#160;the&#160;Good,&#160;the&#160;Bad,&#160;and&#160;the&#160;Wishlist 
Cómo&#160;usar&#160;_exclude&#160;con&#160;MTASC 
Why&#160;does&#160;my&#160;initializer&#160;get&#160;shared&#160;across&#160;all&#160;instances&#160;like&#160;it's&#160;static? 

Patrones&#160;y&#160;OOP&#160;tips 

Singleton 
Observer 
Factory&#160;pattern 
The&#160;God&#160;Object 
http://en.wikipedia.org/wiki/Design_Patterns 
ModeloVistaControlador,&#160;por&#160;César&#160;Tardáguila 1
ModeloVistaControlador,&#160;por&#160;César&#160;Tardáguila 2
ModeloVistaControlador&#160;en&#160;Java
ObjectOriented&#160;Programming&#160;with&#160;ActionScript&#160;2.0&#160;(libro) 
Head&#160;First,&#160;Design&#160;Patterns&#160;(libro) 
Why&#160;getter&#160;and&#160;setter&#160;methods&#160;are&#160;evil 

Recursos 

Layer51.&#160;Protos&#160;en&#160;AS1&#160;para&#160;todo&#160;lo&#160;que&#160;puedas&#160;imaginar 
Extensión&#160;de&#160;Macromedia&#160;para&#160;limpiar&#160;la&#160;cache&#160;de&#160;clases&#160;(ASO)&#160;en&#160;el&#160;IDE 

Foros&#160;y&#160;listas&#160;de&#160;correo 

Domestika 
AfterHours 
5dms 
FlashLa 
Cristalab 

Revisores 

donDiegote 
Txuma&#160;Campos 
Toni&#160;López 
Cay 

[ anterior ]
<p></p>



Comparte:


	
	
	
	
	
	
	
	




<p>Related posts:Lo que yo sé de AS2 (*por Zárate)
Lo que yo sé de AS2 #Entorno de trabajo
Lo que yo sé [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-por-zarate/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 (*por Zárate)'>Lo que yo sé de AS2 (*por Zárate)</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-entorno-de-trabajo/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #Entorno de trabajo'>Lo que yo sé de AS2 #Entorno de trabajo</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-introduccion/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #introducción'>Lo que yo sé de AS2 #introducción</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=codigo><strong>
<p>Lo que yo sé de AS2 (condensado y pasteurizado)</strong></p>
<p><img src="http://www.codigo.as/blog/images/botones/zarate.gif" alt="img" align="left"/><strong>*AUTOR</strong>: Juan Delgado Zárate<br />
  <a href="http://www.zarate.tv">zarate.tv</a> | <a href="http://www.dandolachapa.com">dandolachapa.com</a> | <a href="http://www.loqueyosede.com">loqueyosede.com</a><br /><a href="http://www.FlashLa.com">FlashLa.com</a> | <a href="http://www.After-Hours.org">After-Hours.org</a></p>
</div>
<h3>Enlaces, enlaces, millones de enlaces</h3>
<p><strong><a href="http://www.codigo.as/blog/?p=60">>Indice de contenidos</a></strong></p>
<h2>Software </h2>
<ul>
<li><a href="http://mtasc.org/%20">MTASC,&nbsp;compilador&nbsp;de&nbsp;AS2&nbsp;gratuito </a></li>
<li><a href="http://www.swfmill.org/%20">SWFMill,&nbsp;generador&nbsp;de&nbsp;swfs&nbsp;muy&nbsp;usado&nbsp;junto&nbsp;con&nbsp;MTASC </a></li>
<li><a href="http://osflash.org/flasc%20">FLASC&nbsp;(Flash&nbsp;IDE&nbsp;+&nbsp;MTASC) </a></li>
<li><a href="http://osflash.org/open_source_flash_projects#logging_tools%20">Herramientas&nbsp;de&nbsp;debug&nbsp;en&nbsp;OSFlash </a></li>
<li><a href="http://www.zarate.tv/proyectos/zlog/index.htm%20">Zlog,&nbsp;sencilla&nbsp;consola&nbsp;de&nbsp;Log </a></li>
</ul>
<h2>Tutoriales </h2>
<ul>
<li><a href="http://www.zarate.tv/articulos/flash_libre_facil/%20">Flash&nbsp;Libre,&nbsp;fácil.&nbsp;Aprende&nbsp;a&nbsp;utilizar&nbsp;MTASC&nbsp;y&nbsp;SWFMill </a></li>
<li><a href="http://www.zarate.tv/articulos/delegandoqueesgerundio/%20">Delegando&nbsp;que&nbsp;es&nbsp;gerundio </a></li>
</ul>
<h3>EventDispatcher </h3>
<ul>
<li><a href="http://www.gskinner.com/blog/archives/2003/09/code_gdispatche.html%20">GDispatcher</a>.&nbsp;La&nbsp;versión&nbsp;que&nbsp;va&nbsp;en&nbsp;el&nbsp;zip&nbsp;con&nbsp;el&nbsp;código&nbsp;está&nbsp;modificada&nbsp;para&nbsp;meterla dentro&nbsp;de&nbsp;un&nbsp;classpath&nbsp;normal&nbsp;y&nbsp;para&nbsp;que&nbsp;compile&nbsp;con&nbsp;strict&nbsp;en&nbsp;MTASC </li>
<li><a href="http://blog.jorgemaestre.com/2006/10/31/modelodecomunicacionbasadoeneventosparaas2/%20">Jorge&nbsp;Maestre,&nbsp;Comunicación&nbsp;basada&nbsp;en&nbsp;eventos&nbsp;para&nbsp;AS2 </a></li>
<li><a href="http://www.zarate.tv/articulos/instanciasdinamicamente/%20">Cómo&nbsp;crear&nbsp;instancias&nbsp;de&nbsp;clase&nbsp;dinámicamente </a></li>
<li><a href="Utilizaci&#243;n&#160;de&#160;archivos&#160;_exclude%20">http://www.zarate.tv/articulos/cargarclasesdinamicamente/ </a></li>
<li><a href="http://www.darronschall.com/weblog/archives/000145.cfm%20">Using&nbsp;_exclude.xml,&nbsp;the&nbsp;Good,&nbsp;the&nbsp;Bad,&nbsp;and&nbsp;the&nbsp;Wishlist </a></li>
<li><a href="http://mtasc.org/#usage%20">Cómo&nbsp;usar&nbsp;_exclude&nbsp;con&nbsp;MTASC </a></li>
<li><a href="http://osflash.org/flashcoders/as2%20">Why&nbsp;does&nbsp;my&nbsp;initializer&nbsp;get&nbsp;shared&nbsp;across&nbsp;all&nbsp;instances&nbsp;like&nbsp;it's&nbsp;static? </a></li>
</ul>
<h2>Patrones&nbsp;y&nbsp;OOP&nbsp;tips </h2>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Singleton_pattern%20">Singleton</a> </li>
<li><a href="http://en.wikipedia.org/wiki/Observer_pattern%20">Observer</a> </li>
<li><a href="http://en.wikipedia.org/wiki/Factory_pattern%20">Factory&nbsp;pattern </a></li>
<li><a href="http://en.wikipedia.org/wiki/God_object%20">The&nbsp;God&nbsp;Object </a></li>
<li><a href="http://en.wikipedia.org/wiki/Gang_of_Four_(software)%20">http://en.wikipedia.org/wiki/Design_Patterns </a></li>
<li><a href="http://www.designnation.net/en/archives/000154.php%20">ModeloVistaControlador,&nbsp;por&nbsp;César&nbsp;Tardáguila 1</a></li>
<li><a href="http://www.designnation.net/en/archives/000156.php%20">ModeloVistaControlador,&nbsp;por&nbsp;César&nbsp;Tardáguila 2</a></li>
<li><a href="http://java.sun.com/blueprints/patterns/MVCdetailed.html%20">ModeloVistaControlador&nbsp;en&nbsp;Java</a></li>
<li><a href="href=%22http://www.amazon.co.uk/ObjectOrientedProgrammingActionScriptJeffTapper/dp/0735713804/ref=sr_1_1/20202646594245418?ie=UTF8&#038;s=books&#038;qid=1173000321&#038;sr=11%20">ObjectOriented&nbsp;Programming&nbsp;with&nbsp;ActionScript&nbsp;2.0&nbsp;(libro) </a></li>
<li><a href="http://www.amazon.co.uk/HeadFirstDesignPatterns/dp/0596007124/sr=81/qid=1171813704/ref=sr_1_1/02664954158011636?ie=UTF8&#038;s=books%20">Head&nbsp;First,&nbsp;Design&nbsp;Patterns&nbsp;(libro) </a></li>
<li><a href="http://www.javaworld.com/javaworld/jw092003/jw0905toolbox.html%20">Why&nbsp;getter&nbsp;and&nbsp;setter&nbsp;methods&nbsp;are&nbsp;evil </a></li>
</ul>
<h2>Recursos </h2>
<ul>
<li><a href="http://proto.layer51.com/%20">Layer51.&nbsp;Protos&nbsp;en&nbsp;AS1&nbsp;para&nbsp;todo&nbsp;lo&nbsp;que&nbsp;puedas&nbsp;imaginar </a></li>
<li><a href="http://weblogs.macromedia.com/mesh/archives/2004/07/new_aso_cache_c.html%20">Extensión&nbsp;de&nbsp;Macromedia&nbsp;para&nbsp;limpiar&nbsp;la&nbsp;cache&nbsp;de&nbsp;clases&nbsp;(ASO)&nbsp;en&nbsp;el&nbsp;IDE </a></li>
</ul>
<h2>Foros&nbsp;y&nbsp;listas&nbsp;de&nbsp;correo </h2>
<ul>
<li><a href="http://domestika.org%20">Domestika</a> </li>
<li><a href="http://afterhours.org%20">AfterHours </a></li>
<li><a href="http:5dms.com%20">5dms</a> </li>
<li><a href="http://flashla.com%20">FlashLa</a> </li>
<li><a href="http://www.cristalab.com">Cristalab</a> </li>
</ul>
<h2>Revisores </h2>
<ul>
<li><a href="http://thelirios.com%20">donDiegote </a></li>
<li><a href="http://www.ctrlaltsupr.com/%20">Txuma&nbsp;Campos </a></li>
<li><a href="http://afterhours.org/">Toni&nbsp;López </a></li>
<li><a href="http://www.ventdaval.com/">Cay</a> </li>
</ul>
<h2><a href="http://www.codigo.as/blog/?p=67">[ anterior ]</a></h2>
<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/es/"><img src="http://creativecommons.org/images/public/somerights20.png" alt="img" /></a></p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Enlaces%2C%20enlaces%2C%20millones%20de%20enlaces%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces%2F&amp;t=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Enlaces%2C%20enlaces%2C%20millones%20de%20enlaces" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces%2F&amp;title=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Enlaces%2C%20enlaces%2C%20millones%20de%20enlaces&amp;annotation=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%28condensado%20y%20pasteurizado%29%2AAUTOR%3A%20Juan%20Delgado%20Z%C3%A1rate%0D%0A%20%20zarate.tv%20%7C%20dandolachapa.com%20%7C%20loqueyosede.comFlashLa.com%20%7C%20After-Hours.org%0D%0AEnlaces%2C%20enlaces%2C%20millones%20de%20enlaces%0D%0A%3EIndice%20de%20contenidos%0D%0A%0D%0ASoftware%20%0D%0A%0D%0A%20%20MTASC%2C%26nbsp%3Bco" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces%2F&amp;title=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Enlaces%2C%20enlaces%2C%20millones%20de%20enlaces&amp;notes=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%28condensado%20y%20pasteurizado%29%2AAUTOR%3A%20Juan%20Delgado%20Z%C3%A1rate%0D%0A%20%20zarate.tv%20%7C%20dandolachapa.com%20%7C%20loqueyosede.comFlashLa.com%20%7C%20After-Hours.org%0D%0AEnlaces%2C%20enlaces%2C%20millones%20de%20enlaces%0D%0A%3EIndice%20de%20contenidos%0D%0A%0D%0ASoftware%20%0D%0A%0D%0A%20%20MTASC%2C%26nbsp%3Bco" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Enlaces%2C%20enlaces%2C%20millones%20de%20enlaces&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-por-zarate/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 (*por Zárate)'>Lo que yo sé de AS2 (*por Zárate)</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-entorno-de-trabajo/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #Entorno de trabajo'>Lo que yo sé de AS2 #Entorno de trabajo</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-introduccion/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #introducción'>Lo que yo sé de AS2 #introducción</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/lo-que-yo-se-de-as2-enlaces-enlaces-millones-de-enlaces/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lo que yo sé de AS2 #Unos apuntes</title>
		<link>http://www.codigoactionscript.org/que-yo-se-de-as2-unos-apuntes/</link>
		<comments>http://www.codigoactionscript.org/que-yo-se-de-as2-unos-apuntes/#comments</comments>
		<pubDate>Mon, 19 Mar 2007 23:09:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Aportes]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[Referencia]]></category>

		<guid isPermaLink="false">http://www.codigo.as/blog/?p=67</guid>
		<description><![CDATA[
<p>Lo que yo sé de AS2 (condensado y pasteurizado)</p>
<p>*AUTOR: Juan Delgado Zárate
  zarate.tv &#124; dandolachapa.com &#124; loqueyosede.comFlashLa.com &#124; After-Hours.org</p>

Unos apuntes
<p>>Indice de contenidos</p>
<p>Aquí van unos comentarios que no sé dónde encajar pero que me parecen útiles a la hora de pensar aplicaciones AS2. </p>
Â¿Extender o interface?
<p>Para tomar esta decisión hay varias cosas a tener en cuenta. Por ejemplo, en Flash no hay herencia múltiple (sólo se puede extender de una clase), pero se pueden implementar varias interfaces. </p>
<p>Sin embargo, para mi la clave viene dada por cuántas cosas en común [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-por-zarate/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 (*por Zárate)'>Lo que yo sé de AS2 (*por Zárate)</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-clases-instancias-propiedades/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #Clases, instancias, propiedades'>Lo que yo sé de AS2 #Clases, instancias, propiedades</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-entorno-de-trabajo/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #Entorno de trabajo'>Lo que yo sé de AS2 #Entorno de trabajo</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=codigo><strong>
<p>Lo que yo sé de AS2 (condensado y pasteurizado)</strong></p>
<p><img src="http://www.codigo.as/blog/images/botones/zarate.gif" alt="img" align="left"/><strong>*AUTOR</strong>: Juan Delgado Zárate<br />
  <a href="http://www.zarate.tv">zarate.tv</a> | <a href="http://www.dandolachapa.com">dandolachapa.com</a> | <a href="http://www.loqueyosede.com">loqueyosede.com</a><br /><a href="http://www.FlashLa.com">FlashLa.com</a> | <a href="http://www.After-Hours.org">After-Hours.org</a></p>
</div>
<h3>Unos apuntes</h3>
<p><strong><a href="http://www.codigo.as/blog/?p=60">>Indice de contenidos</a></strong></p>
<p>Aquí van unos comentarios que no sé dónde encajar pero que me parecen útiles a la hora de pensar aplicaciones AS2. </p>
<h2>Â¿Extender o interface?</h2>
<p>Para tomar esta decisión hay varias cosas a tener en cuenta. Por ejemplo, en Flash no hay herencia múltiple (sólo se puede extender de una clase), pero se pueden implementar varias interfaces. </p>
<p>Sin embargo, para mi la clave viene dada por cuántas cosas en común van a hacer las distintas implementaciones. Por ejemplo es normal que un grupo de vistas tengan un montón de código común: </p>
<ul>
<li>Tener un método setSize</li>
<li>Tener una instancia del modelo</li>
<li>Tener una variable base_mc, con una referencia al MovieClip base sobre el que trabajar.</li>
<li>Un método config() con parámetros comunes</li>
<li>...</li>
</ul>
<p>Parece que hay bastante código común, así que se podría guardar todo ese código común en una clase CommonView y luego hacer que las vistas específicas la extiendan y sobrescriban sólo los métodos necesarios. </p>
<p>Sin embargo, el ejemplo puesto en el apartado del patrón Factory en el que bajo la misma interface se implementaban 2 contenedores distintos que proporcionan acceso al sistema de archivos para la misma aplicación, el código común entre la clase de Screenweaver y la clase para lenguaje de servidor es mínimo, por lo que la interface es mejor. </p>
<h2>Â¿Extender de MovieClip? No, gracias</h2>
<p>Ã‰ste es un tema sobre el que hay bastante "polémica" en cualquier lista de correo de Flash. Así que volveré a dejar por escrito que ésta es _mi_ forma preferida de hacerlo. Sin embargo, no es un capricho, éstas son mis razones: </p>
<ul>
<li>En Flash no hay herencia múltiple, así que si extiendes de MovieClip no puedes extender de nada más.</li>
<li>Las clases que extienden de MovieClip no se instancian mediante new, sino mediante attachMovie, lo que es bastante raro desde el punto de vista de un programador. </li>
</ul>
<p>Cuando creo clases que tienen un componente gráfico (un menú, un TextArea, un player de vídeo) mi forma de trabajar es pasar a las clases un MovieClip base sobre el que "trabajan" (utilizar composición en lugar de herencia). Algo como: </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-59">
<div class="actionscript">classvideoplayer<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; privatevarbase_mc:<span style="color: #0066CC;">MovieClip</span>;<br />
&nbsp; &nbsp; publicfunctionvideoplayer<span style="color: #66cc66;">&#40;</span>_base_mc:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; base_mc=_base_mc;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>A la hora de instanciar la clase:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-60">
<div class="actionscript">varvp_mc:<span style="color: #0066CC;">MovieClip</span>=timeLine_mc.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"vp_mc"</span>,<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;<br />
varvp:videoplayer=newvideoplayer<span style="color: #66cc66;">&#40;</span>vp_mc<span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
</div>
<p></div>
<p>Normalmente dejo a la clase que instancia el objeto videoplayer que decida cosas como la posición x,y del MovieClip. Esto lo hago así ya que considero que la única responsabilidad del videoplayer es poner un vídeo "donde le manden", no decidir cual es la posición dentro de la pantalla, por ejemplo. Aún así, esto es una regla general que muchas veces depende de la organización de clases y objetos que tenga una aplicación en concreto. </p>
<p>Hasta hace poco estaba en un error que Joseba Alonso (sidedev.net) me aclaró amablemente. Las clases que heredan de MovieClip NO heredan su dinamicidad. MovieClip es una clase dinámica (se le pueden crear propiedades y métodos en tiempo de ejecución), pero las clases que extienden de ella no tienen por qué serlo. </p>
<p>El problema (ventaja al mismo tiempo en algunas ocasiones) de las clases dinámicas es que se le pueden crear propiedades y métodos en tiempo de ejecución. El problema de eso es que si te equivocas escribiendo el nombre de una propiedad, el compilador no lanza error ya que sobreentiende que estás creando una propiedad nueva. Ejemplo: </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-61">
<div class="actionscript">dynamicclassmiClaseDinamica<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; publicvarvariable:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">"Helloworld"</span>;<br />
&nbsp; &nbsp; publicfunctionmiClaseDinamica<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>A la hora de usarla:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-62">
<div class="actionscript">varinstancia:miClaseDinamica=newmiClaseDinamica<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
varvalor:<span style="color: #0066CC;">String</span>=instancia.<span style="color: #006600;">avriable</span>;<span style="color: #808080; font-style: italic;">//elcompiladorNOdaerror </span></div>
</div>
</div>
</div>
<p></div>
<p>A pesar del error (usar "avriable" en lugar de "variable"), el compilador asume que se está accediendo a una variable que se ha creado en tiempo de ejecución, cuando lo más normal es que queramos acceder a la propiedad "variable". </p>
<p>Pero esto al mismo tiempo es una ventaja. Â¿Cuántas veces habremos creado propiedades a un MovieClip en tiempo de ejecución? Algo como:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-63">
<div class="actionscript"><span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>varx:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;x&lt;<span style="color: #cc66cc;">10</span>;x++<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; varboton:<span style="color: #0066CC;">MovieClip</span>=timeLine_mc.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"boton_"</span>+x,<span style="color: #cc66cc;">100</span>+x<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; boton.<span style="color: #006600;">opcion</span>=x;<br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Aunque útil, muchas veces es mejor crear una pequeña clase para el manejo del botón. Esa clase podría tener una propiedad pública "opcion" sobre la que estableceríamos el valor. </p>
<h2>Objetos responsables</h2>
<p>Uno de los principios OOP es que cada objeto haga única y exclusivamente lo que tiene que hacer. Cuando una clase sabe demasiado o hace demasiado, se le conoce como la clase Dios o God Object (ver enlace al final). </p>
<p>Sin llegar a límites absurdos, casi siempre es mejor trabajar con muchas clases pequeñas, cortas y concisas que con clases de 1.000 líneas. Que cada una haga su pequeño trabajito y poco más. Esto claramente favorece la reutilización y la depuración de errores (el código a revisar por clase es menor). </p>
<p>Supongamos que tenemos una clase para pintar un player de vídeo. Aquí van 2 ejemplos de implementación: </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-64">
<div class="actionscript">importVideoPlayer;<br />
classA<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; publicfunctionA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; varvp:VideoPlayer=newVideoPlayer<span style="color: #66cc66;">&#40;</span>timeLine_mc<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-65">
<div class="actionscript">classVideoPlayer<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; privatevarbase_mc:<span style="color: #0066CC;">MovieClip</span>;<br />
&nbsp; &nbsp; publicfunctionVideoPlayer<span style="color: #66cc66;">&#40;</span>timeLine_mc:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; base_mc=timeLine_mc.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"base_mc"</span>,<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; base_mc.<span style="color: #0066CC;">_x</span>=<span style="color: #cc66cc;">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; base_mc.<span style="color: #0066CC;">_y</span>=<span style="color: #cc66cc;">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//ahoraempezaríamosapintarelpropioplayer</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>En el código anterior, la clase VideoPlayer se está encargando de crearse su propio clip sobre el que trabajar y de colocarlo en la posición deseada. Sin embargo la siguiente implementación es más flexible: </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-66">
<div class="actionscript">importVideoPlayer;<br />
classA<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; publicfunctionA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; video_mc=timeLine_mc.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"video_mc"</span>,<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; video_mc.<span style="color: #0066CC;">_x</span>=<span style="color: #cc66cc;">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; video_mc.<span style="color: #0066CC;">_y</span>=<span style="color: #cc66cc;">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; varvp:VideoPlayer=newVideoPlayer<span style="color: #66cc66;">&#40;</span>video_mc<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-67">
<div class="actionscript">classVideoPlayer<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; privatevarbase_mc:<span style="color: #0066CC;">MovieClip</span>;<br />
&nbsp; &nbsp; publicfunctionVideoPlayer<span style="color: #66cc66;">&#40;</span>_base_mc:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; base_mc=_base_mc;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//ahoraempezaríamosapintarelplayer</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>En la segunda versión la clase VideoPlayer no tiene la responsabilidad de crear su MovieClip de trabajo ni de colocarlo en la pantalla. Â¿Por qué debería hacerlo si no lo necesita? Que sea la clase que lo instancia quien tenga esa responsabilidad. Así cuando haya que reutilizar la clase de VideoPlayer, no hay que hacerle ninguna modificación. </p>
<p>Dicho esto, el astuto lector estará pensando que la clase VideoPlayer podría recibir como parámetros la posición x,y donde se tiene que pintar, el nombre del MovieClip y la profundidad a la que va.... sí, técnicamente es posible, pero para qué pasar un montón de parámetros cuando se puede no pasar ninguno : ) </p>
<h2>Mejor que no te acoples</h2>
<p>Una de las normas consideradas como correctas dentro de la programación orientada a objetos es que las clases entre sí deben estar poco "acopladas". Eso significa que cuanto menos sepa una clase de otra, mejor. Siempre que sea posible es más flexible que las clases trabajen sobre parámetros en lugar de hacerlo sobre otros objetos. Ejemplo: </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-68">
<div class="actionscript">importB;<br />
classA<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; publicvarvariable:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">"Helloworld"</span>,<br />
&nbsp; &nbsp; publicfunctionA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; vara:A=newA<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-69">
<div class="actionscript">importA;<br />
classB<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> B<span style="color: #66cc66;">&#40;</span>a:A<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>a.<span style="color: #0066CC;">variable</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Según la estructura de código de arriba, la clase B necesita importar la clase A para acceder a su propiedad pública cuando realmente no es necesario. Modificando el código como sigue, las clases no están acopladas: </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-70">
<div class="actionscript">importB;<br />
classA<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; privatevarvariable:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">"Helloworld"</span>,<br />
&nbsp; &nbsp; publicfunctionA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; vara:A=newA<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">variable</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-71">
<div class="actionscript">classB<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; publicfunctionB<span style="color: #66cc66;">&#40;</span>toTrace:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>toTrace<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>El resultado es el mismo, pero en el segundo caso la clase B no necesita a la clase A para nada. Si por necesidades del proyecto necesitamos que sea la clase C en lugar de la A la que inicie el proceso, a la clase B le va a dar igual porque lo único que necesita es una cadena en el constructor. </p>
<p>Como toda regla general, depende mucho del proyecto decidir si pasar una instancia de una clase o un montón de parámetros. </p>
<h2>Protos Nunca Mais</h2>
<p>Una de las preguntas más habituales para la gente que está dando el paso de AS1 a AS2 es cómo reaprovechar protos hechos en AS1 en AS2. Para mi la salida más natural a los protos son clases con un método estático para cada proto. </p>
<p>Ejemplo de proto sacado de Layer51 </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-72">
<div class="actionscript"><span style="color: #0066CC;">String</span>.<span style="color: #0066CC;">prototype</span>.<span style="color: #006600;">PALINDROME</span>=<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; returnthis+<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">split</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">""</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">reverse</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">join</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">""</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span>;</div>
</div>
</div>
</div>
<p></div>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-73">
<div class="actionscript">classtv.<span style="color: #006600;">zarate</span>.<span style="color: #006600;">Utils</span>.<span style="color: #006600;">StringUtils</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; publicstaticmethodpalindrome<span style="color: #66cc66;">&#40;</span>s:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; returns+s.<span style="color: #0066CC;">split</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">""</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">reverse</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">join</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">""</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>A partir de ese momento, las llamadas serían así:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-74">
<div class="actionscript">importtv.<span style="color: #006600;">zarate</span>.<span style="color: #006600;">Utils</span>.<span style="color: #006600;">StringUtils</span>;<br />
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>StringUtils.<span style="color: #006600;">palindrome</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"wadus"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
</div>
<p></div>
<p>Es importante fijarse en que para utilizar el método estático no hace falta crear una instancia de la clase StringUtils; </p>
<p>Como en los métodos estáticos no se puede hacer la referencia a "this" que se hacía en el proto, se pasa como parámetro el objeto (en este caso una cadena) con el que el método tiene que "trabajar". Por supuesto si hubiera que trabajar con más parámetros, se pasarían a continuación. </p>
<h2>Â¿Cuándo se compila una clase?</h2>
<p>Algo que no está meridianamente claro es cuándo el compilador incluye una clase en un swf. La respuesta es cuando esa clase está referenciada *en el código*. Y resalto lo de "en el código" porque si la clase está importada pero no usada, no se compila. Ejemplo: </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-75">
<div class="actionscript">importclassB;<br />
classA<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; publicfunctionA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//laclaseBnosecompila</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-76">
<div class="actionscript">importclassB;<br />
<span style="color: #000000; font-weight: bold;">class</span> A<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> A<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> b:B = <span style="color: #000000; font-weight: bold;">new</span> B<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//laclaseBsecompila</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-77">
<div class="actionscript">importclassB;<br />
classA<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; privatevarb:B;<span style="color: #808080; font-style: italic;">//AQUITAMBIENSECOMPILA!</span><br />
&nbsp; &nbsp; publicfunctionA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Otra de las ventajas de utilizar MTASC es que por defecto avisa con un warning cuando se están importando clases que luego no son utilizadas dentro del código. </p>
<p>Â¿Y se puede evitar que una clase se compile incluso cuando se ha referenciado en el código? Claro que sí, aunque la forma de hacerlo no sea muy "amigable". Se trata de utilizar archivos *_exclude.xml, pero como el tema es un poco largo, en la sección de Enlaces dejo recursos sobre el tema. </p>
<h2>Importando packages</h2>
<p>Algo muy habitual es importar un package completo utilizando "*": </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-78">
<div class="actionscript">importcom.<span style="color: #006600;">xfactorstudio</span>.<span style="color: #0066CC;">xml</span>.<span style="color: #006600;">xpath</span>.*;</div>
</div>
</div>
</div>
<p></div>
<p>Â¡OJO! El compilador NO incluye todas las clases del package, ya que hace su trabajo de optimización y sólo compila las que están referenciadas en el código. </p>
<p>Â¿Entonces por qué no se importa siempre todo el package? Yo diría que es una cuestión didáctica. Prefiero importar explícitamente sólo las clases que voy a utilizar y así poder ver rápidamente de un vistazo las relaciones entre clases. </p>
<h2>Getters y setters implícitos y explícitos</h2>
<p>Se conocen por getters/setters a los métodos que permiten establecer y recuperar el valor de una variable. La idea es que la variable en si sea privada, y que para que acceder a ella haya que llamar a estos métodos.  Â¿Y por qué querría nadie obligar a usar un método para saber el valor de una variable? Pues porque hay veces que al cambiar el valor de una variable, otras variables<br />
relacionadas también cambian su valor. Por ejemplo: </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-79">
<div class="actionscript">classA<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; privatevarprice:<span style="color: #0066CC;">Number</span>;<br />
&nbsp; &nbsp; publicfunctionA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; publicfunctiongetPrice<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; returnprice;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; publicfunctionsetPrice<span style="color: #66cc66;">&#40;</span>p:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; price=p;<br />
&nbsp; &nbsp; &nbsp; &nbsp; updateBasketPrice<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//acciónrelacionada</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Estos son los getters/setters explícitos. Y son explícitos porque para saber el valor de la variable desde fuera de la clase, hay que llamar a un método. </p>
<p>Pero Flash permite hacerlos de forma implícita. Lo siguiente es perfectamente válido: </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-80">
<div class="actionscript">classA<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; privatevar_price:<span style="color: #0066CC;">Number</span>;<br />
&nbsp; &nbsp; publicfunctionA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; publicfunctiongetprice<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; return_price;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; publicfunctionsetprice<span style="color: #66cc66;">&#40;</span>p:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; _price=p;<br />
&nbsp; &nbsp; &nbsp; &nbsp; updateBasketPrice<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<span style="color: #808080; font-style: italic;">//accionrelacionada</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Â¿Ventajas de un método sobre otro? Técnicamente yo diría que no hay, pero hay programadores que prefieren hacer saber que se accede a un método. Otros dicen que no tiene por qué dar explicaciones. A gusto del consumidor. </p>
<p>Claro, que también hay gente que piensa directamente que los getters y setters deberían desaparecer de la faz de la tierra. En la sección de Enlaces hay más sobre ello para quien le interese. </p>
<h2>Strong data typing</h2>
<p>Strong data typing es de esos términos que casi mejor no traducir. Pero vamos, significa que le asignes un tipo a todas las propiedades, parámetros y tipos devueltos por los métodos. Aunque no es obligatorio, yo creo que es muy recomendable hacerlo. </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-81">
<div class="actionscript">varmyString:<span style="color: #0066CC;">String</span>=<span style="color: #ff0000;">""</span>;<br />
varmyNumber:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;<br />
publicfunctionwadus<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #808080; font-style: italic;">//utiliza Void si tu método no devuelve nada </span></div>
</div>
</div>
</div>
<p></div>
<p>Hay una no muy buena costumbre a la hora de definir el tipo de las propiedades de las clases. Por ejemplo: </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-82">
<div class="actionscript">classA<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> myNumber:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">5</span>; <span style="color: #808080; font-style: italic;">// bien</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> myArray:<span style="color: #0066CC;">Array</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// MAL!</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> mySecondArray:<span style="color: #0066CC;">Array</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> A<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// aquí o en cualquier otro método, bien</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; mySecondArray = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Cuando se definen las variables de una clase sólo se puede definir el valor por defecto para las variables de tipos primitivos: String, Boolean y Number. Nada que tenga que ver con un new. El player de Flash no maneja muy esas definiciones (buscar en la sección de Enlaces "Why does my initializer get shared across all instances like it's static?"). </p>
<h2><a href="http://www.codigo.as/blog/?p=66">[ anterior ]</a> <a href="http://www.codigo.as/blog/?p=68">[ siguiente ]</a></h2>
<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/es/"><img src="http://creativecommons.org/images/public/somerights20.png" alt="img" /></a></p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fque-yo-se-de-as2-unos-apuntes%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Unos%20apuntes%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Fque-yo-se-de-as2-unos-apuntes%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Fque-yo-se-de-as2-unos-apuntes%2F&amp;t=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Unos%20apuntes" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Fque-yo-se-de-as2-unos-apuntes%2F&amp;title=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Unos%20apuntes&amp;annotation=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%28condensado%20y%20pasteurizado%29%2AAUTOR%3A%20Juan%20Delgado%20Z%C3%A1rate%0D%0A%20%20zarate.tv%20%7C%20dandolachapa.com%20%7C%20loqueyosede.comFlashLa.com%20%7C%20After-Hours.org%0D%0AUnos%20apuntes%0D%0A%3EIndice%20de%20contenidos%0D%0A%0D%0AAqu%C3%AD%20van%20unos%20comentarios%20que%20no%20s%C3%A9%20d%C3%B3nde%20encajar%20p" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fque-yo-se-de-as2-unos-apuntes%2F&amp;title=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Unos%20apuntes&amp;notes=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%28condensado%20y%20pasteurizado%29%2AAUTOR%3A%20Juan%20Delgado%20Z%C3%A1rate%0D%0A%20%20zarate.tv%20%7C%20dandolachapa.com%20%7C%20loqueyosede.comFlashLa.com%20%7C%20After-Hours.org%0D%0AUnos%20apuntes%0D%0A%3EIndice%20de%20contenidos%0D%0A%0D%0AAqu%C3%AD%20van%20unos%20comentarios%20que%20no%20s%C3%A9%20d%C3%B3nde%20encajar%20p" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Fque-yo-se-de-as2-unos-apuntes%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Unos%20apuntes&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Fque-yo-se-de-as2-unos-apuntes%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Fque-yo-se-de-as2-unos-apuntes%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-por-zarate/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 (*por Zárate)'>Lo que yo sé de AS2 (*por Zárate)</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-clases-instancias-propiedades/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #Clases, instancias, propiedades'>Lo que yo sé de AS2 #Clases, instancias, propiedades</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-entorno-de-trabajo/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #Entorno de trabajo'>Lo que yo sé de AS2 #Entorno de trabajo</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/que-yo-se-de-as2-unos-apuntes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lo que yo sé de AS2 #Tus amigos los patrones</title>
		<link>http://www.codigoactionscript.org/lo-que-yo-se-de-as2-tus-amigos-los-patrones/</link>
		<comments>http://www.codigoactionscript.org/lo-que-yo-se-de-as2-tus-amigos-los-patrones/#comments</comments>
		<pubDate>Sun, 18 Mar 2007 23:37:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AS2]]></category>
		<category><![CDATA[Aportes]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[Referencia]]></category>

		<guid isPermaLink="false">http://www.codigo.as/blog/?p=66</guid>
		<description><![CDATA[
<p>Lo que yo sé de AS2 (condensado y pasteurizado)</p>
<p>*AUTOR: Juan Delgado Zárate
  zarate.tv &#124; dandolachapa.com &#124; loqueyosede.comFlashLa.com &#124; After-Hours.org</p>

Tus amigos los patrones
<p>>Indice de contenidos</p>
<p>A mi me gusta pensar en los patrones como soluciones que gente muy friki y muy gafotas sabe para el problema que tienes entre las manos. Sólo son formas de organizar el código que te solucionan elegantemente un problema.</p>
<p>Ahora, como dijo  un día Xavi Beumala (code4net.com): â€œsi no sientes que necesitas un patrón, es que no lo necesitasâ€. Es decir, no se trata de que [...]


Related posts:<ol><li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-clases-instancias-propiedades/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #Clases, instancias, propiedades'>Lo que yo sé de AS2 #Clases, instancias, propiedades</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-por-zarate/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 (*por Zárate)'>Lo que yo sé de AS2 (*por Zárate)</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-comunicacion-entre-clases/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #Comunicación entre clases'>Lo que yo sé de AS2 #Comunicación entre clases</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=codigo><strong>
<p>Lo que yo sé de AS2 (condensado y pasteurizado)</strong></p>
<p><img src="http://www.codigo.as/blog/images/botones/zarate.gif" alt="img" align="left"/><strong>*AUTOR</strong>: Juan Delgado Zárate<br />
  <a href="http://www.zarate.tv">zarate.tv</a> | <a href="http://www.dandolachapa.com">dandolachapa.com</a> | <a href="http://www.loqueyosede.com">loqueyosede.com</a><br /><a href="http://www.FlashLa.com">FlashLa.com</a> | <a href="http://www.After-Hours.org">After-Hours.org</a></p>
</div>
<h3>Tus amigos los patrones</h3>
<p><strong><a href="http://www.codigo.as/blog/?p=60">>Indice de contenidos</a></strong></p>
<p>A mi me gusta pensar en los patrones como soluciones que gente muy friki y muy gafotas sabe para el problema que tienes entre las manos. Sólo son formas de organizar el código que te solucionan elegantemente un problema.</p>
<p>Ahora, como dijo  un día Xavi Beumala (code4net.com): â€œsi no sientes que necesitas un patrón, es que no lo necesitasâ€. Es decir, no se trata de que busques problemas para aplicar un patrón, sino de que apliques patrones a situaciones y problemas reales. Lo más difícil de los patrones es saber reconocer cuándo son necesarios.</p>
<p><strong>NOTA IMPORTANTE</strong>: Las implementaciones de los patrones que voy a comentar a continuación son â€œlibresâ€. Es decir, no me importa tanto que desde un punto de vista formal cumplan el patrón al 100% sino que guarden su â€œesenciaâ€ de la forma más simple posible. Si realmente estás interesado en conocer a fondo los patrones te recomiendo el libro Head First Design Patterns o si eres un tío muy gafotas, la biblia que todo talibán de los patrones lee los domingos por la mañana para desayunar: Design Patterns (by the Gang of four). Enlaces al final.</p>
<h2>Singleton</h2>
<p>Â¿Cuándo? Cuando necesitas que en una aplicación haya una y sólo una instancia de una clase.</p>
<p>Â¿Ejemplo? Un controlador de Combos. Supongamos que estamos desarrollando nuestro propio componente ComboBox, normalmente no queremos que haya 2 abiertos al mismo tiempo. Podríamos controlarlo mediante variables globales, pero ya hemos visto que eso no es muy buena idea. Singleton al rescate. La idea es tener una clase Singleton que tenga una referencia a todos los combos creados y que se encargue de coordinarlos. </p>
<p>Aquí va la clase que coordina, el Singleton</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-109">
<div class="actionscript"><span style="color: #0066CC;">import</span> Combo;<br />
<span style="color: #000000; font-weight: bold;">class</span> ComboManager<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> _instance:ComboManager;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> combos:<span style="color: #0066CC;">Array</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> ComboManager<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; combos = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> getInstance<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:ComboManager<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>_instance == <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _instance = <span style="color: #000000; font-weight: bold;">new</span> ComboManager<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> _instance;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addCombo<span style="color: #66cc66;">&#40;</span>combo:Combo<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span>&nbsp;&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; combos.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>combo<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Y aquí la clase combo que lo utilizaría;</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-110">
<div class="actionscript"><span style="color: #0066CC;">import</span> ComboManager;<br />
<span style="color: #000000; font-weight: bold;">class</span> Combo<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Combo<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> cm:ComboManager = ComboManager.<span style="color: #006600;">getInstance</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; cm.<span style="color: #006600;">addCombo</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p><strong>Comentarios</strong></p>
<p>Es muy importante darse cuenta de que el constructor del Singleton es privado, por lo que nadie puede crear una instancia a la forma tradicional (con new). La única forma de obtener una instancia del Singleton es utilizar el método público estático getInstance. Y es dentro de getInstance donde se controla que la instancia sólo se cree una vez, el resto de veces se devuelve la ya creada.</p>
<p><strong>Problemas</strong></p>
<p>Como con todos los patrones, no se debe abusar del Singleton. Especialmente NO tienen que ser un un sustituto de la variables globales. En la sección de Enlaces, al final del artículo de la Wikipedia hay enlaces sobre este problema.</p>
<h2>Factory Pattern e interfaces</h2>
<p>Antes de comentar el Factory, vamos a explicar qué es una interface. Una clase tiene que tener todos los métodos de la interface (o interfaces) que implemente. Ejemplo:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-111">
<div class="actionscript"><span style="color: #0066CC;">interface</span> Application<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> config<span style="color: #66cc66;">&#40;</span>appXML:<span style="color: #0066CC;">XML</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>;<br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-112">
<div class="actionscript"><span style="color: #000000; font-weight: bold;">class</span> VideoPlayer <span style="color: #0066CC;">implements</span> Application<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> config<span style="color: #66cc66;">&#40;</span>appXML:<span style="color: #0066CC;">XML</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Si la clase VideoPlayer no tuviera los 2 métodos de la interface, el compilador protestaría. Así que las interfaces son una forma de â€œobligarâ€ a que las clases que la implementen tenga unos métodos públicos conocidos.</p>
<p>Lasintefaces sólo definen métodos públicos, no pueden definir ni propiedades, ni métodos privados o estáticos.</p>
<p>Ahora el Factory pattern. </p>
<p>Â¿Cuándo? Cuando necesitas resolver el mismo problema de distintas formas, y además hay que decidir en tiempo de ejecución cuál utilizar.</p>
<p>Â¿Ejemplo? Una aplicación para hacer un reloj que necesita 2 vistas distintas, una digital y otra analógica. Además necesitamos decidir en tiempo de ejecución cual utilizar.</p>
<p>Primero definimos una sencilla interface que ambas vistas van a implementar.</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-113">
<div class="actionscript"><span style="color: #0066CC;">interface</span> iView<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> config<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> draw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>;<br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Luego creamos las 2 vistas distintas y hacemos que implementen la interface.</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-114">
<div class="actionscript"><span style="color: #0066CC;">import</span> iView;<br />
<span style="color: #000000; font-weight: bold;">class</span> AnalogView <span style="color: #0066CC;">implements</span> iView<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> AnalogView<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> config<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> draw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// la clase analógica pinta las manillas</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-115">
<div class="actionscript"><span style="color: #0066CC;">import</span> iView;<br />
<span style="color: #000000; font-weight: bold;">class</span> DigitalView <span style="color: #0066CC;">implements</span> iView<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> DigitalView<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> config<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> draw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// la clase digital pinta números</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Ahora creamos el modelo. Es importante fijarse en que el modelo no sabe con qué implementación de iView va a trabajar, ni siquiera importa las vistas. Es decir, no sabe si será analógico o digital. Lo único que sabe es que va a trabajar con una instancia de iView. Es ahí donde está la flexibilidad, es lo que se llama trabajar para la interface y no para implementaciones.   </p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-116">
<div class="actionscript"><span style="color: #0066CC;">import</span> iView;<br />
<span style="color: #0066CC;">import</span> ViewFactory;<br />
<span style="color: #000000; font-weight: bold;">class</span> ClockModel<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> view:iView;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span>&nbsp; ClockModel<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// supongamos que viene de un xml, FlashVars o algo dinámico</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> viewType:<span style="color: #0066CC;">String</span> = â€œdigitalâ€;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// pedimos a la factoría una vista </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; view = ViewFactory.<span style="color: #006600;">getView</span><span style="color: #66cc66;">&#40;</span>viewType<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; view.<span style="color: #006600;">config</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; view.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Y finalmente la factoría:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-117">
<div class="actionscript"><span style="color: #0066CC;">import</span> iView;<br />
<span style="color: #0066CC;">import</span> AnalogView;<br />
<span style="color: #0066CC;">import</span> DigitalView;<br />
<span style="color: #000000; font-weight: bold;">class</span> ViewFactory<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> getView<span style="color: #66cc66;">&#40;</span>viewType:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:iView<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> v:iView;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>viewType == â€œanalogâ€<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; v = <span style="color: #000000; font-weight: bold;">new</span> AnalogView<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; v = <span style="color: #000000; font-weight: bold;">new</span> DigitalView<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> v;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Vista la estructura de la factoría (un if o switch gigante), es fácil darse cuenta de que si en el futuro queremos añadir más tipos de vistas, simplemente hay que aumentar el número de casos en el if. Lo bueno es que el modelo seguirá trabajando sin problemas mientras que las nuevas vistas implementen iView.</p>
<p>Esto mismo se podría conseguir en lugar de con una interface haciendo que ambas vistas extiendan de una clase común. Entonces el modelo trabajaría con esa vista común en lugar de con la interface, pero el resultado y objetivo es el mismo. Â¿Cuándo utilizar una interface y cuándo extender? Ver explicación en la sección de apuntes.</p>
<p><strong>Comentarios</strong></p>
<p>Situaciones en las que un factory es aplicable hay muchas. Todas ellas tienen es común distintas formas (implementaciones) de solucionar un mismo problema. Por ejemplo supongamos que tenemos una aplicación que necesita leer y escribir el sistema de archivos del usuario. Además queremos que la aplicación funcione on line y off line. Para conseguirlo on-line nos tendremos que basar en algún lenguaje de servidor, y para hacerlo on-line necesitaremos, Screenweaver, SWFStudio o algún otro wrapper o contenedor de swfs.</p>
<p>Veamos una posible interface:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-118">
<div class="actionscript"><span style="color: #0066CC;">interface</span> iWrapper<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// los callbacks son porque la mayoría de estas llamadas</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// serán asíncronas</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getDir<span style="color: #66cc66;">&#40;</span>path:<span style="color: #0066CC;">String</span>,callback:<span style="color: #000000; font-weight: bold;">Function</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> writeFile<span style="color: #66cc66;">&#40;</span>path:<span style="color: #0066CC;">String</span>,callback:<span style="color: #000000; font-weight: bold;">Function</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> readFile<span style="color: #66cc66;">&#40;</span>path:<span style="color: #0066CC;">String</span>,callback:<span style="color: #000000; font-weight: bold;">Function</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span>;<br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>La interface está definiendo qué queremos que el wrapper haga. Cómo lo haga es tarea de cada una de las implementaciones. En el caso de la implementación de servidor, seguramente sea con llamadas sendAndLoad del objeto XML, en el caso de la implementación local con Screenweaver será a través de las clases AS2 que vienen con la instalación. La parte buena es que si la aplicación trabaja con una instancia de iWrapper, cambiar la de on-line a off-line no sería problema.</p>
<p><strong>Problemas</strong></p>
<p>Uno de los efectos secundarios de la factoría es que TODAS las implementaciones se compilan en el swf final, aunque sólo vayamos a utilizar una. Â¿Y no hay forma de evitarlo? La hay. Como el tema es un poco más avanzado, quien quiera más información sobre el tema puede seguir 2 tutoriales de la sección de Enlaces que se titulan â€œCrear instancias dinámicamenteâ€ y â€œCargar clases dinámicamenteâ€.</p>
<h2>Modelo-VistaControlador</h2>
<p>Â¿Cuándo? Siempre. Bueno, casi siempre. Por poco grande que sea una aplicación siempre es útil separar lógica de presentación. Y eso es la parte fundamental del MVC, separar lógica de presentación.</p>
<p>A pesar de que ya lo he dicho un par de veces, la implementación que pongo a continuación NO es pura, es una adaptación libre y pragmática. Prefiero repetirlo para que:</p>
<ul>
<li>Nadie me salte al cuello con la implementación buena en la mano.</li>
<li>Tú, querido lector, te molestes en ir a buscar esa implementación buena y compares. En la sección de Enlaces podrás encontrar más información.</li>
</ul>
<p>Dicho esto, comentarios sobre problemas que pueda tener mi implementación son MUY bienvenidos. Mi implementación por ejemplo, asume que sólo hay una vista. eso permite al modelo hacer llamadas directas a la vista sin necesidar de que la vista sea listener del modelo. Además tambien junto en una misma clase la vista y el controlador. Veamos el ejemplo:</p>
<p>Empezamos con una clase que se encarga de crear la instancia del modelo:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-119">
<div class="actionscript"><span style="color: #0066CC;">import</span> tv.<span style="color: #006600;">zarate</span>.<span style="color: #006600;">Projects</span>.<span style="color: #006600;">loqueyosede</span>.<span style="color: #006600;">Model</span>;<br />
<span style="color: #000000; font-weight: bold;">class</span> tv.<span style="color: #006600;">zarate</span>.<span style="color: #006600;">Projects</span>.<span style="color: #006600;">loqueyosede</span>.<span style="color: #006600;">MVCApplication</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> main<span style="color: #66cc66;">&#40;</span>m:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> model:Model = <span style="color: #000000; font-weight: bold;">new</span> Model<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; model.<span style="color: #006600;">config</span><span style="color: #66cc66;">&#40;</span>m<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; model.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Luego, el modelo:</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-120">
<div class="actionscript"><span style="color: #0066CC;">import</span> tv.<span style="color: #006600;">zarate</span>.<span style="color: #006600;">Projects</span>.<span style="color: #006600;">loqueyosede</span>.<span style="color: #006600;">View</span>;<br />
<span style="color: #000000; font-weight: bold;">class</span> tv.<span style="color: #006600;">zarate</span>.<span style="color: #006600;">Projects</span>.<span style="color: #006600;">loqueyosede</span>.<span style="color: #006600;">Model</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> view:View;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> timeLine_mc:<span style="color: #0066CC;">MovieClip</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> view_mc:<span style="color: #0066CC;">MovieClip</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> numberOfClicks:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">0</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Model<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> config<span style="color: #66cc66;">&#40;</span>m:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// el modelo se guarda una referencia a la linea de tiempo principal</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// basicamente para poder acceder a las FlashVars</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// cuando sea necesario</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; timeLine_mc = m;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// creamos un mc solo para la vista</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; view_mc = timeLine_mc.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"view_mc"</span>,<span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// creamos la instancia de la vista</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; view = <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// le pasamos la referencia al modelo y el </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// clip sobre el que va a trabajar</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; view.<span style="color: #006600;">config</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>,view_mc<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// en este caso directamente llamamos al metodo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// start de la vista</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// en aplicaciones mas complejas, el modelo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// podria primero ir a buscar datos a un servidor</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// o leer un xml de configuracion</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; view.<span style="color: #006600;">displayValue</span><span style="color: #66cc66;">&#40;</span>numberOfClicks<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> updateClick<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// la vista llama a este metodo cada vez que el usuario hace click</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; numberOfClicks++;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// despues de actualizar </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// llamamos al metodo que nos interesa de la vista</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; view.<span style="color: #006600;">displayValue</span><span style="color: #66cc66;">&#40;</span>numberOfClicks<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p>Y por último la VistaControlador (abreviado, ver código adjunto para la versión completa):</p>
<div id=codigo>
<div id="codigo">
<div class="syntax_hilite">
<div id="actionscript-121">
<div class="actionscript"><span style="color: #0066CC;">import</span> tv.<span style="color: #006600;">zarate</span>.<span style="color: #006600;">Projects</span>.<span style="color: #006600;">loqueyosede</span>.<span style="color: #006600;">Model</span>;<br />
<span style="color: #000000; font-weight: bold;">class</span> tv.<span style="color: #006600;">zarate</span>.<span style="color: #006600;">Projects</span>.<span style="color: #006600;">loqueyosede</span>.<span style="color: #006600;">View</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> model:Model;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> base_mc:<span style="color: #0066CC;">MovieClip</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> background_mc:<span style="color: #0066CC;">MovieClip</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> title_mc:<span style="color: #0066CC;">MovieClip</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> titleField:<span style="color: #0066CC;">TextField</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">width</span>:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">0</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">height</span>:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">0</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> OVER:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">"over"</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> OUT:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">"out"</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> PRESS:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">"press"</span>;<br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> View<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> config<span style="color: #66cc66;">&#40;</span>_model:Model,_base_mc:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// nos llega por composicion una instancia del modelo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// eso nos permitira acceder a sus metodos y propiedades publicas</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; model = _model;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// guardamos una referencia al clip con el que trabajara la vista</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; base_mc = _base_mc;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// creamos los elementos basicos</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; doInitialLayout<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">onResize</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> displayValue<span style="color: #66cc66;">&#40;</span>value:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; titleField.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">"Clicks&gt; "</span> + value;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> doInitialLayout<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> button_mc:<span style="color: #0066CC;">MovieClip</span> = base_mc.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"button_mc"</span>,<span style="color: #cc66cc;">300</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// definimos los eventos y los delegamos al metodo manageButton</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">button</span>.<span style="color: #0066CC;">onPress</span> = Delegate.<span style="color: #006600;">create</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>,manageButton,<span style="color: #0066CC;">button</span>,PRESS<span style="color: #66cc66;">&#41;</span>;&nbsp; &nbsp;&nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> layout<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onResize</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> manageButton<span style="color: #66cc66;">&#40;</span>mc:<span style="color: #0066CC;">MovieClip</span>,action:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Void</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">switch</span><span style="color: #66cc66;">&#40;</span>action<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">case</span><span style="color: #66cc66;">&#40;</span>PRESS<span style="color: #66cc66;">&#41;</span>:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// llamamos a un metodo publico del modelo</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;">// que actualiza el contador de clicks</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; model.<span style="color: #006600;">updateClick</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span>&nbsp; &nbsp;&nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span>&nbsp; &nbsp;<br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
</div>
<p></div>
<p><strong>Comentarios</strong></p>
<p>Utilizo la clase MVCApplication como â€œpunto de partidaâ€ (aunque también se podría integrar en la clase Model). Primero crea la instancia del modelo, luego lo configura mediante config, y luego llama al método start. Tanto â€œconfigâ€ como â€œstartâ€ son nombres completamente arbitrarios.</p>
<p>Ya en el modelo, en el método start se crea la instancia de la vista, se la configura pasando una referencia al modelo y un MovieClip de trabajo.</p>
<p>En este momento, tanto la vista como el modelo tienen una referencia mútua, con lo que pueden fácilmente acceder a sus propiedades y métodos públicos. Es importante darse cuenta de que en esta implementación sólo puede haber una vista. Â¿Y es eso importante? Pues seguro que depende de a  quien le preguntes. Desde luego es menos flexible (no puede haber 2 vistas al mismo tiempo), pero yo creo que es más sencillo a la hora de ser usado.</p>
<p>Después de configurar la vista, es el modelo quien decide qué hacer. En este caso tan simple tampoco tiene muchas opciones, por eso llama directamente al método displayValue al que le pasa el total de clicks hechos. En aplicaciones más complejas, lo más normal es que primero tenga que hacer algo de tarea sucia como leer un xml de configuración, extraer algún parámetro de las FlashVars, instanciar otras clases relativas al modelo, etc. etc.</p>
<p>En la vista mostramos el número de clicks y creamos un botón para aumentarlo. Es en este momento donde se supone que debería entrar en juego el controlador. Si tuvieramos un controlador como tal, la función manageButton seguramente debería encontrarse allí. Es decir, el controlador es el encargado de decidir qué hacer con las acciones del usuario.</p>
<p>Aún sin el controlador hemos conseguido separar la lógica  (el contado de los clicks), de la presentación (cómo la vista muestra la información). Al modelo le da exactamente igual cómo se muestre el número de clicks (si centrado en la pantalla, si en verde, rojo, grande, pequeño) y la vista tampoco le importa  mucho cómo se consigue esa información. Símplemente quiere que le digan qué tiene que pintar.</p>
<h2><a href="http://www.codigo.as/blog/?p=65">[ anterior ]</a> <a href="http://www.codigo.as/blog/?p=60">[ siguiente ]</a></h2>
<p><a href="http://creativecommons.org/licenses/by-nc-sa/2.5/es/"><img src="http://creativecommons.org/images/public/somerights20.png" alt="img" /></a></p>

<div class="sociable">
<div class="sociable_tagline">
<strong>Comparte:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-tus-amigos-los-patrones%2F" title="Meneame"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Tus%20amigos%20los%20patrones%20-%20http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-tus-amigos-los-patrones%2F" title="Twitter"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-tus-amigos-los-patrones%2F&amp;t=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Tus%20amigos%20los%20patrones" title="Facebook"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-tus-amigos-los-patrones%2F&amp;title=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Tus%20amigos%20los%20patrones&amp;annotation=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%28condensado%20y%20pasteurizado%29%2AAUTOR%3A%20Juan%20Delgado%20Z%C3%A1rate%0D%0A%20%20zarate.tv%20%7C%20dandolachapa.com%20%7C%20loqueyosede.comFlashLa.com%20%7C%20After-Hours.org%0D%0ATus%20amigos%20los%20patrones%0D%0A%3EIndice%20de%20contenidos%0D%0A%0D%0AA%20mi%20me%20gusta%20pensar%20en%20los%20patrones%20como%20s" title="Google Bookmarks"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-tus-amigos-los-patrones%2F&amp;title=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Tus%20amigos%20los%20patrones&amp;notes=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%28condensado%20y%20pasteurizado%29%2AAUTOR%3A%20Juan%20Delgado%20Z%C3%A1rate%0D%0A%20%20zarate.tv%20%7C%20dandolachapa.com%20%7C%20loqueyosede.comFlashLa.com%20%7C%20After-Hours.org%0D%0ATus%20amigos%20los%20patrones%0D%0A%3EIndice%20de%20contenidos%0D%0A%0D%0AA%20mi%20me%20gusta%20pensar%20en%20los%20patrones%20como%20s" title="del.icio.us"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-tus-amigos-los-patrones%2F" title="Technorati"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  target="_blank" href="mailto:?subject=Lo%20que%20yo%20s%C3%A9%20de%20AS2%20%23Tus%20amigos%20los%20patrones&amp;body=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-tus-amigos-los-patrones%2F" title="email"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.codigoactionscript.org%2Flo-que-yo-se-de-as2-tus-amigos-los-patrones%2F&amp;partner=sociable" title="Print"><img src="http://www.codigoactionscript.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li>
</ul>
</div>


<p>Related posts:<ol><li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-clases-instancias-propiedades/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #Clases, instancias, propiedades'>Lo que yo sé de AS2 #Clases, instancias, propiedades</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-por-zarate/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 (*por Zárate)'>Lo que yo sé de AS2 (*por Zárate)</a></li>
<li><a href='http://www.codigoactionscript.org/lo-que-yo-se-de-as2-comunicacion-entre-clases/' rel='bookmark' title='Permanent Link: Lo que yo sé de AS2 #Comunicación entre clases'>Lo que yo sé de AS2 #Comunicación entre clases</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.codigoactionscript.org/lo-que-yo-se-de-as2-tus-amigos-los-patrones/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
