<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3517651098782206607</id><updated>2012-02-16T10:53:37.717-08:00</updated><title type='text'>Programación de juegos en Flash</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-1645800844925364161</id><published>2011-01-15T17:09:00.000-08:00</published><updated>2011-01-15T17:09:15.340-08:00</updated><title type='text'>¿Como importar de China? - Negocios con China</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;A nadie le es extraño o por lo menos le debe parecer nuevo de que las más grandes marcas o firmas del mundo mandan a fabricar sus piezas en China. Tal es el caso del gigante Apple o de otros similares.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Hacer negocios con China tiene la ventaja de darnos mayores margenes de ganancias y menores costos de producción. Por tanto , es como mandar a hacer los productos directamente a una fábrica. Para los Chinos no hay imposibles , ellos hacen cualquier cosa que usted les pida. Si no lo tienen aun , se lo diseñan.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Con la llegada del Internet , el comercio se ha abierto muchisimo , basta con dar una mirada al portal alibaba.com para ver la gama de proveedores y productos que podemos comenzar a importar.&amp;nbsp; Sin embargo , si no se sabe la forma correcta de hacer negocios y verificar las fabricas de proveedores , se podria perder dinero por falta de calidad , fallas en sus pedidos o no saber negociar adecuadamente.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;En el Perú , China es uno de nuestros principales proveedores&amp;nbsp; , seguido de Estados Unidos y Brazil. El volumen de importaciones para el 2010 fue mayor para el primero de los mencionados.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;¿Qué se puede importar desde China?&lt;/strong&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Cualquier tipo de piezas , maquinarias , accesorios electronicos , telefonos , muebles , instrumentos musicales , etc. Practicamente todo lo que usted se puede imaginar.&amp;nbsp; Mire a su alrededor , le apuesto de que mas del 98% de los articulos que tiene en su hogar es de alguna manera hecho con materiales importados de China.&amp;nbsp; Habría que mencionar tambien que las fabricas Chinas estan en constante innovacion , sacando al mercado productos novedosos.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;¿Cualquier puede importar de China?&lt;/strong&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Si y No.&amp;nbsp; Si , para los que se capacitan adecuadamente en Tramites Aduaneros , Costos logisticos , Estudio de Mercado , Negociacion , Busqueda de proveedores confiables y Comercializacion final y , de esta manera , reducen significativamente su curva de aprendizaje.&amp;nbsp; Es cierto que todo esto se le puede delegar a una agencia de aduanas , pero por lo general el importador que quiere tener exito en el negocio debe conocer a fondo los elementos o tramites de una importacion para que no le aumenten los costos o cobren de más. Un pequeño aumento en sus costes de importacion , repercutiria negativamente en el precio unitario final de sus productos.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;¿Donde se puede aprender a importar de China?&lt;/strong&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Es facil importar de China , pero hay que capacitarse para no tener dudas y saber qué hacer , cuando hacerlo y como hacerlo.&amp;nbsp; Tambien es vital estudiar casos practicos y hacer pequeños estudios de mercado. En el siguiente link , usted tendrá una herramienta definitiva a su favor.&amp;nbsp; Una capacitacion completa que le enseñara practicamente todo lo que debe saber para realizar una importacion exitosa desde China.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Seminario Importacion de China y Comercilizacion en Internet&lt;/strong&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://www.jorgeluisteran.com/wp-content/uploads/2011/01/negocioschina2.jpg" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #616b50; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;&lt;img alt="" class="alignnone size-full wp-image-630" height="722" src="http://www.jorgeluisteran.com/wp-content/uploads/2011/01/negocioschina2.jpg" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; display: block; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="negocioschina2" width="532" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Ingrese a :&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&amp;nbsp;&lt;a href="http://www.conferenciasperu.com/" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #616b50; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="_blank"&gt;www.conferenciasperu.com&lt;/a&gt;&amp;nbsp;o escribanos a&amp;nbsp;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;informes@conferenciasperu.com&lt;/strong&gt;&amp;nbsp;para más información. Este seminario se repite frecuentemente. Consulte la proxima fecha del evento.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Espero le sea util esta informacion. Haga las preguntas que sea pertinente por este medio , le responderé lo mas pronto posible.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Arial, helvetica, 'sans serif'; font-size: 12px; font-style: inherit; font-weight: inherit; line-height: 18px; margin-bottom: 16px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Comprometido con su exito personal y profesional&lt;br /&gt;Sinceramente&lt;br /&gt;Jorge Luis Teran&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-1645800844925364161?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/1645800844925364161/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2011/01/como-importar-de-china-negocios-con.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/1645800844925364161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/1645800844925364161'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2011/01/como-importar-de-china-negocios-con.html' title='¿Como importar de China? - Negocios con China'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-3910781841271523407</id><published>2010-03-27T17:14:00.000-07:00</published><updated>2010-03-27T17:14:01.388-07:00</updated><title type='text'>Conferencia Social Media Marketing - 17 de Abril en la PUCP</title><content type='html'>&lt;div align="justify"&gt;El próximo &lt;strong&gt;Sábado 17 de abril&lt;/strong&gt; tendrá  lugar &lt;strong&gt;en la&lt;/strong&gt; &lt;strong&gt;Pontificia Universidad Católica  del Perú&lt;/strong&gt; la &lt;strong&gt;conferencia “Social Media Marketing”,&lt;/strong&gt;  la cual será impartida por Walter Terán, experto en Marketing en  Internet, y Jorge Luis Terán, desarrollador de Plataformas de Negocios  Online.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://tallerdelideres.com/wp-content/uploads/2010/03/socialmediamarketing.png"&gt;&lt;img alt="socialMediaMarketing" border="0" height="413" src="http://tallerdelideres.com/wp-content/uploads/2010/03/socialmediamarketing-thumb.png" style="border: 0px none; display: inline;" title="socialMediaMarketing" width="618" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;Este evento organizado por &lt;strong&gt;Marketing Place&lt;/strong&gt;,  con el respaldo de la Fraternidad &lt;strong&gt;Freedom Business Consulting&lt;/strong&gt;,  busca acercar a los especialistas en marketing, publicistas,  estudiantes y público interesado, a esta excelente forma de incrementar  la visibilidad de tu marca, negocio o sitio web de manera efectiva y  gratuita.    &lt;/div&gt;&lt;strong&gt;Temario     &lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Introducción a las Redes sociales.&lt;/li&gt;&lt;li&gt; El Posicionamiento de marca en las redes sociales.&lt;/li&gt;&lt;li&gt; Como hacer una campaña de publicidad en las redes sociales.&lt;/li&gt;&lt;li&gt; Los Errores más comunes en el marketing con redes sociales.&lt;/li&gt;&lt;li&gt; Casos de éxito Peruanos en las redes sociales.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;CV de los Ponentes:&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://tallerdelideres.com/wp-content/uploads/2010/03/teamwalter2.jpg"&gt;&lt;img alt="team-walter2" border="0" height="111" src="http://tallerdelideres.com/wp-content/uploads/2010/03/teamwalter2-thumb.jpg" style="border: 0px none; display: inline;" title="team-walter2" width="90" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Walter Terán:&lt;/strong&gt; Experto en Marketing  en Internet, y Desarrollador y diseñador web. Gerente general de  Koalatec S.A.C (&lt;a href="http://www.koalatec.com/"&gt;www.koalatec.com&lt;/a&gt;) ,  empresa especializada en Diseño Web Profesional. Ha laborado en PERS  Corporation como Desarrollador Aplicaciones Flash As2, As3, Flex.  Además, ha participado como ponente en varios cursos y seminarios en  temas de Marketing en redes sociales, Comercio Electrónico y demás  similares conjuntamente con su hermano Jorge Luis Terán. Gran conocer en  la Implementación de carritos de compras y catálogos en línea para  negocios de comercio exterior.&lt;/div&gt;&lt;strong&gt;Página web Personal :&lt;/strong&gt; &lt;a href="http://www.tallerdelideres.com/"&gt;www.tallerdelideres.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://tallerdelideres.com/wp-content/uploads/2010/03/teamjorge.jpg"&gt;&lt;img alt="team-jorge" border="0" height="111" src="http://tallerdelideres.com/wp-content/uploads/2010/03/teamjorge-thumb.jpg" style="border: 0px none; display: inline;" title="team-jorge" width="90" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Jorge Luis Terán:&lt;/strong&gt; Desarrollador de  plataformas de Negocios Online. Gerente de Proyectos de Koalatec S.A.C,  empresa especializada en Diseño Web Profesional. Ha laborado en  Soltrónica como Diseñador Gráfico y Web. Conocedor de Técnicas de Ventas  y los 12 Cierres.&lt;/div&gt;&lt;strong&gt;Página web Personal :&lt;/strong&gt; &lt;a href="http://www.marketing.koalatec.com/"&gt;www.marketing.koalatec.com&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt; &lt;br /&gt;Información General     &lt;br /&gt;&lt;strong&gt;     &lt;br /&gt;Día:&lt;/strong&gt; Sábado 17 de abril&lt;br /&gt;&lt;strong&gt;Hora: &lt;/strong&gt;4pm.&lt;br /&gt;&lt;strong&gt;Duración:&lt;/strong&gt; 2horas&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Lugar: Pabellón Z de la Pontificia Universidad Católica del  Perú- Aula Z214&lt;/strong&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.pucp.edu.pe/mapa_virtual/" target="_blank"&gt;&lt;strong&gt;Ubique rápidamente el pabellón Z con el  siguiente mapa Virtual del campus&lt;/strong&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Inversión (&lt;u&gt;Previa Inscripción&lt;/u&gt;) :      &lt;/strong&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;Estudiantes  PUCP:&lt;/strong&gt; S/. 25&lt;br /&gt;&lt;strong&gt;Público en general:&lt;/strong&gt; S/. 35    &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Observaciones: &lt;/strong&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="color: #004080;"&gt;&lt;em&gt;Los interesados  podrán asistir a la Conferencia haciendo efectivo el pago respectivo,  según la modalidad a la que pertenezcan (estudiantes PUCP o público en  general), el mismo día del evento. Para ello le pedimos asistir al  evento 15 minutos antes del inicio de la misma.         &lt;br /&gt;&lt;span style="color: red;"&gt;*Las vacantes son Limitadas.&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;     &lt;br /&gt;Fecha Límite de inscripción para público en general:  Lunes 12 de abril.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Fecha Límite de inscripción para estudiantes PUCP: Viernes 16  de abril.     &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;     &lt;br /&gt;Datos a enviar para efectuar la  inscripción:&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;     &lt;br /&gt;Apellido Paterno:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Apellido Materno:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Nombres:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;DNI:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Teléfono/Celular:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Institución a la que pertenece  (Universidad/Centro de Trabajo):&lt;/span&gt;    &lt;br /&gt;&lt;strong&gt;Informes e inscripciones en     &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;E-mail:&lt;/strong&gt; &lt;a href="mailto:marketingplace.peru@gmail.com"&gt;marketingplace.peru@gmail.com&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Telfs:&lt;/strong&gt; 99647709 / 990491328&lt;br /&gt;Para mayor información visite : &lt;br /&gt;&lt;a href="http://www.marketingplaceperu.com/"&gt;www.marketingplaceperu.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-3910781841271523407?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/3910781841271523407/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2010/03/conferencia-social-media-marketing-17.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/3910781841271523407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/3910781841271523407'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2010/03/conferencia-social-media-marketing-17.html' title='Conferencia Social Media Marketing - 17 de Abril en la PUCP'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-984392855954875269</id><published>2009-11-29T11:09:00.001-08:00</published><updated>2009-11-29T11:09:37.104-08:00</updated><title type='text'>Seminario “Blog Diamante” 12 y 13 de Diciembre - Eiger sede “Los Olivos” – VIDEO - Lima Perú.</title><content type='html'>&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:2aeecc5d-504e-4108-9a8a-9fd5fedfb6e9" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div id="e75165d4-c00b-452e-8b66-ecfbcf346c56" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=EdC1aFKN9_4&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;" target="_new"&gt;&lt;img src="http://lh5.ggpht.com/_uyR68LVi3E0/SxLG8ITCc0I/AAAAAAAAAxk/6TZorfudhYA/videoe03c9186d56c%5B6%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('e75165d4-c00b-452e-8b66-ecfbcf346c56'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/EdC1aFKN9_4&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/EdC1aFKN9_4&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;En este video respondemos las preguntas frecuentes sobre el seminario “Blog Diamante”&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Seminario &amp;quot;Blog Diamante&amp;quot; en EIGER los Olivos&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Cordiales saludos , este sábado 12 de Diciembre y domingo 13 de diciembre se dictará el seminario Blog “Diamante” , en el cual revelaremos todos los secretos detrás de estas plataformas de Internet para generar ingresos económicos y publicidad para nuestros negocios o actividades afines.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Temas a tratar:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;- Cómo utilizar un blog para generar tráfico masivo.&lt;/p&gt;  &lt;p&gt;- Cómo rentabilizar un blog con Google Adsense&lt;/p&gt;  &lt;p&gt;- Cómo rentabilizar un blog con programas de Afiliados&lt;/p&gt;  &lt;p&gt;- Blogs Gratuitos vs Blogs Profesionales&lt;/p&gt;  &lt;p&gt;- Estudio de casos de éxito peruanos.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Expositores :&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;- Walter Eduardo Terán :&lt;/strong&gt; Experto en Marketing por Internet.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;- Jorge Luis Terán :&lt;/strong&gt; Desarrollador de plataformas de negocios online.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Inversión :&lt;/strong&gt; 15 soles (Estudiantes Eiger y público en general)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Informes :&lt;/strong&gt; EIGER sede los Olivos . Calle Palacios Valdez Nro 122 (Frente al Megaplaza)&lt;/p&gt;  &lt;p&gt;Telf: 522-5531 / 523-6791 ( Sede EIGER los Olivos)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-984392855954875269?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/984392855954875269/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/11/seminario-blog-diamante-12-y-13-de.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/984392855954875269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/984392855954875269'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/11/seminario-blog-diamante-12-y-13-de.html' title='Seminario “Blog Diamante” 12 y 13 de Diciembre - Eiger sede “Los Olivos” – VIDEO - Lima Perú.'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_uyR68LVi3E0/SxLG8ITCc0I/AAAAAAAAAxk/6TZorfudhYA/s72-c/videoe03c9186d56c%5B6%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-2836646796379927681</id><published>2009-04-22T10:31:00.000-07:00</published><updated>2009-04-22T10:32:10.005-07:00</updated><title type='text'>Deformar bitmaps con el metodo drawTriangles de Actionscript 3</title><content type='html'>En este &lt;a href="http://www.cristalab.com/tutoriales/"&gt;tutorial&lt;/a&gt; mostraré un par de sencillos ejemplos en cuanto al uso de una de las novedades de Adobe&lt;a href="http://www.cristalab.com/tags/flash/"&gt; Flash&lt;/a&gt; &lt;a href="http://www.cristalab.com/tags/cs4/"&gt;CS4&lt;/a&gt; que mas me ha llamado la atención (en cuanto a &lt;a href="http://www.cristalab.com/tags/actionscript_3/"&gt;ActionScript&lt;/a&gt; se refiere), estoy hablando de la adición del método DrawTriangles() a la clase &lt;a href="http://livedocs.adobe.com/flex/2/langref/flash/display/Graphics.html"&gt;Graphics&lt;/a&gt;.     &lt;p&gt;Este método es muy útil al momento de crear figuras tridimensionales a partir de triángulos, así como también para modificar la apariencia de un bitmap (que explicare mas adelante), y en el mas sencillo de los casos dibujar una figura vectorizada (con forma de triangulo) similar a lo que harían el resto de los métodos de Graphics.&lt;/p&gt;     &lt;p&gt;A continuación, el resultado final:&lt;/p&gt;     &lt;p class="tImagen"&gt;       &lt;object id="FlashID2" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="250" height="250"&gt;         &lt;param name="movie" value="/files/ejemplos/deformado/TriangleImage.swf"&gt;         &lt;param name="quality" value="high"&gt;         &lt;param name="wmode" value="opaque"&gt;         &lt;param name="swfversion" value="6.0.65.0"&gt;         &lt;!-- This param tag prompts users with Flash Player 6.0 r65 and higher to download the latest version of Flash Player. Delete it if you don’t want users to see the prompt. --&gt;         &lt;param name="expressinstall" value="/Scripts/expressInstall.swf"&gt;         &lt;!-- Next object tag is for non-IE browsers. So hide it from IE using IECC. --&gt;         &lt;!--[if !IE]&gt;--&gt;         &lt;object type="application/x-shockwave-flash" data="/files/ejemplos/deformado/TriangleImage.swf" width="250" height="250"&gt;           &lt;!--&lt;![endif]--&gt;         &lt;param name="quality" value="high"&gt;         &lt;param name="wmode" value="opaque"&gt;         &lt;param name="swfversion" value="6.0.65.0"&gt;         &lt;param name="expressinstall" value="/Scripts/expressInstall.swf"&gt;         &lt;!-- The browser displays the following alternative content for users with Flash Player 6.0 and older. --&gt;         &lt;div&gt;           &lt;h4&gt;Content on this page requires a newer version of Adobe Flash Player.&lt;/h4&gt;           &lt;p&gt;&lt;a href="http://www.adobe.com/go/getflashplayer"&gt;&lt;img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" width="112" height="33" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/div&gt;         &lt;!--[if !IE]&gt;--&gt;         &lt;/object&gt;         &lt;!--&lt;![endif]--&gt;       &lt;/object&gt;      &lt;br /&gt;      Arrastra los recuadros negros, para modificar la imagen. &lt;/p&gt;     &lt;p&gt;Como podrás ver, el bitmap esta dividido por 2 triángulos rectángulos, unidos a través de sus hipotenusas formando un rectángulo. Explico a detalle como crearlo:&lt;/p&gt;     &lt;h2&gt; Aprendiendo la Teoria&lt;/h2&gt;     &lt;p&gt; Antes de hecharle un vistazo al código completo, pienso que es mas importante comprender la manera básica de como trabaja este.&lt;/p&gt;     &lt;p&gt;Primero hay que imaginar que ya tenemos en nuestro escenario, un objeto bitmap sin mayor chiste, cuyo contorno esta formado por algún tipo de cuadrángulo al cual aplicaremos la deformación mas adelante:&lt;/p&gt;     &lt;p class="tImagen"&gt;&lt;img src="http://www.cristalab.com/images/tutos/deformado/Step-001.png" width="155" height="155" /&gt;&lt;/p&gt;     &lt;p&gt;Para ello vamos a dividirlo en un par de triángulos iguales, considerando las cuatro vértices propias del cuadrángulo y que son 3 vértices por cada triangulo nos quedarían faltando 2 puntos para completar la figura:&lt;/p&gt;     &lt;p class="tImagen"&gt;&lt;img src="http://www.cristalab.com/images/tutos/deformado/Step-002.png" width="183" height="175" /&gt;&lt;img src="http://www.cristalab.com/images/tutos/deformado/Step-003.png" width="182" height="174" /&gt; &lt;/p&gt;     &lt;p&gt;Por fortuna podemos optimizar ese paso, y evitarnos el tener que crear otros dos objetos adicionales definiendo como puntos en común P2 y P3 así ahorrándonos los 2 vértices que nos faltaban:&lt;/p&gt;     &lt;p class="tImagen"&gt;&lt;img src="http://www.cristalab.com/images/tutos/deformado/Step-004.png" width="160" height="178" /&gt;&lt;/p&gt;     &lt;p&gt;Para poder graficar y manejar texturas con drawTriangles() es necesario emplear las coordenadas &lt;strong&gt;U&lt;/strong&gt; para el eje horizontal cuyo valor sera igual al ancho total de la imagen (x, width), y &lt;strong&gt;V&lt;/strong&gt; para el eje vertical cuyo valor sera el de la altura total de la imagen (y, heigth).&lt;/p&gt;     &lt;p&gt;Como ejemplo usando la siguiente imagen, el triangulo 1 (&lt;strong&gt;T1&lt;/strong&gt;) estará formado por la unión de&lt;strong&gt; P1&lt;/strong&gt; (0, 0), a &lt;strong&gt;P2&lt;/strong&gt; (1, 0) para terminar en &lt;strong&gt;P3&lt;/strong&gt; (0, 1).&lt;/p&gt;     &lt;p class="tImagen"&gt;&lt;img src="http://www.cristalab.com/images/tutos/deformado/Step-005.png" width="210" height="183" /&gt;&lt;br /&gt;      Ejemplo utilizando como puntos de coordenadas U, y V&lt;/p&gt;     &lt;p&gt;Así mismo podemos definir cualquier triangulo sin batallar por el tamaño de la imagen ya que este sera definido por el tamaño total, en la siguiente imagen podemos ver un triangulo cuyos puntos estarán unidos por &lt;strong&gt;P1&lt;/strong&gt; (.5, 0), &lt;strong&gt;P2&lt;/strong&gt; (1, .25) y &lt;strong&gt;P3&lt;/strong&gt; (0, 1).&lt;/p&gt;     &lt;p class="tImagen"&gt;&lt;img src="http://www.cristalab.com/images/tutos/deformado/Step-006.png" width="190" height="181" /&gt;&lt;/p&gt;     &lt;h2&gt;Comprendiendo la Practica&lt;/h2&gt;     &lt;p&gt;Si estabas esperando a ver el código fuente del primer ejemplo, te diré que jamas has estado tan cerca pero aun te falta llegar mas abajo.&lt;/p&gt;     &lt;p&gt;Primero crearemos un triangulo rellenado con la bitmapData de un elemento en la biblioteca, instanciado como "Image" y utilizaremos la nueva Clase &lt;a href="http://foros.cristalab.com/experimentos-con-arrays-y-vectores-t67433/"&gt;Vector&lt;/a&gt; para ello, no entraré mucho en eso.&lt;/p&gt;     &lt;p class="codigo"&gt;graphics.&lt;span class="kw3"&gt;clear&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;; &lt;span class="co1"&gt;// Borramos cualquier dibujo creado por graphics&lt;br /&gt;      &lt;/span&gt; graphics.&lt;span class="me1"&gt;beginBitmapFill&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw2"&gt;new&lt;/span&gt; Image&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;,&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;; &lt;span class="co1"&gt;// Indicamos que se use "Image" como color de relleno &lt;/span&gt; graphics.&lt;span class="me1"&gt;drawTriangles&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt; &lt;span class="co1"&gt;// Comenzamos con el método a explicar &lt;/span&gt; &lt;br /&gt;      Vector.&lt;number&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;[&lt;/span&gt;&lt;span class="nu0"&gt;10&lt;/span&gt;,&lt;span class="nu0"&gt;10&lt;/span&gt;, &lt;span class="nu0"&gt;100&lt;/span&gt;,&lt;span class="nu0"&gt;100&lt;/span&gt;, &lt;span class="nu0"&gt;10&lt;/span&gt;,&lt;span class="nu0"&gt;300&lt;/span&gt;, &lt;span class="nu0"&gt;100&lt;/span&gt;,&lt;span class="nu0"&gt;200&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;, &lt;span class="co1"&gt;// Linea A &lt;/span&gt;&lt;br /&gt;      Vector.&lt;int&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;[&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;,&lt;span class="nu0"&gt;1&lt;/span&gt;,&lt;span class="nu0"&gt;2&lt;/span&gt;, &lt;span class="nu0"&gt;1&lt;/span&gt;,&lt;span class="nu0"&gt;3&lt;/span&gt;,&lt;span class="nu0"&gt;2&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;, &lt;span class="co1"&gt;// Linea B &lt;/span&gt; &lt;br /&gt;      Vector.&lt;number&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;[&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;,&lt;span class="nu0"&gt;0&lt;/span&gt;, &lt;span class="nu0"&gt;1&lt;/span&gt;,&lt;span class="nu0"&gt;0&lt;/span&gt;, &lt;span class="nu0"&gt;0&lt;/span&gt;,&lt;span class="nu0"&gt;1&lt;/span&gt;, &lt;span class="nu0"&gt;1&lt;/span&gt;,&lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;; &lt;span class="co1"&gt;// Linea C &lt;/span&gt; &lt;/p&gt;     &lt;p&gt;Primero que nada en la linea A fijaremos las coordenadas dentro del escenario de cada punto, estos puntos estarán determinados a través del sistema de coordenadas (U, V) en la linea C tal y como ya explique arriba y finalmente en la linea B indicamos como trazar los triángulos a partir de cada punto que conforman la figura, cosa que también ya fue mencionada. Así se formara una figura similar a la siguiente:&lt;/p&gt;     &lt;p class="tImagen"&gt;&lt;img src="http://www.cristalab.com/images/tutos/deformado/Step-007.png" width="287" height="224" /&gt;&lt;/p&gt;     &lt;p&gt;Ahora, comprendido todo lo anterior me parece apropiado mostrar la clase fuente del primer ejemplo con todas sus explicaciones comentadas entre lineas, con algunas referencias hacia los ejemplos anteriores:&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;package&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span class="co1"&gt;// Importamos todos los paquetes necesarios &lt;/span&gt;&lt;br /&gt; &lt;span class="kw3"&gt;import&lt;/span&gt; flash.&lt;span class="me1"&gt;geom&lt;/span&gt;.&lt;span class="me1"&gt;*&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import&lt;/span&gt; flash.&lt;span class="me1"&gt;events&lt;/span&gt;.&lt;span class="me1"&gt;Event&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import&lt;/span&gt; flash.&lt;span class="me1"&gt;events&lt;/span&gt;.&lt;span class="me1"&gt;TimerEvent&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import&lt;/span&gt; flash.&lt;span class="me1"&gt;events&lt;/span&gt;.&lt;span class="me1"&gt;MouseEvent&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import&lt;/span&gt; flash.&lt;span class="me1"&gt;display&lt;/span&gt;.&lt;span class="me1"&gt;Sprite&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import&lt;/span&gt; flash.&lt;span class="me1"&gt;display&lt;/span&gt;.&lt;span class="me1"&gt;Bitmap&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import&lt;/span&gt; flash.&lt;span class="me1"&gt;display&lt;/span&gt;.&lt;span class="me1"&gt;BitmapData&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import&lt;/span&gt; flash.&lt;span class="me1"&gt;display&lt;/span&gt;.&lt;span class="me1"&gt;TriangleCulling&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import&lt;/span&gt; flash.&lt;span class="me1"&gt;display&lt;/span&gt;.&lt;span class="kw3"&gt;MovieClip&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import&lt;/span&gt; flash.&lt;span class="me1"&gt;display&lt;/span&gt;.&lt;span class="me1"&gt;Graphics&lt;/span&gt;;&lt;br /&gt; &lt;span class="co1"&gt;// &lt;/span&gt;&lt;br /&gt; &lt;span class="kw3"&gt;public&lt;/span&gt; &lt;span class="kw2"&gt;class&lt;/span&gt; Main &lt;span class="kw3"&gt;extends&lt;/span&gt; &lt;span class="kw3"&gt;MovieClip&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span class="co1"&gt;// Este sera el tamaño de la imagen una vez cargada dentro del escenario &lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;var&lt;/span&gt; &lt;span class="kw3"&gt;size&lt;/span&gt;:&lt;span class="kw3"&gt;int&lt;/span&gt; = &lt;span class="nu0"&gt;260&lt;/span&gt;;&lt;br /&gt;   &lt;span class="co1"&gt;// Aqui se guardara la bitmapData, como su nombre indica sera el contenedor... &lt;/span&gt;&lt;br /&gt;   &lt;span class="co1"&gt;// ...cargado al centro del escenario &lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;var&lt;/span&gt; container:Sprite;&lt;br /&gt;   &lt;span class="co1"&gt;// La bitmapData sobre la cual trabajaremos &lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;var&lt;/span&gt; bitmapData:BitmapData;&lt;br /&gt;   &lt;span class="co1"&gt;// Los dos vectores que representaran los catetos y vertices al dibujar los Triangulos &lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;var&lt;/span&gt; vertices:Vector.&lt;number&gt;;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;var&lt;/span&gt; catetos:Vector.&lt;number&gt;;&lt;br /&gt;   &lt;span class="co1"&gt;// Estos seran los Sprites encargados de modificar la BitmapData... &lt;/span&gt;&lt;br /&gt;   &lt;span class="co1"&gt;// ...al igual que en los ejemplos anteriores se trataran de P1,P2,P3 y P4 &lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;var&lt;/span&gt; P1:Sprite;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;var&lt;/span&gt; P2:Sprite;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;var&lt;/span&gt; P3:Sprite;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;var&lt;/span&gt; P4:Sprite;&lt;br /&gt;   &lt;span class="co1"&gt;//   &lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;public&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt; Main&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;:&lt;span class="kw3"&gt;void&lt;/span&gt;&lt;br /&gt;   &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class="co1"&gt;// Lo primero a hacer sera cargar el objeto bitmap de nuestra biblioteca &lt;/span&gt;&lt;br /&gt;    bitmapData = &lt;span class="kw2"&gt;new&lt;/span&gt; bitmap&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;, &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="co1"&gt;// Luego, creamos el contenedor de la BitmapData ya cargada... &lt;/span&gt;&lt;br /&gt;    container = &lt;span class="kw2"&gt;new&lt;/span&gt; Sprite&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="co1"&gt;// ...y lo colocamos centrado en el escenario &lt;/span&gt;&lt;br /&gt;    container.&lt;span class="me1"&gt;x&lt;/span&gt; = &lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw3"&gt;stage&lt;/span&gt;.&lt;span class="me1"&gt;stageWidth&lt;/span&gt; - bitmapData.&lt;span class="kw3"&gt;width&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; /&lt;span class="nu0"&gt;2&lt;/span&gt;;&lt;br /&gt;    container.&lt;span class="me1"&gt;y&lt;/span&gt; = &lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw3"&gt;stage&lt;/span&gt;.&lt;span class="me1"&gt;stageHeight&lt;/span&gt; - bitmapData.&lt;span class="kw3"&gt;height&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; /&lt;span class="nu0"&gt;2&lt;/span&gt;;&lt;br /&gt;    addChild&lt;span class="br0"&gt;(&lt;/span&gt;container&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="co1"&gt;// Finalmente llamamos a estas dos funciones, que explicare mas adelante... &lt;/span&gt;&lt;br /&gt;    setPoints&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    drawTriangle&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;   &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span class="co1"&gt;// A las siguientes dos funciones llegaran todos los listeners de cada punto... &lt;/span&gt;&lt;br /&gt;   &lt;span class="co1"&gt;// ...por lo que cumplen una importante funcion al querer arrastrar y modificar la bitmap &lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt; EventHandler&lt;span class="br0"&gt;(&lt;/span&gt;event:Event&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class="co1"&gt;// Diferenciamos los eventos recibidos &lt;/span&gt;&lt;br /&gt;    &lt;span class="kw1"&gt;switch&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;event.&lt;span class="kw3"&gt;type&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class="co1"&gt;// Detectamos el evento MouseUp &lt;/span&gt;&lt;br /&gt;      &lt;span class="kw1"&gt;case&lt;/span&gt; MouseEvent.&lt;span class="me1"&gt;MOUSE_UP&lt;/span&gt;:&lt;br /&gt;       removeEventListener&lt;span class="br0"&gt;(&lt;/span&gt;MouseEvent.&lt;span class="me1"&gt;MOUSE_MOVE&lt;/span&gt;, EventHandler&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;       &lt;span class="kw3"&gt;stopDrag&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;      &lt;span class="co1"&gt;// &lt;/span&gt;&lt;br /&gt;      &lt;span class="kw2"&gt;default&lt;/span&gt;: drawTriangle&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt; startPointDrag&lt;span class="br0"&gt;(&lt;/span&gt;event:MouseEvent&lt;span class="br0"&gt;)&lt;/span&gt;:&lt;span class="kw3"&gt;void&lt;/span&gt;&lt;br /&gt;   &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;    addEventListener&lt;span class="br0"&gt;(&lt;/span&gt;MouseEvent.&lt;span class="me1"&gt;MOUSE_MOVE&lt;/span&gt;, EventHandler&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    event.&lt;span class="me1"&gt;currentTarget&lt;/span&gt;.&lt;span class="kw3"&gt;startDrag&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    drawTriangle&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;   &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span class="co1"&gt;// Esta es la funcion que dividira la imagen cargada desde la bilioteca... &lt;/span&gt;&lt;br /&gt;   &lt;span class="co1"&gt;// ...en dos triangulos, de esto ya hablamos mas arriba &lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt; drawTriangle&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;:&lt;span class="kw3"&gt;void&lt;/span&gt;&lt;br /&gt;   &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;    vertices = &lt;span class="kw2"&gt;new&lt;/span&gt; Vector.&lt;number&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    catetos = &lt;span class="kw2"&gt;new&lt;/span&gt; Vector.&lt;number&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="co1"&gt;// Señalamos los puntos que forman el Triangulo 1 &lt;/span&gt;&lt;br /&gt;    vertices.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;P1.&lt;span class="me1"&gt;x&lt;/span&gt;, P1.&lt;span class="me1"&gt;y&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    vertices.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;P2.&lt;span class="me1"&gt;x&lt;/span&gt;, P2.&lt;span class="me1"&gt;y&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    vertices.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;P3.&lt;span class="me1"&gt;x&lt;/span&gt;, P3.&lt;span class="me1"&gt;y&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="co1"&gt;// ...y los del Triangulo 2 &lt;/span&gt;&lt;br /&gt;    vertices.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;P2.&lt;span class="me1"&gt;x&lt;/span&gt;, P2.&lt;span class="me1"&gt;y&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    vertices.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;P4.&lt;span class="me1"&gt;x&lt;/span&gt;, P4.&lt;span class="me1"&gt;y&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    vertices.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;P3.&lt;span class="me1"&gt;x&lt;/span&gt;, P3.&lt;span class="me1"&gt;y&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;    &lt;br /&gt;    &lt;span class="co1"&gt;// Una vez hecho eso, dividimos el cuadrangulo en dos triangulos &lt;/span&gt;&lt;br /&gt;    &lt;span class="co1"&gt;// Utilizando las coordenadas (U, V) tanto para el Triangulo 1 &lt;/span&gt;&lt;br /&gt;    catetos.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;, &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    catetos.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;, &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    catetos.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;, &lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="co1"&gt;// ...como para el Triangulo 2 &lt;/span&gt;&lt;br /&gt;    catetos.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;, &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    catetos.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;1&lt;/span&gt;, &lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    catetos.&lt;span class="kw3"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;, &lt;span class="nu0"&gt;1&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="co1"&gt;// &lt;/span&gt;&lt;br /&gt;    container.&lt;span class="me1"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;clear&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    container.&lt;span class="me1"&gt;graphics&lt;/span&gt;.&lt;span class="me1"&gt;beginBitmapFill&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;bitmapData&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    container.&lt;span class="me1"&gt;graphics&lt;/span&gt;.&lt;span class="me1"&gt;drawTriangles&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;vertices, &lt;span class="kw2"&gt;null&lt;/span&gt;, catetos, TriangleCulling.&lt;span class="me1"&gt;NONE&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;   &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span class="co1"&gt;// Esta funcion esta encargada de acomodar los puntos P1~P4 y... &lt;/span&gt;&lt;br /&gt;   &lt;span class="co1"&gt;// ...agregarles sus respectivos listeners &lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt; setPoints&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;:&lt;span class="kw3"&gt;void&lt;/span&gt; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;    P1 = newPoint&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    P2 = newPoint&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    P3 = newPoint&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    P4 = newPoint&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="co1"&gt;// Fijamos cada uno de los puntos en los margenes de la imagen cargada... &lt;/span&gt;&lt;br /&gt;    &lt;span class="co1"&gt;// ...logrando que cuando utilizemos las coordenadas (U, V) estas queden... &lt;/span&gt;&lt;br /&gt;    &lt;span class="co1"&gt;// ...acomodadas en los limites debidos &lt;/span&gt;&lt;br /&gt;    P4.&lt;span class="me1"&gt;x&lt;/span&gt; = P2.&lt;span class="me1"&gt;x&lt;/span&gt; = bitmapData.&lt;span class="kw3"&gt;width&lt;/span&gt;;&lt;br /&gt;    P4.&lt;span class="me1"&gt;y&lt;/span&gt; = P3.&lt;span class="me1"&gt;y&lt;/span&gt; = bitmapData.&lt;span class="kw3"&gt;height&lt;/span&gt;;&lt;br /&gt;    &lt;span class="co1"&gt;// Añadimos todos los listeners necesarios para cada punto &lt;/span&gt;&lt;br /&gt;    P1.&lt;span class="me1"&gt;addEventListener&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;MouseEvent.&lt;span class="me1"&gt;MOUSE_DOWN&lt;/span&gt;, startPointDrag&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    P2.&lt;span class="me1"&gt;addEventListener&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;MouseEvent.&lt;span class="me1"&gt;MOUSE_DOWN&lt;/span&gt;, startPointDrag&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    P3.&lt;span class="me1"&gt;addEventListener&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;MouseEvent.&lt;span class="me1"&gt;MOUSE_DOWN&lt;/span&gt;, startPointDrag&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    P4.&lt;span class="me1"&gt;addEventListener&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;MouseEvent.&lt;span class="me1"&gt;MOUSE_DOWN&lt;/span&gt;, startPointDrag&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="kw3"&gt;stage&lt;/span&gt;.&lt;span class="me1"&gt;addEventListener&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;MouseEvent.&lt;span class="me1"&gt;MOUSE_UP&lt;/span&gt;, EventHandler&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;   &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span class="co1"&gt;// Esta funcion, llamada por "setPoints" dibuja los puntos P1~P4 a arrastrar &lt;/span&gt;&lt;br /&gt;   &lt;span class="kw3"&gt;private&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt; newPoint&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;:Sprite &lt;span class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span class="kw2"&gt;var&lt;/span&gt; point:Sprite = &lt;span class="kw2"&gt;new&lt;/span&gt; Sprite&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    point.&lt;span class="me1"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;beginFill&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;0x000000&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    point.&lt;span class="me1"&gt;graphics&lt;/span&gt;.&lt;span class="me1"&gt;drawRect&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;-5&lt;/span&gt;, &lt;span class="nu0"&gt;-5&lt;/span&gt;, &lt;span class="nu0"&gt;10&lt;/span&gt;, &lt;span class="nu0"&gt;10&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    point.&lt;span class="me1"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;endFill&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    point.&lt;span class="me1"&gt;buttonMode&lt;/span&gt; = &lt;span class="kw2"&gt;true&lt;/span&gt;;&lt;br /&gt;    &lt;span class="co1"&gt;// &lt;/span&gt;&lt;br /&gt;    container.&lt;span class="me1"&gt;addChild&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;point&lt;span class="br0"&gt;)&lt;/span&gt;;&lt;br /&gt;    &lt;span class="kw1"&gt;return&lt;/span&gt; point;&lt;br /&gt;   &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="br0"&gt;}&lt;/span&gt;&lt;/pre&gt;     &lt;p class="nota"&gt;&lt;strong&gt;NOTA&lt;/strong&gt;: Hay un pequeño detalle a tener en cuenta al utilizar este método sobre imágenes vectoriales, y es que al vaciar la imagen como relleno en un bitmap la rasteriza en el proceso, por lo que al dar un acercamiento muy grande los pixeles se harán evidentes.  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-2836646796379927681?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/2836646796379927681/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/04/deformar-bitmaps-con-el-metodo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/2836646796379927681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/2836646796379927681'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/04/deformar-bitmaps-con-el-metodo.html' title='Deformar bitmaps con el metodo drawTriangles de Actionscript 3'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-1259968743831745518</id><published>2009-04-22T10:30:00.001-07:00</published><updated>2009-04-22T10:30:58.832-07:00</updated><title type='text'>Clase para usar cualquier imagen de fondo en ActionScript 3</title><content type='html'>Esta &lt;a class="arti_link" href="http://www.cristalab.com/tags/clases/"&gt;clase&lt;/a&gt; la tenía escrita para usar una imagen tipo mosaico (tile) en mi biblioteca y fijarla como fondo, similar a lo que se puede hacer con &lt;em&gt;background:url()&lt;/em&gt; en &lt;strong&gt;&lt;a class="arti_link" href="http://www.cristalab.com/tags/css/"&gt;CSS&lt;/a&gt;&lt;/strong&gt;. Así esta clase pegará la imagen vinculada y la usará como fondo cuando el stage la requiera.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Su uso es muy sencillo, ya que sólo debes identificar una imagen con el nombre de clase &lt;strong&gt;Pattern&lt;/strong&gt; como se muestra en la siguiente imagen.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;img class="imgBlog" src="http://www.cristalab.com/images/tips/actionscript_3/clase-imagen-fondo/clase-imagen-fondo01.jpg" border="0" /&gt;&lt;br /&gt;&lt;span style="line-height: normal;font-size:12;" &gt;&lt;span style="color:gray;"&gt;Bitmap Properties&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Esta es la &lt;a class="arti_link" href="http://www.cristalab.com/tags/clases/"&gt;clase&lt;/a&gt;:&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo actionscript"&gt;package&lt;br /&gt;{&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;import&lt;/span&gt; flash.display.*;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;import&lt;/span&gt; flash.events.*;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;import&lt;/span&gt; flash.display.Sprite;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;import&lt;/span&gt; flash.geom.Matrix;&lt;br /&gt;&lt;span class="actionscript__com"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;dynamic&lt;/span&gt; &lt;span class="actionscript__reserved"&gt;public&lt;/span&gt; &lt;span class="actionscript__global"&gt;class&lt;/span&gt; AddPattern &lt;span class="actionscript__reserved"&gt;extends&lt;/span&gt; MovieClip&lt;br /&gt;{&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;private&lt;/span&gt; &lt;span class="actionscript__global"&gt;var&lt;/span&gt; maxWidth:&lt;span class="actionscript__reserved"&gt;Number&lt;/span&gt;;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;private&lt;/span&gt; &lt;span class="actionscript__global"&gt;var&lt;/span&gt; maxHeight:&lt;span class="actionscript__reserved"&gt;Number&lt;/span&gt;;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;private&lt;/span&gt; &lt;span class="actionscript__global"&gt;var&lt;/span&gt; Bitmap:BitmapData;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;private&lt;/span&gt; &lt;span class="actionscript__global"&gt;var&lt;/span&gt; RadialGradient:Sprite;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;private&lt;/span&gt; &lt;span class="actionscript__global"&gt;var&lt;/span&gt; BackGround:Sprite;&lt;br /&gt;&lt;span class="actionscript__com"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;public&lt;/span&gt; &lt;span class="actionscript__global"&gt;function&lt;/span&gt; AddPattern() : &lt;span class="actionscript__reserved"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;stage.&lt;span class="actionscript__reserved"&gt;scaleMode&lt;/span&gt; = StageScaleMode.NO_SCALE;&lt;br /&gt;stage.&lt;span class="actionscript__reserved"&gt;align&lt;/span&gt; = StageAlign.TOP_LEFT;&lt;br /&gt;Bitmap = &lt;span class="actionscript__global"&gt;new&lt;/span&gt; Pattern(&lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;, &lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;);&lt;br /&gt;&lt;span class="actionscript__com"&gt;//&lt;/span&gt;&lt;br /&gt;BackGround = &lt;span class="actionscript__global"&gt;new&lt;/span&gt; Sprite();&lt;br /&gt;addChild(BackGround);&lt;br /&gt;&lt;span class="actionscript__com"&gt;//&lt;/span&gt;&lt;br /&gt;RadialGradient = &lt;span class="actionscript__global"&gt;new&lt;/span&gt; Sprite();&lt;br /&gt;RadialGradient.graphics.&lt;span class="actionscript__reserved"&gt;beginGradientFill&lt;/span&gt;(GradientType.RADIAL,[0x000000,0x000000],[&lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;,.&lt;span class="actionscript__numbers"&gt;5&lt;/span&gt;],[&lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;,&lt;span class="actionscript__numbers"&gt;255&lt;/span&gt;],&lt;span class="actionscript__global"&gt;new&lt;/span&gt; Matrix().createGradientBox(stage.stageWidth,stage.stageHeight,&lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;,&lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;,&lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;));&lt;br /&gt;RadialGradient.graphics.drawRect(&lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;,&lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;,stage.stageWidth,stage.stageHeight);&lt;br /&gt;addChild(RadialGradient);&lt;br /&gt;&lt;span class="actionscript__com"&gt;//&lt;/span&gt;&lt;br /&gt;maxWidth = stage.stageWidth - &lt;span class="actionscript__numbers"&gt;1&lt;/span&gt;;&lt;br /&gt;maxHeight = stage.stageHeight - &lt;span class="actionscript__numbers"&gt;1&lt;/span&gt;;&lt;br /&gt;&lt;span class="actionscript__com"&gt;//&lt;/span&gt;&lt;br /&gt;stage.addEventListener(Event.RESIZE, fillStage);&lt;br /&gt;stage.addEventListener(Event.ADDED, fillStage);&lt;br /&gt;}&lt;br /&gt;&lt;span class="actionscript__com"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;public&lt;/span&gt; &lt;span class="actionscript__global"&gt;function&lt;/span&gt; fillStage(event:Event) : &lt;span class="actionscript__reserved"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span class="actionscript__keywords"&gt;if&lt;/span&gt; (stage != &lt;span class="actionscript__global"&gt;null&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;span class="actionscript__keywords"&gt;if&lt;/span&gt;((stage.stageWidth &gt; maxWidth) || (stage.stageHeight &gt; maxHeight))&lt;br /&gt;{&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;with&lt;/span&gt; (BackGround)&lt;br /&gt;{&lt;br /&gt;graphics.beginBitmapFill(Bitmap, &lt;span class="actionscript__global"&gt;null&lt;/span&gt;, &lt;span class="actionscript__global"&gt;true&lt;/span&gt;, &lt;span class="actionscript__global"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;span class="actionscript__com"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="actionscript__keywords"&gt;if&lt;/span&gt;(stage.stageWidth &gt; maxWidth){maxWidth = stage.stageWidth;}&lt;br /&gt;&lt;span class="actionscript__keywords"&gt;if&lt;/span&gt;(stage.stageHeight &gt; maxHeight){maxHeight = stage.stageHeight;}&lt;br /&gt;&lt;span class="actionscript__com"&gt;//&lt;/span&gt;&lt;br /&gt;graphics.drawRect(&lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;, &lt;span class="actionscript__numbers"&gt;0&lt;/span&gt;, maxWidth, maxHeight);&lt;br /&gt;graphics.&lt;span class="actionscript__reserved"&gt;endFill&lt;/span&gt;();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;updateRadialFilter();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;span class="actionscript__com"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="actionscript__reserved"&gt;public&lt;/span&gt; &lt;span class="actionscript__global"&gt;function&lt;/span&gt; updateRadialFilter() : &lt;span class="actionscript__reserved"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;RadialGradient.&lt;span class="actionscript__reserved"&gt;width&lt;/span&gt; = stage.stageWidth;&lt;br /&gt;RadialGradient.&lt;span class="actionscript__reserved"&gt;height&lt;/span&gt; = stage.stageHeight;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y aquí hay &lt;strong&gt;&lt;a class="arti_link" href="http://mau.cristalab.com/Tips/AddPattern/"&gt;un ejemplo de su uso&lt;/a&gt;&lt;/strong&gt;, que como verás también es sensible a un cambio de tamaño en la ventana del navegador expandiéndose y manteniéndose a pantalla completa.&lt;br /&gt;&lt;br /&gt;Finalmente recomendaría que se considere el tamaño de una imagen al vincularla ya que entre más pequeña (&lt;em&gt;10x10pxs&lt;/em&gt;) sea ésta, mayor será el esfuerzo que hará el procesador para hacerla ajustar al tamaño completo de la pantalla.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-1259968743831745518?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/1259968743831745518/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/04/clase-para-usar-cualquier-imagen-de.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/1259968743831745518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/1259968743831745518'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/04/clase-para-usar-cualquier-imagen-de.html' title='Clase para usar cualquier imagen de fondo en ActionScript 3'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-6154204344983429018</id><published>2009-04-22T10:28:00.002-07:00</published><updated>2009-04-22T10:29:02.133-07:00</updated><title type='text'>Eventos Click y Doble CLick</title><content type='html'>&lt;p&gt; Siguiendo el tema abierto por &lt;a class="arti_link" href="http://www.cristalab.com/foros/profile.php?mode=viewprofile&amp;amp;u=30874"&gt;tomydb&lt;/a&gt;, en el que explicaba &lt;a class="arti_link" href="http://www.cristalab.com/tips/40088/evento-dobleclick-en-un-boton-con-actionscript"&gt;cómo detectar un doble click sobre un botón en flash&lt;/a&gt; con &lt;a class="arti_link" href="http://www.cristalab.com/tips/tags/actionscript"&gt;actionscript 2&lt;/a&gt;, explicaré cómo hacerlo con &lt;a class="arti_link" href="http://www.cristalab.com/tips/tags/actionscript_3"&gt;actionscript 3&lt;/a&gt; ya que ahora es más sencillo gracias a que la &lt;strong&gt;clase MouseEvent&lt;/strong&gt; nos permite detectar directamente el evento dobleclick.&lt;br /&gt;&lt;br /&gt;El uso de la clase MouseEvent es muy simple y ya ha sido explicada en &lt;a class="arti_link" href="http://www.cristalab.com/tips/29767/actionscript-3.0-parte-2-botones-eventos-geturl-y-enlaces"&gt;otros tips&lt;/a&gt;.  Únicamente hemos de crear un listener que detecte el evento y ejecutar una acción.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;clip.doubleClickEnabled = true&lt;br /&gt;clip.addEventListener(MouseEvent.DOUBLE_CLICK, onDobleClick);&lt;br /&gt;function onDobleClick(event:MouseEvent)&lt;br /&gt;{&lt;br /&gt;   trace("doble click");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Hemos de fijarnos en la propiedad &lt;strong&gt;doubleClickEnabled&lt;/strong&gt; que es la que nos indica si la acción de doble click está activa o no. &lt;strong&gt;Por defecto la propiedad está con valor false&lt;/strong&gt;, con lo que debemos pasarla a &lt;strong&gt;true&lt;/strong&gt; en caso contrario el dobleclick no se ejecutaría.&lt;br /&gt;&lt;br /&gt;Ahora, para hacer el tip más interesante (&lt;span style="font-size: 9px; line-height: normal;"&gt;y para que a &lt;a class="arti_link" href="http://www.cristalab.com/foros/profile.php?mode=viewprofile&amp;amp;u=18225"&gt;Bleend&lt;/a&gt; el tip no le parezca &lt;a class="arti_link" href="http://www.cristalab.com/foros/viewtopic.php?p=272779#272779"&gt;demasiado corto&lt;/a&gt;...)&lt;/span&gt; explicaré cómo detectar si hemos hecho un &lt;strong&gt;click&lt;/strong&gt; o un &lt;strong&gt;dobleclick&lt;/strong&gt; sobre el mismo botón. Es decir, que &lt;strong&gt;si clicamos sobre el botón una vez ejecute una acción y si clicamos doble ejecute otra distinta&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Siguiendo lo explicado en este &lt;a class="arti_link" href="http://www.cristalab.com/foros/viewtopic.php?t=39922"&gt;otro tip&lt;/a&gt; empezaremos el código creando la clase para nuestro botón. Crearemos la clase &lt;strong&gt;Boton.as&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A este botón le añadiremos los eventos de &lt;strong&gt;click&lt;/strong&gt; y &lt;strong&gt;double_click&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;package&lt;br /&gt;{&lt;br /&gt;   import flash.display.MovieClip;&lt;br /&gt;   import flash.events.MouseEvent;&lt;br /&gt;   //-----------------------------------------&lt;br /&gt;   public class Boton extends MovieClip&lt;br /&gt;   {&lt;br /&gt;      //-----------------------------------------&lt;br /&gt;      public function Boton()&lt;br /&gt;      {&lt;br /&gt;         doubleClickEnabled = true;&lt;br /&gt;         addEventListener(MouseEvent.CLICK, onClick);&lt;br /&gt;         addEventListener(MouseEvent.DOUBLE_CLICK, onDobleClick);&lt;br /&gt;      }&lt;br /&gt;      //-----------------------------------------&lt;br /&gt;      private function onClick(event:MouseEvent):void&lt;br /&gt;      {&lt;br /&gt;         trace("click");&lt;br /&gt;      }&lt;br /&gt;      private function onDobleClick(event:MouseEvent):void&lt;br /&gt;      {&lt;br /&gt;         trace("doble click");&lt;br /&gt;      }&lt;br /&gt;      //-----------------------------------------&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Si publicasemos ahora este botón veríamos el siguiente problema... &lt;strong&gt;al ejecutar el dobleclick tambien se ejecutaría el click normal&lt;/strong&gt;, ya que los dos listeners son detectados. En el panel salida nos marcaría esto:&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;panel salida :&lt;/strong&gt;&lt;/p&gt; &lt;div class="cita"&gt;&lt;br /&gt;click&lt;br /&gt;doble click &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Esto no es lo que nos interesa, solo queremos que se ejecute una de las dos. Para solucionar el problema ampliaremos la clase siguiendo este proceso:&lt;br /&gt;&lt;br /&gt;Crearemos una variable boleana donde indicaremos si hemos realizado un click o un dobleclick&lt;br /&gt;&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;private var isDobleClick:Boolean;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;El valor de la variable lo cambiaremos a través de las funciones de los eventos:&lt;br /&gt;&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;private function onClick(event:MouseEvent):void&lt;br /&gt;{&lt;br /&gt;   isDobleClick = false;&lt;br /&gt;}&lt;br /&gt;private function onDobleClick(event:MouseEvent):void&lt;br /&gt;{&lt;br /&gt;   isDobleClick = true;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Escribiremos una tercera función que ejecute las acciones según el valor de la variable.&lt;br /&gt;&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;private function controlaClick(event:TimerEvent):void&lt;br /&gt;{&lt;br /&gt;   if (isDobleClick == false) {&lt;br /&gt;      trace("click");&lt;br /&gt;   } else {&lt;br /&gt;      trace("doble click");&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Esta función &lt;strong&gt;controlaClick()&lt;/strong&gt; la ejecutaremos desde la función &lt;strong&gt;onClick()&lt;/strong&gt;, pero hemos de darle un margen de tiempo para detectar si hemos realizado un dobleclick, así que la ejecutaremos desde un intervalo. La función quedaría así:&lt;br /&gt;&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;private function onClick(event:MouseEvent):void&lt;br /&gt;{&lt;br /&gt;   isDobleClick = false;&lt;br /&gt;   espera = new Timer(200, 1);&lt;br /&gt;   espera.addEventListener(TimerEvent.TIMER, controlaClick);&lt;br /&gt;   espera.start();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Cómo añadido podemos hacer que si damos &lt;strong&gt;un solo click&lt;/strong&gt; sobre el botón &lt;strong&gt;pulsando la tecla "Ctrl"&lt;/strong&gt; se ejecuten las acciones de un dobleclick, para eso utilizaremos la &lt;strong&gt;propiedad ctrlKey&lt;/strong&gt; del evento MouseEvent. Esta propiedad devuelve true o false según esté pulsada la tecla en el momento del click. (Esta propiedad también está para "shift" y "Alt")&lt;br /&gt;&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;if (event.ctrlKey) {&lt;br /&gt;   isDobleClick = true;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;La clase completa sería esta:&lt;br /&gt;&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;package&lt;br /&gt;{&lt;br /&gt;   import flash.display.MovieClip;&lt;br /&gt;   import flash.events.MouseEvent;&lt;br /&gt;   import flash.utils.Timer;&lt;br /&gt;   import flash.events.TimerEvent;&lt;br /&gt;   //-----------------------------------------&lt;br /&gt;   public class Boton extends MovieClip&lt;br /&gt;   {&lt;br /&gt;      private var isDobleClick:Boolean;&lt;br /&gt;      private var espera:Timer;&lt;br /&gt;      //-----------------------------------------&lt;br /&gt;      public function Boton()&lt;br /&gt;      {&lt;br /&gt;         doubleClickEnabled = true;&lt;br /&gt;         addEventListener(MouseEvent.CLICK, onClick);&lt;br /&gt;         addEventListener(MouseEvent.DOUBLE_CLICK, onDobleClick);&lt;br /&gt;      }&lt;br /&gt;      //-----------------------------------------&lt;br /&gt;      private function onClick(event:MouseEvent):void&lt;br /&gt;      {&lt;br /&gt;         isDobleClick = false;&lt;br /&gt;         espera = new Timer(200, 1);&lt;br /&gt;         espera.addEventListener(TimerEvent.TIMER, controlaClick);&lt;br /&gt;         espera.start();&lt;br /&gt;         if (event.ctrlKey) {&lt;br /&gt;            isDobleClick = true;&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;      private function onDobleClick(event:MouseEvent):void&lt;br /&gt;      {&lt;br /&gt;         isDobleClick = true;&lt;br /&gt;      }&lt;br /&gt;      private function controlaClick(event:TimerEvent):void&lt;br /&gt;      {&lt;br /&gt;         if (isDobleClick == false) {&lt;br /&gt;            trace("click");&lt;br /&gt;         } else {&lt;br /&gt;            trace("doble click");&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;      //-----------------------------------------&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-6154204344983429018?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/6154204344983429018/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/04/eventos-click-y-doble-click.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/6154204344983429018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/6154204344983429018'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/04/eventos-click-y-doble-click.html' title='Eventos Click y Doble CLick'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-424486175592028464</id><published>2009-04-22T10:28:00.001-07:00</published><updated>2009-04-22T10:28:27.439-07:00</updated><title type='text'>Crear ambiente 3D en Flash</title><content type='html'>&lt;p&gt; El siguiente &lt;a class="arti_link" href="http://www.cristalab.com/tips/"&gt;tip&lt;/a&gt; está referido a simular un espacio &lt;a class="arti_link" href="http://es.wikipedia.org/wiki/Coordenadas_cartesianas"&gt;3D&lt;/a&gt; (x,y,z) teniendo sólo 2 coordenadas X e Y (x,y). El cual es parte de un tema más amplio llamado &lt;strong&gt;Isometría &lt;/strong&gt; , que se usa mucho en Juegos.&lt;br /&gt;Comencemos:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;1.- Crear el ambiente 3D&lt;/h2&gt;&lt;br /&gt;&lt;a class="arti_link" href="http://www.cristalab.com/tags/flash/"&gt;Flash&lt;/a&gt; maneja el siguiente sistema de coordenadas en 2d (Acuérdense que &lt;strong&gt;Y&lt;/strong&gt; está en sentido contrario)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img class="imgBlog" src="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d01.jpg" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;La idea es manejarlas en 3d (no es tan fácil dibujar esto en Fireworks &lt;img src="http://www.cristalab.com/foros/images/smiles/icon_miau.gif" alt="^^" border="0" /&gt; )&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img class="imgBlog" src="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d02.jpg" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ahora juntemos estos sistemas&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img class="imgBlog" src="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d03.jpg" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;* Aquí hay un pequeño truco, estoy utilizando 2 coordenadas que ya existen(x y), solo las he cambiado de ubicación(z y) &lt;img src="http://www.cristalab.com/foros/images/smiles/icon_happy.gif" alt=":)" border="0" /&gt;.&lt;br /&gt;Es la forma más sencilla, creanme... &lt;img src="http://www.cristalab.com/foros/images/smiles/icon_wink.gif" alt=":wink:" border="0" /&gt;. Si se fijan bien, el nuevo eje X (3D) es una línea oblicua al nuestro eje normal (2D) formando cierto ángulo.&lt;br /&gt;&lt;br /&gt;Luego, si proyectamos el 3D en 2D tenemos lo siguiente&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;img class="imgBlog" src="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d04.jpg" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Observemos tanto en el cuadro amarillo como en el triángulo verde , el eje &lt;span style="color: rgb(239, 41, 41);"&gt;XY&lt;/span&gt; y&lt;span style="color: rgb(0, 0, 0);"&gt; X'Y'Z'&lt;/span&gt; :&lt;br /&gt;B: Es el ángulo formado entre &lt;span style="color: rgb(204, 0, 0);"&gt;X&lt;/span&gt; y &lt;span style="color: rgb(0, 0, 0);"&gt;X'&lt;/span&gt;&lt;br /&gt;Punto en 2D: (x,y)&lt;br /&gt;Punto en 3D: (x',y',z')&lt;br /&gt;En el cuadro amarillo, 2 líneas verdes que tiene la misma longitud(eso es demostrable por geometría)&lt;br /&gt;También observemos la longitudes de X' y Y'.&lt;br /&gt;&lt;br /&gt;Si nos concentramos en el triángulo verde :&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img class="imgBlog" src="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d05.jpg" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Podemos proyectar X' en&lt;span style="color: rgb(239, 41, 41);"&gt; XY&lt;/span&gt; sabiendo el ángulo de inclinación B (trigonometría), con cual si usamos esto en la longitudes de X' y Y' obtenemos:&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;//En Y'&lt;br /&gt;x+x'cos(180-B) = y'&lt;br /&gt;//En X'&lt;br /&gt;x'sen(180-B)+z' = y&lt;br /&gt;&lt;br /&gt;// Si ordenamos XY para un lado y X'Y'Z' en el otro&lt;br /&gt;&lt;br /&gt;x = y' - x'cos(180-B)&lt;br /&gt;y = z' + x'sen(180-B)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Por tanto, podemos dar la coordenadas (x',y',z') y dibujarlas en (x,y)&lt;br /&gt;En &lt;strong&gt;AS3&lt;/strong&gt;&lt;br /&gt;* Asumamos un ángulo de inclinación de 120 grados, con lo cual tendríamos 60 grados (180-B).Tengan presente que el ángulo debe estar en radianes (60 grados es equivalente a &lt;strong&gt;PI&lt;/strong&gt;/3 radianes)&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;public static function coordenadas3d(_x:Number = 0, _y:Number = 0, _z:Number = 0):Point&lt;br /&gt;{&lt;br /&gt;var p:Point = new Point(0,0);&lt;br /&gt;p.x = _y - _x*Math.cos((1/3)*Math.PI);&lt;br /&gt;p.y = _z + _x*Math.sin((1/3)*Math.PI);&lt;br /&gt;&lt;br /&gt;return p;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Nuestro código en Action&lt;br /&gt;&lt;object width="400" height="400"&gt;  &lt;param name="allowfullscreen" value="true"&gt;  &lt;param name="allowscriptaccess" value="always"&gt;  &lt;param name="movie" value="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d06.swf##"&gt;  &lt;embed src="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d06.swf##" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="400"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;package view&lt;br /&gt;{&lt;br /&gt;import flash.display.MovieClip;&lt;br /&gt;import flash.geom.Point;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* ...&lt;br /&gt;* @author ASD Eduardo Medina A.&lt;br /&gt;*/&lt;br /&gt;public class Lab01 extends MovieClip&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;public function Lab01()&lt;br /&gt;{&lt;br /&gt;init();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private function init():void&lt;br /&gt;{&lt;br /&gt;this.graphics.lineStyle(1, 0x00ff00);&lt;br /&gt;this.graphics.moveTo(200,150); //Centrarlo en el eje&lt;br /&gt;this.graphics.beginFill(0x00ff00, 1);&lt;br /&gt;&lt;br /&gt;this.graphics.lineTo(200 + coordenadas3d(0, 100, 0).x,&lt;br /&gt;150+coordenadas3d(0,100,0).y);&lt;br /&gt;this.graphics.lineTo(200 + coordenadas3d(100, 100, 0).x,&lt;br /&gt;150+coordenadas3d(100,100,0).y);&lt;br /&gt;this.graphics.lineTo(200 + coordenadas3d(100, 0, 0).x,&lt;br /&gt;150+coordenadas3d(100,0,0).y);&lt;br /&gt;this.graphics.lineTo(200 + coordenadas3d(0, 0, 0).x,&lt;br /&gt;150 + coordenadas3d(0, 0, 0).y);&lt;br /&gt;this.graphics.endFill();&lt;br /&gt;}&lt;br /&gt;public function coordenadas3d(_x:Number,_y:Number,_z:Number):Point&lt;br /&gt;{&lt;br /&gt;var p:Point = new Point();&lt;br /&gt;p.x = _y - _x*Math.cos((1/3)*Math.PI);&lt;br /&gt;p.y = _z + _x*Math.sin((1/3)*Math.PI);&lt;br /&gt;return p;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;2.- Paramétricas en 3d &lt;img src="http://www.cristalab.com/foros/images/smiles/icon_happy.gif" alt=":)" border="0" /&gt;&lt;/strong&gt;, se acuerdan... &lt;a class="arti_link" href="http://www.cristalab.com/tips/dibujar-curvas-parametricas-con-bitmapdata-en-actionscript-3-c69913l/"&gt;enlace&lt;/a&gt;&lt;br /&gt;Cono :&lt;br /&gt;&lt;object width="400" height="400"&gt;  &lt;param name="allowfullscreen" value="true"&gt;  &lt;param name="allowscriptaccess" value="always"&gt;  &lt;param name="movie" value="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d07.swf##"&gt;  &lt;embed src="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d07.swf##" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="400"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;private function mframe(e:Event):void&lt;br /&gt;{&lt;br /&gt;if (t &lt; 150)&lt;br /&gt;{&lt;br /&gt;var _x:Number = t*Math.cos(t);&lt;br /&gt;var _y:Number = t*Math.sin(t);&lt;br /&gt;var _z:Number = t;&lt;br /&gt;cont1.graphics.lineTo(200+coordenadas3d(_x, _y, _z).x, 150+coordenadas3d(_x, _y, _z).y);&lt;br /&gt;cont2.graphics.lineTo(200+coordenadas3d(_x,_y,_z).x, 150+coordenadas3d(_x, _y, -_z).y);&lt;br /&gt;&lt;br /&gt;t += 10*Math.PI/180;&lt;br /&gt;}else&lt;br /&gt;{&lt;br /&gt;this.removeEventListener(Event.ENTER_FRAME, mframe);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Esfera :&lt;br /&gt;&lt;object width="400" height="400"&gt;  &lt;param name="allowfullscreen" value="true"&gt;  &lt;param name="allowscriptaccess" value="always"&gt;  &lt;param name="movie" value="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d08.swf##"&gt;  &lt;embed src="http://www.cristalab.com/images/tips/actionscript_3/coordenadas-3d/coordenadas-3d08.swf##" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="400"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;private function mframe(e:Event):void&lt;br /&gt;{&lt;br /&gt;if (t &lt; 150)&lt;br /&gt;{&lt;br /&gt;var _x:Number = 100*Math.cos(u)*Math.cos(t);&lt;br /&gt;var _y:Number = 100*Math.sin(u)*Math.cos(t);&lt;br /&gt;var _z:Number = 100 * Math.sin(t);&lt;br /&gt;&lt;br /&gt;cont1.graphics.lineTo(200+coordenadas3d(_x, _y, _z).x, 150+coordenadas3d(_x, _y, _z).y);&lt;br /&gt;&lt;br /&gt;t += 16*Math.PI/180;&lt;br /&gt;u += Math.PI/180;&lt;br /&gt;}else&lt;br /&gt;{&lt;br /&gt;this.removeEventListener(Event.ENTER_FRAME, mframe);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;* Ojo aquí hay 2 variables.&lt;br /&gt;Y así como les dije en el tip anterior, las ecuaciones están ahí!!! pero ahora en 3D &lt;img src="http://www.cristalab.com/foros/images/smiles/icon_lol.gif" alt=":lol:" border="0" /&gt;&lt;br /&gt;Espero que les haya gustado &lt;img src="http://www.cristalab.com/foros/images/smiles/icon_happy.gif" alt=":)" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-424486175592028464?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/424486175592028464/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/04/crear-ambiente-3d-en-flash.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/424486175592028464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/424486175592028464'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/04/crear-ambiente-3d-en-flash.html' title='Crear ambiente 3D en Flash'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-951347964578799605</id><published>2009-04-22T10:24:00.000-07:00</published><updated>2009-04-22T10:25:13.933-07:00</updated><title type='text'>Reproductor de audio MP3 con AS3</title><content type='html'>&lt;p&gt; Este es un pequeño ejemplo de cómo reproducir &lt;strong&gt;archivos de sonido&lt;/strong&gt; en Flash o Flex con &lt;a class="arti_link" href="http://www.cristalab.com/tips/tags/actionscript_3"&gt;actionscript 3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Esta es la clase que crearemos:&lt;br /&gt;&lt;/p&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;package {&lt;br /&gt;   import flash.display.Sprite;&lt;br /&gt;   import flash.net.URLRequest;&lt;br /&gt;   import flash.media.Sound;&lt;br /&gt;   import flash.media.SoundLoaderContext;&lt;br /&gt;   //--------------------------&lt;br /&gt;   public class Sonido extends Sprite {     &lt;br /&gt;      private var so:Sound;&lt;br /&gt;      private var url:URLRequest;&lt;br /&gt;      private var buffer:SoundLoaderContext;&lt;br /&gt;      private var ini:Number;&lt;br /&gt;      private var loop:Number;&lt;br /&gt;      //----------------------&lt;br /&gt;      public function Sonido(qUrl:String, qBuffer:Number, qIni:Number, qLoop:Number) {&lt;br /&gt;         url = new URLRequest(qUrl);&lt;br /&gt;         buffer = new SoundLoaderContext(qBuffer*1000);&lt;br /&gt;         ini = qIni*1000;&lt;br /&gt;         loop = (qLoop &gt;= 0) ? qLoop : int.MAX_VALUE;&lt;br /&gt;         so = new Sound(url, buffer);&lt;br /&gt;         so.play(ini, loop);&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Debe ir en un archivo llamado "&lt;strong&gt;Sonido.as&lt;/strong&gt;", situado junto a nuestro archivo .FLA&lt;br /&gt;&lt;br /&gt;Para utilizarla colocaríamos en nuestra película flash:&lt;br /&gt;&lt;p class="datos_bloque"&gt;&lt;strong&gt;Código :&lt;/strong&gt;&lt;/p&gt; &lt;pre class="codigo"&gt;import Sonido;&lt;br /&gt;var so:Sonido = new Sonido("audio.mp3", 3, 0, -1);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Explicación del código:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;La clase contiene 5 variables privadas, 4 de las cuales debemos &lt;strong&gt;introducir como parámetro&lt;/strong&gt; a la hora de generar la instancia. Estas variables son:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;url&lt;/strong&gt;: ruta del archivo mp3&lt;br /&gt;&lt;strong&gt;buffer&lt;/strong&gt;: tiempo del archivo de audio que estará cargado en memoria antes de reproducirse.&lt;br /&gt;&lt;strong&gt;ini&lt;/strong&gt;: posición en la que se comenzará a reproducir el audio&lt;br /&gt;&lt;strong&gt;loop&lt;/strong&gt;: cantidad de veces que se repetirá el audio.&lt;br /&gt;&lt;br /&gt;No hay manera de asignar un loop que se repita continuamente, pero un truco para hacer esto sería colocar un número de repeticiones muy elevado, por eso este código:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;loop = (qLoop &gt;= 0) ? qLoop : int.MAX_VALUE;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Controla que el valor que le introducimos sea mayor que &lt;strong&gt;cero&lt;/strong&gt;. En caso de introducirle un valor negativo asignará el número de repeticiones al máximo posible en flash (&lt;strong&gt;int.MAX_VALUE&lt;/strong&gt;) osea 2147483647.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-951347964578799605?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/951347964578799605/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/04/reproductor-de-audio-mp3-con-as3.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/951347964578799605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/951347964578799605'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/04/reproductor-de-audio-mp3-con-as3.html' title='Reproductor de audio MP3 con AS3'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-8524737733881186105</id><published>2009-04-22T10:20:00.000-07:00</published><updated>2009-04-22T10:24:09.342-07:00</updated><title type='text'>Crear un juego de Pin Pong en Flash</title><content type='html'>&lt;p&gt;En este tutorial aprenderás a crear una Clase en Actionscript 3 que generará un juego de Pong totalmente adaptable.&lt;/p&gt;     &lt;p&gt;Abre un nuevo documento de Actionscript y guardalo como &lt;strong&gt;Pong.as&lt;/strong&gt;.&lt;/p&gt;     &lt;p class="tImagen"&gt;&lt;img src="http://www.cristalab.com/images/tutos/pong/ASF.gif" width="217" height="241" /&gt;&lt;/p&gt;     &lt;p&gt;Ahora comenzaremos a programar la Clase.&lt;/p&gt;     &lt;p&gt;Primero importamos los paquetes necesarios:&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw3"&gt;package&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt; &lt;span class="kw3"&gt;import flash.display.*&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import flash.ui.Mouse&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import flash.events.TimerEvent&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import flash.events.MouseEvent&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import flash.text.TextField&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import flash.text.TextFieldType&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import flash.text.TextFormat&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import flash.text.TextFieldAutoSize&lt;/span&gt;;&lt;br /&gt; &lt;span class="kw3"&gt;import flash.utils.Timer&lt;/span&gt;;&lt;/pre&gt;     &lt;p&gt;Para una descripción más detallada de lo que hace cada uno, puedes consultar la ayuda de Flash presionando F1.&lt;/p&gt;     &lt;p&gt;Ahora nombramos la Clase, que será heredada de la Clase &lt;strong&gt;MovieClip&lt;/strong&gt; para poder utilizar el método &lt;strong&gt;addChild()&lt;/strong&gt;.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw3"&gt;public &lt;/span&gt;&lt;span class="kw2"&gt;class&lt;/span&gt; Pong &lt;span class="kw3"&gt;extends MovieClip&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;{&lt;/pre&gt;     &lt;p&gt;Procedemos a escribir la función constructora de la clase, que será la encargada de todo el proceso del juego.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw3"&gt;public&lt;/span&gt; &lt;span class="kw2"&gt;function&lt;/span&gt; Pong(bgColor:&lt;span class="kw3"&gt;uint&lt;/span&gt; = 0x000000, playerColor:&lt;span class="kw3"&gt;uint&lt;/span&gt; = 0xFFFFFF, enemyColor:&lt;span class="kw3"&gt;uint&lt;/span&gt; = 0xFFFFFF, ballColor:&lt;span class="kw3"&gt;uint&lt;/span&gt; = 0xFFFFFF, middleLineColor:&lt;span class="kw3"&gt;uint&lt;/span&gt; = 0xFFFFFF, ballSpeed:&lt;span class="kw3"&gt;int&lt;/span&gt; = 2, scoreColor:&lt;span class="kw3"&gt;uint&lt;/span&gt; = 0xFFFFFF, msgColor:&lt;span class="kw3"&gt;uint&lt;/span&gt; = 0xFFFFFF, msg:&lt;span class="kw3"&gt;String&lt;/span&gt; = &lt;span class="st0"&gt;"Click here"&lt;/span&gt;, scoreFont:&lt;span class="kw3"&gt;String&lt;/span&gt; = &lt;span class="st0"&gt;"Arial"&lt;/span&gt;, scoreSize:&lt;span class="kw3"&gt;int&lt;/span&gt; = 30):&lt;span class="kw3"&gt;void&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;{&lt;/pre&gt;     &lt;p&gt;Como puedes observar se han colocado varios parametros, que a su vez, han sido declarados como predeterminados, a continuación explicaré cada uno de ellos.&lt;/p&gt;     &lt;p class="nota"&gt;Todos los valores &lt;strong&gt;uint&lt;/strong&gt;, son números Hexadecimales en formato &lt;strong&gt;0x&lt;/strong&gt;. Puedes utilizar cualquier color Hexadecimal.&lt;/p&gt;     &lt;ul&gt;&lt;li&gt;&lt;strong&gt;bgColor&lt;/strong&gt;: Color del MovieClip que servirá como fondo del stage.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;playerColor&lt;/strong&gt;: Color del jugador.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;enemyColor&lt;/strong&gt;: Color del oponente.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ballColor&lt;/strong&gt;: Color de la bola.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;middleLineColor&lt;/strong&gt;: Color de la linea que divide el stage.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ballSpeed&lt;/strong&gt;: Velocidad de la bola.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;scoreColor&lt;/strong&gt;: El color de los marcadores.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;msgColor&lt;/strong&gt;: Color del texto usado como mensaje para comenzar.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;msg&lt;/strong&gt;: Mensaje para comenzar.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;scoreFont&lt;/strong&gt;: La fuente que será utilizada en el marcador.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;scoreSize&lt;/strong&gt;: Tamaño de la fuente de los marcadores.&lt;/li&gt;&lt;/ul&gt;     &lt;p&gt;Ocultamos el &lt;strong&gt;Context Menu&lt;/strong&gt; y establecemos &lt;strong&gt;Constantes&lt;/strong&gt; del tamaño del stage.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw3"&gt;stage&lt;/span&gt;.&lt;span class="kw3"&gt;showDefaultContextMenu&lt;/span&gt; = &lt;span class="kw2"&gt;false&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&lt;span class="kw2"&gt;const&lt;/span&gt; STAGE_WIDTH:&lt;span class="kw3"&gt;int&lt;/span&gt; = &lt;span class="kw3"&gt;stage&lt;/span&gt;.&lt;span class="kw3"&gt;stageWidth&lt;/span&gt;;&lt;br /&gt;&lt;span class="kw2"&gt;const&lt;/span&gt; STAGE_HEIGHT:&lt;span class="kw3"&gt;int&lt;/span&gt; = &lt;span class="kw3"&gt;stage&lt;/span&gt;.&lt;span class="kw3"&gt;stageHeight&lt;/span&gt;;&lt;/pre&gt;     &lt;p&gt;Ahora creamos el Fondo.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; bg:&lt;span class="kw3"&gt;MovieClip&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;MovieClip&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;bg.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;beginFill&lt;/span&gt;(bgColor);&lt;br /&gt;bg.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;drawRect&lt;/span&gt;(0, 0, STAGE_WIDTH, STAGE_HEIGHT);&lt;br /&gt;bg.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;endFill&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;&lt;span class="kw3"&gt;addChild&lt;/span&gt;(bg);&lt;/pre&gt;     &lt;p&gt;Creamos el Jugador y al Oponente y los posicionamos.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; player:&lt;span class="kw3"&gt;MovieClip&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;MovieClip&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;player.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;beginFill&lt;/span&gt;(playerColor);&lt;br /&gt;player.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;drawRect&lt;/span&gt;(0, 0, 8, 50);&lt;br /&gt;player.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;endFill&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;player.&lt;span class="kw3"&gt;x&lt;/span&gt; = player.&lt;span class="kw3"&gt;width&lt;/span&gt;;&lt;br /&gt;player.&lt;span class="kw3"&gt;y&lt;/span&gt; = (STAGE_HEIGHT / 2) - (player.&lt;span class="kw3"&gt;height&lt;/span&gt; / 2);&lt;br /&gt; &lt;br /&gt;&lt;span class="kw3"&gt;addChild&lt;/span&gt;(player);&lt;/pre&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; enemy:&lt;span class="kw3"&gt;MovieClip&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;MovieClip&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;enemy.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;beginFill&lt;/span&gt;(enemyColor);&lt;br /&gt;enemy.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;drawRect&lt;/span&gt;(0, 0, 8, 50);&lt;br /&gt;enemy.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;endFill&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;enemy.&lt;span class="kw3"&gt;x&lt;/span&gt; = STAGE_WIDTH - enemy.&lt;span class="kw3"&gt;width&lt;/span&gt; * 2;&lt;br /&gt;enemy.&lt;span class="kw3"&gt;y&lt;/span&gt; = (STAGE_HEIGHT / 2) - (enemy.&lt;span class="kw3"&gt;height&lt;/span&gt; / 2);&lt;br /&gt; &lt;br /&gt;&lt;span class="kw3"&gt;addChild&lt;/span&gt;(enemy);&lt;/pre&gt;     &lt;p&gt;El siguiente código crea la bola y la posiciona.&lt;/p&gt;&lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; ball:&lt;span class="kw3"&gt;MovieClip&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;MovieClip&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;ball.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;beginFill&lt;/span&gt;(ballColor);&lt;br /&gt;ball.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;drawRect&lt;/span&gt;(0, 0, 10, 10);&lt;br /&gt;ball.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;endFill&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;ball.&lt;span class="kw3"&gt;x&lt;/span&gt; = STAGE_WIDTH / 2 - ball&lt;span class="kw3"&gt;.width&lt;/span&gt; / 2;&lt;br /&gt;ball.&lt;span class="kw3"&gt;y&lt;/span&gt; = STAGE_HEIGHT / 2 - ball.&lt;span class="kw3"&gt;height&lt;/span&gt; / 2;&lt;br /&gt; &lt;br /&gt;&lt;span class="kw3"&gt;addChild&lt;/span&gt;(ball);&lt;/pre&gt;     &lt;p&gt;Ahora creamos la linea que divide el stage.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; middleLine:&lt;span class="kw3"&gt;MovieClip&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;MovieClip&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;middleLine.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;lineStyle&lt;/span&gt;(2, middleLineColor);&lt;br /&gt;middleLine.&lt;span class="kw3"&gt;graphics&lt;/span&gt;.&lt;span class="kw3"&gt;lineTo&lt;/span&gt;(0, STAGE_HEIGHT);&lt;br /&gt; &lt;br /&gt;middleLine.&lt;span class="kw3"&gt;x&lt;/span&gt; = STAGE_WIDTH / 2;&lt;br /&gt;middleLine.&lt;span class="kw3"&gt;y&lt;/span&gt; = 0;&lt;br /&gt; &lt;br /&gt;&lt;span class="kw3"&gt;addChild&lt;/span&gt;(middleLine);&lt;/pre&gt;     &lt;p&gt;Creamos una función que será ejecutada por un Evento Timer, ésta se encargará de que el Jugador sea manejado con el Mouse, además de establecer hasta donde se puede mover.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;function&lt;/span&gt; playerMovement(&lt;span class="kw3"&gt;event&lt;/span&gt;:&lt;span class="kw3"&gt;TimerEvent&lt;/span&gt;):&lt;span class="kw3"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;   player.&lt;span class="kw3"&gt;y&lt;/span&gt; = &lt;span class="kw3"&gt;mouseY&lt;/span&gt; - player.&lt;span class="kw3"&gt;height&lt;/span&gt; / 2;&lt;br /&gt;  &lt;br /&gt;&lt;span class="kw2"&gt;     if&lt;/span&gt;(player.&lt;span class="kw3"&gt;y&lt;/span&gt; &gt;= STAGE_HEIGHT - player.&lt;span class="kw3"&gt;height&lt;/span&gt;)&lt;br /&gt;   {&lt;br /&gt;       player.&lt;span class="kw3"&gt;y&lt;/span&gt; = STAGE_HEIGHT - player.&lt;span class="kw3"&gt;height&lt;/span&gt;;&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;&lt;span class="kw2"&gt;     if&lt;/span&gt;(player.&lt;span class="kw3"&gt;y&lt;/span&gt; &lt;= 0)     {         player.&lt;span class="kw3"&gt;y&lt;/span&gt; = 0;&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;     &lt;p&gt;La función siguiente  se encarga de manejar al Oponente, también establece hasta donde se puede mover.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;function&lt;/span&gt; enemyAI(&lt;span class="kw3"&gt;event&lt;/span&gt;:&lt;span class="kw3"&gt;TimerEvent&lt;/span&gt;):&lt;span class="kw3"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;   enemy.&lt;span class="kw3"&gt;y&lt;/span&gt; = ball.&lt;span class="kw3"&gt;y&lt;/span&gt; - enemy.&lt;span class="kw3"&gt;height&lt;/span&gt; / 2;&lt;br /&gt;  &lt;br /&gt;   &lt;span class="kw2"&gt;if&lt;/span&gt;(enemy.&lt;span class="kw3"&gt;y&lt;/span&gt; &gt;= STAGE_HEIGHT - enemy.&lt;span class="kw3"&gt;height&lt;/span&gt;)&lt;br /&gt;   {&lt;br /&gt;       enemy.&lt;span class="kw3"&gt;y&lt;/span&gt; = STAGE_HEIGHT - enemy.&lt;span class="kw3"&gt;height&lt;/span&gt;;&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   &lt;span class="kw2"&gt;if&lt;/span&gt;(enemy.&lt;span class="kw3"&gt;y&lt;/span&gt; &lt;= 0)     {         enemy.&lt;span class="kw3"&gt;y&lt;/span&gt; = 0;&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;     &lt;p&gt;Ahora creamos el código que manejará la Bola que será explicado con comentarios para una mejor comprensión.&lt;/p&gt;     &lt;pre class="codigo"&gt;ball.speed = ballSpeed; &lt;span class="sComentario"&gt;//Se establece la velocidad, tomada del Parámetro ballSpeed.&lt;/span&gt;&lt;br /&gt;ball.dir = 0; &lt;span class="sComentario"&gt;//Se crea una variable que manejara la dirección de la Bola.&lt;/span&gt;&lt;br /&gt;player.score = 0; &lt;span class="sComentario"&gt;//Estos son los marcadores al iniciar.&lt;/span&gt;&lt;br /&gt;enemy.score = 0;&lt;br /&gt; &lt;br /&gt;&lt;span class="kw2"&gt;function&lt;/span&gt; ballMovement(&lt;span class="kw3"&gt;event&lt;/span&gt;:&lt;span class="kw3"&gt;TimerEvent&lt;/span&gt;):&lt;span class="kw3"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kw2"&gt;if&lt;/span&gt;(playin&lt;span class="sComentario"&gt;) //Se checa si el juego ha comenzado, esta variable será creada más adelante.&lt;/span&gt;&lt;br /&gt;   {&lt;br /&gt;       ball.&lt;span class="kw3"&gt;x&lt;/span&gt; -= ball.speed; &lt;span class="sComentario"&gt;//Estos códigos mueven la Bola.&lt;/span&gt;&lt;br /&gt;       ball.&lt;span class="kw3"&gt;y&lt;/span&gt; -= ball.dir;&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   &lt;span class="kw2"&gt;if&lt;/span&gt;(ball.&lt;span class="kw3"&gt;x&lt;/span&gt; &lt;= player.&lt;span class="kw3"&gt;x&lt;/span&gt;&lt;span class="sComentario"&gt;) //Si la Bola pasa por detras del Jugador    &lt;/span&gt;                       &lt;br /&gt;   {                    &lt;span class="sComentario"&gt;  //o del Oponente, re reinicia la Bola.&lt;/span&gt;&lt;br /&gt;       enemy.score++;&lt;br /&gt;       restart();&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   &lt;span class="kw2"&gt;if&lt;/span&gt;(ball.&lt;span class="kw3"&gt;x&lt;/span&gt; &gt;= enemy.&lt;span class="kw3"&gt;x&lt;/span&gt;)&lt;br /&gt;   {&lt;br /&gt;       player.score++;&lt;br /&gt;       restart();&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   &lt;span class="kw2"&gt;if&lt;/span&gt;(ball.&lt;span class="kw3"&gt;y&lt;/span&gt; &gt; (STAGE_HEIGHT - ball.&lt;span class="kw3"&gt;height&lt;/span&gt; / 2)&lt;span class="sComentario"&gt;) //Estos códigos se encargan de hacer rebotar la Bola.&lt;/span&gt;&lt;br /&gt;   {&lt;br /&gt;       ball.dir *= -1;&lt;br /&gt;   }&lt;br /&gt;  &lt;br /&gt;   &lt;span class="kw2"&gt;if&lt;/span&gt;(ball.&lt;span class="kw3"&gt;y&lt;/span&gt; &lt; class="kw3"&gt;height / 2)&lt;br /&gt;   {&lt;br /&gt;       ball.dir *= -1;&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;     &lt;p&gt;Ahora checamos las colisiones, si la Bola colisiona con el Jugador o el Oponente, la velocidad será invertida para dirigirse hacia el lado contrario, y la dirección se generará aleatoriamente, si el número generado es positivo la dirección será hacia abajo y si es negativo hacia arriba.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;function&lt;/span&gt; checkHit(&lt;span class="kw3"&gt;event&lt;/span&gt;:&lt;span class="kw3"&gt;TimerEvent&lt;/span&gt;):&lt;span class="kw3"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kw2"&gt;if&lt;/span&gt;(ball.&lt;span class="kw3"&gt;hitTestObject&lt;/span&gt;(player) || ball.&lt;span class="kw3"&gt;hitTestObject&lt;/span&gt;(enemy))&lt;br /&gt;   {&lt;br /&gt;       ball.speed *= -1;&lt;br /&gt;       ball.dir =&lt;span class="kw3"&gt; (Math&lt;/span&gt;.&lt;span class="kw3"&gt;random&lt;/span&gt;() * 1) + (&lt;span class="kw3"&gt;Math&lt;/span&gt;.&lt;span class="kw3"&gt;random&lt;/span&gt;() * -1);&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;     &lt;p&gt;El siguiente código crea los Marcadores y los posiciona, además de crear la función que se encargará de actualizarlos.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; scoreFormat:&lt;span class="kw3"&gt;TextFormat&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;TextFormat&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;scoreFormat.&lt;span class="kw3"&gt;color&lt;/span&gt; = scoreColor;&lt;br /&gt;scoreFormat.&lt;span class="kw3"&gt;font&lt;/span&gt; = scoreFont;&lt;br /&gt;scoreFormat.&lt;span class="kw3"&gt;size&lt;/span&gt; = scoreSize;&lt;br /&gt; &lt;br /&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; playerScore:&lt;span class="kw3"&gt;TextField&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;TextField&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;playerScore.&lt;span class="kw3"&gt;autoSize&lt;/span&gt; = &lt;span class="kw3"&gt;TextFieldAutoSize&lt;/span&gt;.&lt;span class="kw3"&gt;CENTER&lt;/span&gt;;&lt;br /&gt;playerScore.&lt;span class="kw3"&gt;x&lt;/span&gt; = STAGE_WIDTH / 4;&lt;br /&gt;playerScore.&lt;span class="kw3"&gt;y&lt;/span&gt; = STAGE_HEIGHT / 10;&lt;br /&gt;playerScore.&lt;span class="kw3"&gt;selectable&lt;/span&gt; = &lt;span class="kw2"&gt;false&lt;/span&gt;;&lt;br /&gt;playerScore.d&lt;span class="kw3"&gt;efaultTextFormat&lt;/span&gt; = scoreFormat;&lt;br /&gt;playerScore.&lt;span class="kw3"&gt;type&lt;/span&gt; = &lt;span class="kw3"&gt;TextFieldType&lt;/span&gt;.&lt;span class="kw3"&gt;DYNAMIC&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&lt;span class="kw3"&gt;addChild&lt;/span&gt;(playerScore);&lt;br /&gt; &lt;br /&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; enemyScore:&lt;span class="kw3"&gt;TextField&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;TextField&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;enemyScore.&lt;span class="kw3"&gt;autoSize&lt;/span&gt; = &lt;span class="kw3"&gt;&lt;/span&gt;&lt;span class="kw3"&gt;TextFieldAutoSize&lt;/span&gt;.&lt;span class="kw3"&gt;CENTER&lt;/span&gt;;&lt;br /&gt;enemyScore.&lt;span class="kw3"&gt;x&lt;/span&gt; = (STAGE_WIDTH) - (STAGE_WIDTH / 4)&lt;br /&gt;enemyScore.&lt;span class="kw3"&gt;y&lt;/span&gt; = STAGE_HEIGHT / 10;&lt;br /&gt;enemyScore.&lt;span class="kw3"&gt;selectable&lt;/span&gt; = &lt;span class="kw2"&gt;false&lt;/span&gt;;&lt;br /&gt;enemyScore.&lt;span class="kw3"&gt;defaultTextFormat&lt;/span&gt; = scoreFormat;&lt;br /&gt;enemyScore.&lt;span class="kw3"&gt;type&lt;/span&gt; = &lt;span class="kw3"&gt;TextFieldType&lt;/span&gt;.&lt;span class="kw3"&gt;DYNAMIC&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&lt;span class="kw3"&gt;addChild&lt;/span&gt;(enemyScore);&lt;br /&gt; &lt;br /&gt;&lt;span class="kw2"&gt;function&lt;/span&gt; scoreHandler(&lt;span class="kw3"&gt;event&lt;/span&gt;:&lt;span class="kw3"&gt;TimerEvent&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;   playerScore.&lt;span class="kw3"&gt;text&lt;/span&gt; = player.score;&lt;br /&gt;   enemyScore.&lt;span class="kw3"&gt;text&lt;/span&gt; = enemy.score;&lt;br /&gt;}&lt;/pre&gt;     &lt;p&gt;Creamos el mensaje para comenzar, la variable que nos indicará si el juego ha comenzado y la función que se encargará de ocultar el Mouse, iniciar el Timer y borrar el mensaje de inicio.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; startMsg:&lt;span class="kw3"&gt;TextField&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;TextField&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; startFormat:&lt;span class="kw3"&gt;TextFormat&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;TextFormat&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt;startFormat.&lt;span class="kw3"&gt;color&lt;/span&gt; = msgColor;&lt;br /&gt;startFormat.&lt;span class="kw3"&gt;bold&lt;/span&gt; = &lt;span class="kw2"&gt;true&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;startMsg.&lt;span class="kw3"&gt;x&lt;/span&gt; = 0;&lt;br /&gt;startMsg.&lt;span class="kw3"&gt;y&lt;/span&gt; = (STAGE_HEIGHT) - (STAGE_HEIGHT / 12);&lt;br /&gt;startMsg.&lt;span class="kw3"&gt;selectable&lt;/span&gt; = &lt;span class="kw2"&gt;false&lt;/span&gt;;&lt;br /&gt;startMsg.&lt;span class="kw3"&gt;type&lt;/span&gt; = &lt;span class="kw3"&gt;TextFieldType&lt;/span&gt;.&lt;span class="kw3"&gt;DYNAMIC&lt;/span&gt;;&lt;br /&gt;startMsg.&lt;span class="kw3"&gt;defaultTextFormat&lt;/span&gt; = startFormat;&lt;br /&gt;startMsg.&lt;span class="kw3"&gt;text&lt;/span&gt; = msg;&lt;br /&gt; &lt;br /&gt;&lt;span class="kw3"&gt;addChild&lt;/span&gt;(startMsg);&lt;br /&gt; &lt;br /&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; playin:&lt;span class="kw3"&gt;Boolean&lt;/span&gt; = &lt;span class="kw2"&gt;false&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&lt;span class="kw2"&gt;function&lt;/span&gt; startHandler(&lt;span class="kw3"&gt;event&lt;/span&gt;:&lt;span class="kw3"&gt;MouseEvent&lt;/span&gt;):&lt;span class="kw3"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span class="kw3"&gt;     Mouse&lt;/span&gt;.&lt;span class="kw3"&gt;hide&lt;/span&gt;();&lt;br /&gt;   playin = &lt;span class="kw2"&gt;true&lt;/span&gt;;&lt;br /&gt;   timer.&lt;span class="kw3"&gt;start&lt;/span&gt;();&lt;br /&gt;   startMsg.&lt;span class="kw3"&gt;text&lt;/span&gt; = &lt;span class="st0"&gt;""&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;     &lt;p&gt;Ahora creamos la función de reinicio que se encargará de reestablecer valores cuando el Marcador se actualize.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw2"&gt;function&lt;/span&gt; restart():&lt;span class="kw3"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;   ball.&lt;span class="kw3"&gt;x&lt;/span&gt; = STAGE_WIDTH / 2 - ball.&lt;span class="kw3"&gt;width&lt;/span&gt; / 2;&lt;br /&gt;   ball.&lt;span class="kw3"&gt;y&lt;/span&gt; = STAGE_HEIGHT / 2 - ball.&lt;span class="kw3"&gt;height&lt;/span&gt; / 2;&lt;br /&gt;  &lt;br /&gt;   ball.speed = ballSpeed;&lt;br /&gt;   ball.dir = 0;&lt;br /&gt;}&lt;/pre&gt;     &lt;p&gt;Por último, creamos el objeto Timer y añadimos los Listeners.&lt;/p&gt;     &lt;pre class="codigo"&gt;&lt;span class="kw3"&gt;stage&lt;/span&gt;.&lt;span class="kw3"&gt;addEventListener&lt;/span&gt;(&lt;span class="kw3"&gt;MouseEvent&lt;/span&gt;.&lt;span class="kw3"&gt;CLICK&lt;/span&gt;, startHandler);&lt;br /&gt; &lt;br /&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; timer:&lt;span class="kw3"&gt;Timer&lt;/span&gt; = &lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;Timer&lt;/span&gt;(1, 0);&lt;br /&gt; &lt;br /&gt;timer.&lt;span class="kw3"&gt;addEventListener&lt;/span&gt;(&lt;span class="kw3"&gt;TimerEvent&lt;/span&gt;.&lt;span class="kw3"&gt;TIMER&lt;/span&gt;, playerMovement);&lt;br /&gt;timer.&lt;span class="kw3"&gt;addEventListener&lt;/span&gt;(&lt;span class="kw3"&gt;TimerEvent&lt;/span&gt;.&lt;span class="kw3"&gt;TIMER&lt;/span&gt;, enemyAI);&lt;br /&gt;timer.&lt;span class="kw3"&gt;addEventListener&lt;/span&gt;(&lt;span class="kw3"&gt;TimerEvent&lt;/span&gt;.&lt;span class="kw3"&gt;TIMER&lt;/span&gt;, ballMovement);&lt;br /&gt;timer.&lt;span class="kw3"&gt;addEventListener&lt;/span&gt;(&lt;span class="kw3"&gt;TimerEvent&lt;/span&gt;.&lt;span class="kw3"&gt;TIMER&lt;/span&gt;, checkHit);&lt;br /&gt;timer.&lt;span class="kw3"&gt;addEventListener&lt;/span&gt;(&lt;span class="kw3"&gt;TimerEvent&lt;/span&gt;.&lt;span class="kw3"&gt;TIMER&lt;/span&gt;, scoreHandler);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;     &lt;p class="nota"&gt;La Clase &lt;strong&gt;debe&lt;/strong&gt; ser llamada por medio del cuadro de texto &lt;strong&gt;Document Class&lt;/strong&gt; en el &lt;strong&gt;Panel de Propiedades&lt;/strong&gt; de Flash, ya que el objeto &lt;strong&gt;stage&lt;/strong&gt; no permite el uso de &lt;strong&gt;import&lt;/strong&gt; en una Clase de este tipo.&lt;br /&gt;     Para modificar los Parámetros lo puedes hacer directamente desde la Clase.&lt;/p&gt;     &lt;p&gt;Recuerda que el stage puede ser de cualquier tamaño, la Clase ajustará automáticamente los elementos.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-8524737733881186105?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/8524737733881186105/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/04/en-este-tutorial-aprenderas-crear-una.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/8524737733881186105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/8524737733881186105'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/04/en-este-tutorial-aprenderas-crear-una.html' title='Crear un juego de Pin Pong en Flash'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-3152577767563189201</id><published>2009-01-29T17:03:00.000-08:00</published><updated>2009-01-29T17:22:18.038-08:00</updated><title type='text'>Tomemos un Break !! :  Videos motivadores y el secreto</title><content type='html'>Bueno , como no todo en la vida es programacion y codigo y mas codigos !! . solo para dejarles un pequeño respiro en este blog , les dejo estos links a videos motivadores , es realmente importante nunca perder la vision en tus metas. Esto es un aporte de Walter Eduardo Teran (mi hermano).  Alli les va :&lt;br /&gt;&lt;br /&gt;Nada es imposible Adidas&lt;span style="color: rgb(255, 0, 0);"&gt;(Este comercial se los dedico tios) &lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=CTsQPO3vtFc" target="_blank"&gt;http://www.youtube.com/watch?v=CTsQPO3vtFc&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;vencer los miedos Saga&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=qTSYqRmxQaA" target="_blank"&gt;http://www.youtube.com/watch?v=qTSYqRmxQaA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Quiero ser humano JOhnnie walker&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=VvBRsCQtbNg" target="_blank"&gt;http://www.youtube.com/watch?v=VvBRsCQtbNg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Black Label Japones JOhnnie walker (El mensaje es interesante)&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=LEateooc3Ns" target="_blank"&gt;http://www.youtube.com/watch?v=LEateooc3Ns&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hombres inmortales JOhnnie Walker&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=qaXOfGIa5D0" target="_blank"&gt;http://www.youtube.com/watch?v=qaXOfGIa5D0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Persigue tu sueño JOhnnie Walker&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=6tZTojhZJ98" target="_blank"&gt;http://www.youtube.com/watch?v=6tZTojhZJ98&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Video corporativo JOhnnie Walker&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=fWJBbAoC7LA" target="_blank"&gt;http://www.youtube.com/watch?v=fWJBbAoC7LA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Opinar en la reunion UPC&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=qTQQN9e4bRY" target="_blank"&gt;http://www.youtube.com/watch?v=qTQQN9e4bRY&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;vida de Alejandro Toledo&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=8asRG3fekRE" target="_blank"&gt;http://www.youtube.com/watch?v=8asRG3fekRE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Afirmaciones diarias de el secreto (&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;No se olviden que son Diarias&lt;/span&gt;&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=tjb3uXHQ528&amp;amp;feature=related" target="_blank"&gt;http://www.youtube.com/watch?v=tjb3uXHQ528&amp;amp;feature=related&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;y por ultimo este es nuestros video tios VEANLO ATENTAMENTE ...&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://www.youtube.com/watch?v=4hdpkk-6IUw" target="_blank"&gt;http://www.youtube.com/watch?v=4hdpkk-6IUw&lt;br /&gt;&lt;/a&gt;&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Atte&lt;br /&gt;&lt;/span&gt;Walter Terán Chiriboga&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-3152577767563189201?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/3152577767563189201/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/01/tomemos-un-break-videos-motivadores-y.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/3152577767563189201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/3152577767563189201'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/01/tomemos-un-break-videos-motivadores-y.html' title='Tomemos un Break !! :  Videos motivadores y el secreto'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-1032618662893811649</id><published>2009-01-27T15:12:00.000-08:00</published><updated>2009-01-28T13:12:15.204-08:00</updated><title type='text'>Como colgar un SWF de tu PC a tu Blog</title><content type='html'>Leyendo el blog de mi &lt;a href="http://vichoz-bichitoz.blogspot.com/"&gt;pata David&lt;/a&gt; se me ocurrio la idea de hacer este post , ya que es un tema que se discute tambien en muchos foros y comunidades , muchas veces con respuestas no del todo acertadas o intermedias , yo propongo la siguiente solucion general :&lt;br /&gt;&lt;br /&gt;Bueno en primer lugar necestias -&gt; Un hosting gratuito y que te asegure que tu SWF permanecera alli sin ningun tipo de incoveniente&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img7.xooimage.com/fr/"&gt; Aqui cuelga tus FLASH &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una vez que colgaste tu Flash alli ( es lo mas facil del mundo como te has dado cuenta) te generara una URL , apunta esa URL , y luego añade este codigo en tu entrada de blog para embeber tu flash  ,esto es un aporte de nuestro amigo David :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;center&amp;gt;&amp;lt;object width="420" height="320"&amp;gt;&lt;br /&gt;&amp;lt;embed width="800" src="&lt;b&gt;AQUI_TU_URL&lt;/b&gt;" height="200"/&amp;gt;&lt;br /&gt;&amp;lt;/embed&gt;&amp;lt;/object&amp;gt;&amp;lt;/center&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Las etiquetas object y embed garantizan la compatibilidad con IE y Firefox , asi tu Flash se visualuzara sin problemas en los dos navegadores mas famosos e utilizados del mundo.&lt;br /&gt;&lt;br /&gt;El tamaño original del archivo puede conocerse a través de cualquier programa reproductor externo (yo utilizo Swiff Player), capturando la pantalla y "midiéndolo", o leyendo el código fuente de la página OK?.&lt;br /&gt;&lt;br /&gt;Hasta la prox Flasheros !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-1032618662893811649?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/1032618662893811649/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/01/como-colgar-un-swf-de-tu-pc-tu-blog.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/1032618662893811649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/1032618662893811649'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/01/como-colgar-un-swf-de-tu-pc-tu-blog.html' title='Como colgar un SWF de tu PC a tu Blog'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-5519434653581107245</id><published>2009-01-23T02:12:00.001-08:00</published><updated>2009-01-23T21:12:02.324-08:00</updated><title type='text'>Animacion con AS3 : El efecto nieve en Flash</title><content type='html'>&lt;span style="font-weight: bold;"&gt;By Naret&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vamos a crear un efecto nieve que nos sera util para diversas aplicaciones ya sea para un nivel particular de nuestro juego o una simple animacion navideña  , por supuesto, utilizando  ActionScript 3.  Veamos el ejemplo :&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" width="500" height="350"&gt;&lt;br /&gt;&lt;param name="movie" value="http://www.cristalab.com/images/tips/actionscript_3/nevando/Nevando.swf"&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" width="500" height="350"&gt;&lt;embed src="http://www.cristalab.com/images/tips/actionscript_3/nevando/Nevando.swf" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="500" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;- Crea un nuevo documento preferiblemente de color oscuro y digita el siguiente codigo en el primer fotograma :&lt;br /&gt;&lt;br /&gt;&lt;pre class="codigo"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;// Tamaños pantalla&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var width2 = stage.stageWidth;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var height2 =  stage.stageHeight;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;// Máximo tamaño copos y cantidad&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var max_tamaño = 10;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var copos = 100;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;function init ()  {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   for (var i:Number=0; i&amp;lt;copos; i++) {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      var t:snow=new snow();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      addChild(t);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      t.alpha = 0.2+Math.random()*0.6;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      t.x = -(width2/2)+Math.random()*(1.5*width2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      t.y = -(height2/2)+Math.random()*(1.5*height2);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      t.scaleX = t.scaleY=0.5+Math.random()*(max_tamaño*0.1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      t.k = 1+Math.random()*2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      t.viento = -1.5+Math.random()*(1.4*3);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      t.addEventListener(Event.ENTER_FRAME, mover);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;function mover(e:*){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   e.target.y  += e.target.k;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   e.target.x += e.target.viento;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   if (e.target.y&amp;gt;height2+10) {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      e.target.y = -20;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   } &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   if (e.target.x&amp;gt;width2+20)  {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      e.target.x = -(width2/2)+Math.random()*(1.5*width2);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      e.target.y = -20;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   else  if (e.target.x&amp;lt;-20)  {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      e.target.x = -(width2/2)+Math.random()*(1.5*width2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      e.target.y = -20;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;init();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para que funcione crea un Movie Clip , que sea un punto blanco difuminado (Blur)&lt;br /&gt;o un circulo que tenga un degradado radial de blanco al centro y transparente alrededor,&lt;br /&gt;para que represente nuestro copo de nieve. Luego en la Biblioteca , le das clic&lt;br /&gt;derecho al Movie Clip , seleccionas Vincular (Linkage) y en Clases(Class) , escribe&lt;br /&gt;snow.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uyR68LVi3E0/SXqi_kBHpsI/AAAAAAAAAfQ/XsLSJSgyq5I/s1600-h/nieve.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 169px;" src="http://2.bp.blogspot.com/_uyR68LVi3E0/SXqi_kBHpsI/AAAAAAAAAfQ/XsLSJSgyq5I/s320/nieve.bmp" alt="" id="BLOGGER_PHOTO_ID_5294723524811269826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-5519434653581107245?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/5519434653581107245/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/01/animacion-con-as3-el-efecto-nieve-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/5519434653581107245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/5519434653581107245'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/01/animacion-con-as3-el-efecto-nieve-en.html' title='Animacion con AS3 : El efecto nieve en Flash'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uyR68LVi3E0/SXqi_kBHpsI/AAAAAAAAAfQ/XsLSJSgyq5I/s72-c/nieve.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-7283314797669946499</id><published>2009-01-16T21:26:00.000-08:00</published><updated>2009-01-20T02:14:37.782-08:00</updated><title type='text'>Una pelota rebotando en la habitacion : Introduccion a ActionScript 3</title><content type='html'>Hola amigos soy Naret.  Aunque las cosas no me han salido bien este dia (especialmente por una chica por ahi )  en esta oportunidad , sin embargo , estoy de muchas ganas de mostrarles una interesante introduccion al AS3 y que mejor que Aprender-Haciendolo. Lo que intentaremos realizar es una pelotita con movimiento real , la cual controlaremos mediante las flechas del teclado dandole impulsos a nuestro antojo. Aparte de moverse  , podra tambien rebotar en las paredes de la habitacion cerrada y paulatinamente ira disminuyendo su velocidad debido a la perdida de energia durante los choques hasta detener totalemente su movimiento mecanico ,  a menos que actue una fuerza externa que lo impulse nuevamente. Nos debe quedar algo asi :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;NOTA IMPORTANTE : Hazle click al Flash para&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; e&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;mpezar a controlarlo con el teclado.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" width="500" height="350"&gt;&lt;br /&gt;&lt;param name="movie" value="http://img7.xooimage.com/files/4/0/d/gravedad-a2cdf1.swf"&gt;&lt;br /&gt;&lt;param name="quality" value="high"&gt;&lt;/object&gt;&lt;br /&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" width="500" height="350"&gt;&lt;embed src="http://img7.xooimage.com/files/4/0/d/gravedad-a2cdf1.swf" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="500" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Veamos como hacerlo :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Sistema de coordenadas en Flash :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En Flash , asi como en la mayoria de programas de computadora , se utiliza siempre un sistema de coordenadas cartesiano para posicionar puntos o elementos en la pantalla. Flash no podia ser la excepcion :  El origen (O) se toma desde la esquina superior izquierda del lienzo , las coordenadas Y aumentan hacia abajo y las coordenadas X aumenta hacia la derecha , siendo todas positivas en el cuadrante que determinan los ejes principales.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uyR68LVi3E0/SXGB9t4KLYI/AAAAAAAAAYg/k6-eIl9WrvY/s1600-h/coord2.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 255px; height: 207px;" src="http://4.bp.blogspot.com/_uyR68LVi3E0/SXGB9t4KLYI/AAAAAAAAAYg/k6-eIl9WrvY/s320/coord2.GIF" alt="" id="BLOGGER_PHOTO_ID_5292153934424190338" border="0" /&gt;&lt;/a&gt;Observa el grafico , cualquier punto &lt;span style="font-weight: bold;"&gt;P&lt;/span&gt; posicionado en el cuadrante principal cumple que &lt;span style="font-weight: bold;"&gt;x&lt;/span&gt;&gt;0 ,&lt;span style="font-weight: bold;"&gt; y&lt;/span&gt;&gt;0 ( coordenadas positivas) , de esto se infiere que las coordenadas Y aumentan de arriba hacia abajo y las X de izquierda a derecha , como ya lo mencionamos anteriormente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2.  Modelo fisico: Pelota + Habitacion.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Identifiquemos a continuacion las variables y elementos involucrados en nuestro sistema ( Pelota + Habitacion ) :&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uyR68LVi3E0/SXGKVdbyNEI/AAAAAAAAAYw/Ob-CMj5aqLA/s1600-h/plano.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 269px;" src="http://3.bp.blogspot.com/_uyR68LVi3E0/SXGKVdbyNEI/AAAAAAAAAYw/Ob-CMj5aqLA/s400/plano.GIF" alt="" id="BLOGGER_PHOTO_ID_5292163138420094018" border="0" /&gt;&lt;/a&gt;- Las dimensiones de nuestra habitacion seran las dimensiones del documento Flash ( 550px de ancho por 400px de alto)&lt;br /&gt;- Al establecer margenes para nuestra habitacion la pelota ve limitado su movimiento solo al interior de esta. Por lo tanto si identificamos a &lt;span style="font-weight: bold;"&gt;P(x,y)&lt;/span&gt; como la posicion de la pelota para cualquier instante de tiempo , la coordenada &lt;span style="font-weight: bold;"&gt;X&lt;/span&gt; solo podra tomar valores desde   0&lt;x&gt; a 550 y la coordenada &lt;span style="font-weight: bold;"&gt;Y&lt;/span&gt; de 0 a 400 , esta condicion &lt;/x&gt;&lt;x&gt;garantiza que la pelot&lt;/x&gt;&lt;x&gt;a s&lt;/x&gt;&lt;x&gt;iempre este dentro de la habitacion y nunca fuera de ella.&lt;br /&gt;&lt;/x&gt;&lt;br /&gt;&lt;x&gt;&lt;span style="font-weight: bold;"&gt;3.- Dejando todo listo antes de comenzar.&lt;/span&gt;&lt;/x&gt;&lt;br /&gt;&lt;br /&gt;&lt;x&gt;&lt;span&gt;Primero que nada , vamos a crear un documento nuevo en Flash , este debe ser un documento de cualq&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;uier medida , ya que escribiremos el codigo AS3 de tal &lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;forma&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt; que se adapte a cualquier tamaño de habitacion.  En este caso yo eligire 550 &lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;px de &lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;anch&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;o y 450 px de altura. Fijate tambien de que &lt;span style="font-weight: bold;"&gt;en la seccion&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Velocidad de fotogramas dice 12fps , para obtener mayor fluidez y performance en nuestra aplicacion vamos a colocarle en este caso 30fps&lt;/span&gt; , no niego que con 12fps tambien funciona pero me parece que el movimiento es algo brusco.&lt;br /&gt;&lt;/span&gt;&lt;/x&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uyR68LVi3E0/SXIg4e3FUNI/AAAAAAAAAY4/O-L4rY9-iDY/s1600-h/propiedades3.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 269px;" src="http://3.bp.blogspot.com/_uyR68LVi3E0/SXIg4e3FUNI/AAAAAAAAAY4/O-L4rY9-iDY/s320/propiedades3.bmp" alt="" id="BLOGGER_PHOTO_ID_5292328666842616018" border="0" /&gt;&lt;/a&gt;Luego , por cuestiones de orden y elegancia , crearemos 3 capas en nuestra linea de tiempo principal. La primera la llamaremos "Script" , la segunda sera : "Pelota" , y la tercera y ultima "Fondo" apiladas del modo que puedes ver en la imagen de abajo :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uyR68LVi3E0/SXIiIKkGlPI/AAAAAAAAAZA/lG-G0S59rvE/s1600-h/script.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 270px; height: 207px;" src="http://3.bp.blogspot.com/_uyR68LVi3E0/SXIiIKkGlPI/AAAAAAAAAZA/lG-G0S59rvE/s320/script.bmp" alt="" id="BLOGGER_PHOTO_ID_5292330035783832818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En la capa fondo , crea un rectagunlo con degradado y borde grueso , este rectangulo debe calzar en todo el documento completo. En la capa Pelota diseña una pelotita con la herramienta circulo , asignale un relleno y convierte eso en un Clip de pelicula ponle el nombre de &lt;span style="font-weight: bold;"&gt;"Circulo"&lt;/span&gt; luego de esto. Dale un nombre de identificador a la pelotita para poder  controlarla desde AS3 , para ello , abre el panel de propiedades (Vetanas&gt;Propiedades), Y asegurandote de que la pelota este seleccionada , asignale un nombre de instancia : &lt;span style="font-weight: bold;"&gt;"pelota"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uyR68LVi3E0/SXIkSIKgMsI/AAAAAAAAAZI/WYEvy0Pb-_U/s1600-h/instancia.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 114px;" src="http://1.bp.blogspot.com/_uyR68LVi3E0/SXIkSIKgMsI/AAAAAAAAAZI/WYEvy0Pb-_U/s320/instancia.bmp" alt="" id="BLOGGER_PHOTO_ID_5292332405961536194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Haz lo mismo tambien con el rectangulo que creaste de fondo conviertelo en un Clip de pelicula llamado &lt;span style="font-weight: bold;"&gt;"Fondo"&lt;/span&gt; y dale un nombre de instancia :&lt;span style="font-weight: bold;"&gt; "marco" &lt;/span&gt;( asignarle un nombre de instancia a nuestra habitacion nos permitira controlarla para que funcione con cualquier tamaño).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uyR68LVi3E0/SXWixwWSkKI/AAAAAAAAAao/hhSV7eB8Fgk/s1600-h/marco.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 134px;" src="http://1.bp.blogspot.com/_uyR68LVi3E0/SXWixwWSkKI/AAAAAAAAAao/hhSV7eB8Fgk/s320/marco.bmp" alt="" id="BLOGGER_PHOTO_ID_5293315912719569058" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uyR68LVi3E0/SXIyWGjjuqI/AAAAAAAAAZw/a_Aaz5zQLo0/s1600-h/biblioteca.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 193px; height: 320px;" src="http://4.bp.blogspot.com/_uyR68LVi3E0/SXIyWGjjuqI/AAAAAAAAAZw/a_Aaz5zQLo0/s320/biblioteca.bmp" alt="" id="BLOGGER_PHOTO_ID_5292347867412019874" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uyR68LVi3E0/SXInD8YpjoI/AAAAAAAAAZY/5Bx99pDw3-U/s1600-h/flash.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 153px;" src="http://1.bp.blogspot.com/_uyR68LVi3E0/SXInD8YpjoI/AAAAAAAAAZY/5Bx99pDw3-U/s200/flash.bmp" alt="" id="BLOGGER_PHOTO_ID_5292335460816359042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;x&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;4.- Pro&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span style="font-weight: bold;"&gt;gramar el mundo fisico con ActionScript:&lt;br /&gt;&lt;/span&gt;&lt;/x&gt;&lt;br /&gt;&lt;x&gt;&lt;span&gt;Como decia el gran Hector Lavoe : " Mi gente , aqui empieza &lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;lo bueno" vamos a tejer nuestro mundo fisico , comenzando por definir algunas variables basicas , veamos :&lt;br /&gt;&lt;br /&gt;- Ubicate en el primer frame de la capa Script y presiona F9. Escribiremos nuestras primeras lineas de codigo ( Algo a tener en cuenta y que es una regla en aras del orden y la legibilidad de un codigo bien escrito es que &lt;span style="font-weight: bold;"&gt;escribamos nuestros Scripts trantando de que todo este en un solo frame&lt;/span&gt;). Primeramente , vamos a posicionar nuestra pelota en el centro del documento mediante ActionSc&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;ript  :&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;// Pelicula a 30fps - Pelota Física by Naret&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;//Posicion inicial de la pelotita en el centro de la habitación&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;pelota.x = marco.width/2;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;pelota.y = marco.height/2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;- Muy bien , hasta este punto hemos llamado a las propiedaes de posicion de nuestra instancia "pelota" para ubicar nuestra pelota al centro de nuestra habitacion , este codigo permite tambien que nuestr&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;o programa funcione para cualquier tamaño de habitacion. Seguidamente definiremos algunas variables importantes:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;// Definicion de variables&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;var ax : Number = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;var ay : Number = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;var vy : Number = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;var vx : Number = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;var g  : &lt;/span&gt;&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Number = .5;    // Por cuestiones meramente esteticas g vale 0.5 y no 0.98&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;var friccion : Number = .99;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;var radio:Number = pelota.height/2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;-  Dejemos claro dos cosas ,  la primera es que estamos definiendo variables anteponiendo la palabra "&lt;span style="font-weight: bold;"&gt;var&lt;/span&gt;" seguida del nombre de dicha variable , luego se define el tipo de variable , en este caso es la palabra &lt;span style="font-weight: bold;"&gt;Number&lt;/span&gt; ( abarca los enteros y decimales largos). Seguidamente le asignamos el valor inicial ( la mayoria de nuestras variables fisicas inician en cero).  Vamos a ver de que trata cada una de ellas  :&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;ax , a&lt;/span&gt;&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;y &lt;/span&gt;  : Variables de Aceleracion&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;vx , vy&lt;/span&gt;   : Variables de Velocidad&lt;br /&gt;-&lt;span style="font-weight: bold;"&gt; g &lt;/span&gt;            : Gravedad&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;friccion&lt;/span&gt;  :  Variable que simulara los efectos de amortiguamiento del aire y los choques con las paredes.&lt;br /&gt;-&lt;span style="font-weight: bold;"&gt;radio&lt;/span&gt;      : Radio de nuestra pelotita.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;- Ahora insertemos nuestros &lt;span style="font-weight: bold;"&gt;Listeners&lt;/span&gt; , los listeners son como interruptores que al encenderse invocan y envian informacion de un evento a una funcion particular. Una traduccion al español seria algo como "Escuchador" y precisamente esto es lo que hace un listener , escuchar y proces&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;ar una accion para luego enviarle el "mensaje" a una funcion que respondera del modo que queramos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejemplo :&lt;/span&gt;  Al presionar la tecla "a" queremos que aparezca un mensaje que diga "hola mundo". En este caso &lt;span style="font-weight: bold;"&gt;el listener detecta la accion de apretar la tecla "a"&lt;/span&gt; e inmediatamente llama a &lt;span style="font-weight: bold;"&gt;una funcion la cual se encarga de imprimir el mensaje&lt;/span&gt; "hola mundo" en la pantalla.&lt;br /&gt;&lt;br /&gt;Insertemos nuestros listener para nuestra aplicacion :&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;// Insertando los listeners&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;stage.&lt;span style="color: rgb(51, 102, 255);"&gt;addEventListener&lt;/span&gt; (Event.ENTER_FRAME, &lt;span style="color: rgb(255, 0, 0);"&gt;Entrar_en_frame&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;stage.&lt;span style="color: rgb(51, 102, 255);"&gt;addEventListener&lt;/span&gt; (KeyboardEvent.KEY_DOWN, &lt;span style="color: rgb(255, 0, 0);"&gt;Presionar_tecla&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;stage.&lt;span style="color: rgb(51, 102, 255);"&gt;addEventListener&lt;/span&gt; (KeyboardEvent.KEY_UP, &lt;span style="color: rgb(255, 0, 0);"&gt;Soltar_tecla&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/x&gt;&lt;br /&gt;&lt;x&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Stage&lt;/span&gt; hace referencia a nuestra pelicula o documento principal . Los paremetros de nuestros listeners son basicamente dos : Uno invoca a la libreria de clases y propiedades de un evento , y la otra es la funcion a la cual acudira el listener al activarse el evento , el evento puede ser : presionar un boton , mover el mouse , presionar una tecla  ,etc ,etc.  Yo se que por ahora es un poco confuso , pero debes acostumbrarte , ya trabajando un poquito mas con esto podras asimilar intuivamente estos conceptos , no te preocupes !!, por ahora sigamos adelante !!.&lt;br /&gt;&lt;br /&gt;El primer listener controla el flujo del tiempo (para los que han programado en C++ o Java  es como un bucle infinito hecho con While). El segundo y el tercero controlan las instrucciones de teclad&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;o al presionar y soltar las teclas respectivamente.&lt;br /&gt;&lt;br /&gt;Ahora escribamos las funciones :&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;br /&gt;// Insertamos las funciones que seran invocadas por los listeners&lt;br /&gt;&lt;br /&gt;function &lt;span style="color: rgb(255, 0, 0);"&gt;Entrar_en_frame&lt;/span&gt; (e: Event): void&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/x&gt;&lt;br /&gt;&lt;x&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;function &lt;span style="color: rgb(255, 0, 0);"&gt;Presionar_tecla&lt;/span&gt; (e:KeyboardEvent):void&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function &lt;span style="color: rgb(255, 0, 0);"&gt;Soltar_tecla&lt;/span&gt; (e:KeyboardEvent):void&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Como te das cuenta las 3 funciones tienen algunos paremetros y cosas extrañas aparte de su nombre , no te preocupes por ellas todavia. las 3 funciones ademas no tienen ninguna instruccion por ahora. Comenzaremos a escribir codigo en la primera funcion. &lt;span style="font-weight: bold;"&gt;Ojo&lt;/span&gt; : cada listener debe tener asoc&lt;/span&gt;&lt;/span&gt;&lt;/x&gt;&lt;x&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;iada necesariamente una funcion y esta hay que escribirla asi la funcion este vacia o sin instrucciones , como lo acabo de hacer ,  de lo contrario saldra un mensaje de error al compilar.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Empecemos escribiendo codigo en la primera funcion :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/x&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;// Al entrar al frame : Esta funcion es ejecutada al cargar la pelicula , y tiene la particularidad de invocarse asi misma todo el tiempo gracias al listener especial que tiene asociado.&lt;br /&gt;&lt;br /&gt;funct&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;ion Entrar_en_frame (e: Event): void&lt;br /&gt;{&lt;br /&gt;vy = vy + g;&lt;br /&gt;vy = vy + ay;&lt;br /&gt;vx = vx + ax;&lt;br /&gt;pelota.x = pelota.x + vx;&lt;br /&gt;pelota.y = pelota.y + vy;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Es un&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; buen momento para ir probando la pelicula (Crt+Intro) , como puedes ver lo unico que hace la pelota es caer libremente en el vacio. Expliquemos un poco el codigo : Recordemos que la aceleracion es algo que afecta y provoca cambios en la velocidad de un objeto , por ello es que tanto al componente &lt;span style="font-weight: bold;"&gt;X&lt;/span&gt; y al componente &lt;span style="font-weight: bold;"&gt;Y&lt;/span&gt; de la velocidad se le suma las aceleraciones "&lt;span style="font-weight: bold;"&gt;ax&lt;/span&gt;" , "&lt;span style="font-weight: bold;"&gt;ay&lt;/span&gt;" y "&lt;span style="font-weight: bold;"&gt;g&lt;/span&gt;".  En este caso como no existe aceleracion en &lt;span style="font-weight: bold;"&gt;X&lt;/span&gt;  , &lt;span style="font-weight: bold;"&gt;ax = 0&lt;/span&gt; no hay cambio de movimiento en este eje. En el eje &lt;span style="font-weight: bold;"&gt;Y&lt;/span&gt; no hay ninguna fuerza externa aparte de la gravedad que provoque aceleracion por tanto &lt;span style="font-weight: bold;"&gt;ay=0&lt;/span&gt; ,  en el eje &lt;span style="font-weight: bold;"&gt;Y&lt;/span&gt; solo existe la aceleracion de la gravedad&lt;span style="font-weight: bold;"&gt; g=0.5&lt;/span&gt; , que es la real responsable del movimiento acelerado hacia abajo.  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Finalmente la velocidad termina cambiando la posicion de un objeto , por ello le sumamos la velocidad a la posicion de nuestra pelotita.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-weight: bold;"&gt;Nota :&lt;/span&gt; Los que saben un poco de fisica se estaran arrancando los pelos , debido al hecho de que sumar aceleracion a velocidad , o velocidad a posicion , ¡ No es posible ! , &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;ya que los vectores operados no son del mismo tipo , la razon de hacerlo es la siguiente :&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Siguiendo la ecuacion vectorial:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uyR68LVi3E0/SXJD1jHfnyI/AAAAAAAAAaA/XiW_oLgT8Jg/s1600-h/ecuacion.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 230px; height: 48px;" src="http://2.bp.blogspot.com/_uyR68LVi3E0/SXJD1jHfnyI/AAAAAAAAAaA/XiW_oLgT8Jg/s400/ecuacion.gif" alt="" id="BLOGGER_PHOTO_ID_5292367099352555298" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;,&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;nos queda...&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;           &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Date cuenta como al final las cantidades se suman para cada instante de tiempo , lo mismo podemos decir de la suma de la posicion y la velocidad. Cada unidad de tiempo en nuestro programa esta representado por el momento en que  la cabecera de Flash lee nuestra funcion Entrar_en_Frame y hace las operaciones respectivas , Asi , entrando y volviendo a entrar.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Añadiendo los limites de al movimiento de la pelota&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Escribamos algo mas de codigo para que la pelota pueda chocar con las paredes&lt;span style="font-weight: bold;"&gt; , &lt;/span&gt;fijate como hago las condiciones dentro de los If , y tambien fijate que al chocar la pelota hacemos que su vector de velocidad invierta su direccion multiplicandolo por -1 :&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;br /&gt;function Entrar_en_frame (e: Event): void&lt;br /&gt;{&lt;br /&gt;vy = vy + g;&lt;br /&gt;vy = vy + ay;&lt;br /&gt;vx = vx + ax;&lt;br /&gt;pelota.x = pelota.x + vx;&lt;br /&gt;pelota.y = pelota.y + vy;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;   if(pelota.y+radio &gt; marco.height)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;  pelota.y=marco.height-radio;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            vy=vy*-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        else if(pelota.y-radio&lt;0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;pelota.y=radio;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            vy=vy*-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; if(pelota.x+radio&gt;marco.width)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;pelota.x=marco.width-radio;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            vx=vx*-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; else if(pelota.x-radio&lt;0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;  pelota.x=radio;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            vx=vx*-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Es hora de probar nuevamente nuestro codigo , esta vez notaras como la pelota rebota continuamente en el piso , sin embargo lo hace sin perder su energia cinetica (Nunca se detiene !!!) eso no pasa en la realidad y lo arreglaremos agregando dos lineas mas de codigo :&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;br /&gt;function Entrar_en_frame (e: Event): void&lt;br /&gt;{&lt;br /&gt;vy = vy + g;&lt;br /&gt;vy = vy + ay;&lt;br /&gt;vx = vx + ax;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;vx=vx*friccion;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    vy=vy*friccion;&lt;/span&gt;&lt;br /&gt;pelota.x = pelota.x + vx;&lt;br /&gt;pelota.y = pelota.y + vy;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;.....&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Con esto simularemos los efectos conjuntos de la friccion del aire y los choques, la pelota ira mas y mas lento hasta detenerse. La varible friccion es un numero fraccional constante que definimos al inicio , asi que la accion de multiplicar es en el fondo una division en partes cada vez menores.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Es hora de escribir el codigo para las intrucciones con teclado , aqui es donde las variables de aceleracion &lt;span style="font-weight: bold;"&gt;ax&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;ay&lt;/span&gt; cobran su sentido , ya que hasta ahora valian cero :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;br /&gt;function &lt;span style="color: rgb(255, 0, 0);"&gt;Presionar_tecla&lt;/span&gt; (e:KeyboardEvent):void&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;switch&lt;/span&gt;(e.keyCode)    // Analizamos el evento de teclado "e"&lt;br /&gt;                                    // accediento a su propiedad keyCode&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;case&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Keyboard.LEFT&lt;/span&gt;:        // Si el evento fue apretar la tecla izquierda&lt;br /&gt;ax=-.5;&lt;br /&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;case&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Keyboard.RIGHT&lt;/span&gt;: // Si el evento fue apretar la tecla derecha&lt;br /&gt;ax=.5;&lt;br /&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;case&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Keyboard.UP&lt;/span&gt;:  // Si el evento fue apretar la tecla arriba&lt;br /&gt;g=0;&lt;br /&gt;ay=-.5;&lt;br /&gt;break;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;case&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Keyboard.DOWN&lt;/span&gt;:  // Si el evento fue apretar la tecla abajo&lt;br /&gt;ay=.5;&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;function&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;Soltar_tecla&lt;/span&gt; (e:KeyboardEvent):void&lt;br /&gt;{&lt;br /&gt;ax=0;&lt;br /&gt;ay=0;&lt;br /&gt;g=.5;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;Como puedes ver estas funciones lo que hacen es darle una acelaracion extra a nuestra pelotita , por medio del teclado.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;La funcion &lt;span style="font-weight: bold;"&gt;Soltar_tecla&lt;/span&gt; es para reiniciar las variables de aceleracion cuando aplicamos una aceleracion extra mediante la funcion&lt;span style="font-weight: bold;"&gt; Presionar_tecla&lt;/span&gt; , si no la pusieramos , las variables de aceleracion extra "ax" y "ay" actuarian constantemente en la pelota alterando su moviemiento natural.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;5. Codigo fuente completo :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;He aqui el codigo fuente completo y terminado , fijate que coloque los listeners en la parte final del codigo en vez de al principio ya que usualmente se los coloca alli por razones de formalidad. Tu puedes colocarlos donde prefieras , al principio o al final , el codigo funcionara igual , puedes tambien cambiar las dimensiones de la habitacion desde el Documento principal de Flash o los valores de la gravedad y friccion , el radio de la pelota , si quieres.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; El programa funcionara perfectamente y se adaptara a cualquier cambio.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;// Pelicula a 30fps - Pelota fisica&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;// Posicion inicial de la pelotita en el centro del marco&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;pelota.x = marco.width/2;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;pelota.y = marco.height/2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;// Definicion de variables&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var ax : Number = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var ay : Number = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var vy : Number = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var vx : Number = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var g  : Number = 0.5;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var friccion : Number = .99;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var radio:Number = pelota.height/2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;// Insertamos las funciones que seran invocadas por los listeners&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;// Al entrar al frame&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;function Entrar_en_frame (e: Event): void &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    vy = vy + g;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    vy = vy + ay;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    vx = vx + ax;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    vx=vx*friccion;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    vy=vy*friccion;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    pelota.x = pelota.x + vx;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    pelota.y = pelota.y + vy;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      if(pelota.y+radio &gt; marco.height)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;            pelota.y=marco.height-radio;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;            vy=vy*-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        else if(pelota.y-radio&lt;0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;            pelota.y=radio;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;            vy=vy*-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        if(pelota.x+radio&gt;marco.width)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;            pelota.x=marco.width-radio;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;            vx=vx*-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        else if(pelota.x-radio&lt;0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;            pelota.x=radio;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;            vx=vx*-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;function Presionar_tecla (e:KeyboardEvent):void&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    switch(e.keyCode)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    case Keyboard.LEFT:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      ax=-.5;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    break;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    case Keyboard.RIGHT:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      ax=.5;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    break;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    case Keyboard.UP:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      g=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      ay=-.5;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    break;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    case Keyboard.DOWN:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      ay=.5;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    break;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;// Al momento de dejar de apretar la tecla&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;br /&gt;function Soltar_tecla (e:KeyboardEvent):void&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    ax=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    ay=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    g=.5;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;// Listeners&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;stage.addEventListener (Event.ENTER_FRAME, Entrar_en_frame);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;stage.addEventListener (KeyboardEvent.KEY_DOWN, Presionar_tecla);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;stage.addEventListener (KeyboardEvent.KEY_UP, Soltar_tecla);&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;En esta leccion no he escatimado en detalles ya que es una introduccion al AS3 ,&lt;br /&gt;que sin embargo requiere cierta solvencia en Flash y haber programado antes en algun otro lenguaje como C++ , Pascal o Java. En los proximos tutoriales sere mucho mas directo , por ello , seria bueno en este punto que refuerces los conceptos que vimos con otros tutoriales o manuales de Flash , seria bueno tambien revisar un poquito sobre los conceptos de programacion orientada a objetos para poder digerir mejor el AS3 , cosas que con Wikipedia se pueden salvar.  Bueno todo a su tiempo no ?? , eso es algo que aprendi de algunas buenas amigas.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;br /&gt;Hasta el proximo tutorial Bloggeros !!  =)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-7283314797669946499?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/7283314797669946499/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/01/una-pelota-en-la-habitacion.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/7283314797669946499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/7283314797669946499'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/01/una-pelota-en-la-habitacion.html' title='Una pelota rebotando en la habitacion : Introduccion a ActionScript 3'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uyR68LVi3E0/SXGB9t4KLYI/AAAAAAAAAYg/k6-eIl9WrvY/s72-c/coord2.GIF' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3517651098782206607.post-8977303102559627992</id><published>2009-01-16T01:10:00.000-08:00</published><updated>2009-01-17T10:55:41.837-08:00</updated><title type='text'>Bienvenidos al Blog de Programacion de juegos en Flash</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uyR68LVi3E0/SXIpnfRWbOI/AAAAAAAAAZo/v8LNnDEGdDU/s1600-h/flashiconoc.bmp"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 304px; height: 291px;" src="http://4.bp.blogspot.com/_uyR68LVi3E0/SXIpnfRWbOI/AAAAAAAAAZo/v8LNnDEGdDU/s400/flashiconoc.bmp" alt="" id="BLOGGER_PHOTO_ID_5292338270499663074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hola que tal , mi nombre es Jorge Luis Teran de ahora en adelante alias: Naret , tocaremos el tema de la programacion en Flash , decidi hacer un blog aparte ya que el tema es de por si muy extenso  y no se puede mezclar con el diseño grafico o web convencional. Pense que era necesario separar muy bien los dos mundos de Flash :  El de los diseñadores y el de los programadores.&lt;br /&gt;para el area de diseñadores esta mi otro blog al cual puedes acceder directamente aqui :&lt;br /&gt;&lt;a href="http://ciudadvectorial.blogspot.com/"&gt;Ciudad Vectorial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Si bien es cierto , ahora con el potente AS3 (ActionScript 3) Flash es equiparable a plataformas de desarrollo tales como Java a la hora de hacer sistemas , este blog solo tocara el tema a nivel de aplicaciones practicas desarrolladas integramente en el entorno de Flash.&lt;br /&gt;&lt;br /&gt;Recordemos que AS3 se puede trabajar tambien en entornos como Flex o ID's como Eclipse , combinandolas a su vez con otras avanzadas tecnologias.&lt;br /&gt;&lt;br /&gt;Pero la orientacion de la programacion en este blog  se hara entorno al desarrollo de elementos web ,  juegos , animaciones y entornos multimedia interactivos ; que son en realidad las mayores y mas requeridas aplicaciones de Flash a nivel practico.&lt;br /&gt;&lt;br /&gt;Dejando claro estos puntos , empecemos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3517651098782206607-8977303102559627992?l=fermatflash.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fermatflash.blogspot.com/feeds/8977303102559627992/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://fermatflash.blogspot.com/2009/01/bienvenidos-al-blog-de-programacion-de.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/8977303102559627992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3517651098782206607/posts/default/8977303102559627992'/><link rel='alternate' type='text/html' href='http://fermatflash.blogspot.com/2009/01/bienvenidos-al-blog-de-programacion-de.html' title='Bienvenidos al Blog de Programacion de juegos en Flash'/><author><name>Jorge Luis Teran</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://2.bp.blogspot.com/_uyR68LVi3E0/SYZvq-leiZI/AAAAAAAAAiI/OXIm4EnyaG8/S220/foto.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uyR68LVi3E0/SXIpnfRWbOI/AAAAAAAAAZo/v8LNnDEGdDU/s72-c/flashiconoc.bmp' height='72' width='72'/><thr:total>2</thr:total></entry></feed>
