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

<channel>
	<title>Tolstenko &#187; Flash</title>
	<atom:link href="http://tolstenko.net/category/programacao-de-jogos/flash-programacao-de-jogos/feed/" rel="self" type="application/rss+xml" />
	<link>http://tolstenko.net</link>
	<description>Sobre computação e o mundo</description>
	<lastBuildDate>Sat, 15 May 2010 22:04:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Physaxe &#8211; Engine física para flash</title>
		<link>http://tolstenko.net/2009/11/14/physaxe-engine-fisica-para-flash/</link>
		<comments>http://tolstenko.net/2009/11/14/physaxe-engine-fisica-para-flash/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 12:14:10 +0000</pubDate>
		<dc:creator>Alexandre</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[engine fisica]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[game engine]]></category>
		<category><![CDATA[game programming]]></category>
		<category><![CDATA[haxe]]></category>
		<category><![CDATA[jogos]]></category>
		<category><![CDATA[physaxe]]></category>
		<category><![CDATA[Physics engine]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[swf]]></category>

		<guid isPermaLink="false">http://tolstenko.net/?p=348</guid>
		<description><![CDATA[<a href="http://tolstenko.net/2009/11/14/physaxe-engine-fisica-para-flash/"><img align="left" hspace="5" width="150" height="150" src="http://tolstenko.net/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a><p>Um colega meu, &#8220;Ian Liu&#8221; do grupo de jogos me apresentou uma engine fisica 2D em flash para haXe: Physaxe. A proposta dele é que o grupo destinado a pesquisar desenvolvimento de jogos em 2D busque soluções que incorporem coisas assim.</p>
<p>Parafraseando o próprio autor: &#8220;Um demo vale mais que 1000 palavras&#8221;.</p>
<p>Aqui em baixo, você pode [...]]]></description>
			<content:encoded><![CDATA[<p>Um colega meu, &#8220;Ian Liu&#8221; do grupo de jogos me apresentou uma engine fisica 2D em flash para haXe: <a href="http://code.google.com/p/physaxe/" target="_blank">Physaxe</a>. A proposta dele é que o grupo destinado a pesquisar desenvolvimento de jogos em 2D busque soluções que incorporem coisas assim.</p>
<p>Parafraseando o próprio autor: &#8220;Um demo vale mais que 1000 palavras&#8221;.</p>
<p>Aqui em baixo, você pode testar um demo usando a tal engine: <strong>Use</strong> <strong>as teclas 1-8 para alterar o demo </strong>e <strong>clique</strong> em algum lugar do objeto abaixo para atirar blocos.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="580" height="480" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="/dados/Flash/phxdemo.swf" /><embed type="application/x-shockwave-flash" width="580" height="480" src="/dados/Flash/phxdemo.swf"></embed></object></p>
<p style="text-align: justify;">(Para saber mais sobre o sistema, clique no link &#8220;Continue lendo&#8230;&#8221;)</p>
<p style="text-align: justify;"><span id="more-348"></span></p>
<p style="text-align: justify;">O interessante é q o binário gerado aqui é de apenas 28KB. Minúsculo e bem otimizado.</p>
<p style="text-align: justify;">Para quese possa ver o consumo da CPU, aperte a tecla <strong>D</strong> para parar de desenhar e verifique no gerenciador de recursos do seu sistema operacional, o consumo do game funcionando e sem funcionar.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Outro exemplo interessante que vem com o código fonte é esse de gravidade:</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="450" height="450" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="/dados/Flash/phx_box.swf" /><embed type="application/x-shockwave-flash" width="450" height="450" src="/dados/Flash/phx_box.swf"></embed></object></p>
<p style="text-align: justify;">Para rodar esse demo, faça isso:</p>
<ul>
<li>Instale <a href="http://haxe.org/">haXe</a></li>
<li>Execute o comando <code>haxelib install physaxe</code> para instalar a biblioteca do Physaxe.</li>
<li>Copie e cole o código <code>Test.hx</code></li>
<li>Excecute: <code>haxe -swf9 test.swf -main Test -lib physaxe</code> para compilar</li>
<li>Boa diversão!</li>
</ul>
<p>Codigo:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Test <span style="color: #66cc66;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">var</span> root : flash.<span style="color: #006600;">display</span>.<span style="color: #0066CC;">MovieClip</span>;
    <span style="color: #000000; font-weight: bold;">var</span> world : phx.<span style="color: #006600;">World</span>;
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #000000; font-weight: bold;">new</span><span style="color: #66cc66;">&#40;</span>root<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0066CC;">this</span>.<span style="color: #006600;">root</span> = root;
        <span style="color: #000000; font-weight: bold;">var</span> w = root.<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageWidth</span>;
        <span style="color: #000000; font-weight: bold;">var</span> h = root.<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageHeight</span>;
        world = <span style="color: #000000; font-weight: bold;">new</span> phx.<span style="color: #006600;">World</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> phx.<span style="color: #006600;">col</span>.<span style="color: #006600;">AABB</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,w,h<span style="color: #66cc66;">&#41;</span>,<span style="color: #000000; font-weight: bold;">new</span> phx.<span style="color: #006600;">col</span>.<span style="color: #006600;">SortedList</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000000; font-weight: bold;">var</span> p0 = phx.<span style="color: #006600;">Const</span>.<span style="color: #006600;">DEFAULT_PROPERTIES</span>;
        p0.<span style="color: #006600;">biasCoef</span> = <span style="color: #cc66cc;">0.3</span>;
        p0.<span style="color: #006600;">maxDist</span> = <span style="color: #cc66cc;">2</span>;
        world.<span style="color: #006600;">sleepEpsilon</span> = <span style="color: #cc66cc;">0</span>; <span style="color: #808080; font-style: italic;">// no sleep (gravity can change anytime)</span>
        <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">floor</span> = <span style="color: #000000; font-weight: bold;">new</span> phx.<span style="color: #006600;">Body</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0066CC;">floor</span>.<span style="color: #006600;">addShape</span><span style="color: #66cc66;">&#40;</span>phx.<span style="color: #006600;">Shape</span>.<span style="color: #006600;">makeBox</span><span style="color: #66cc66;">&#40;</span>w,<span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0066CC;">floor</span>.<span style="color: #006600;">addShape</span><span style="color: #66cc66;">&#40;</span>phx.<span style="color: #006600;">Shape</span>.<span style="color: #006600;">makeBox</span><span style="color: #66cc66;">&#40;</span>w,<span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">0</span>,h-<span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0066CC;">floor</span>.<span style="color: #006600;">addShape</span><span style="color: #66cc66;">&#40;</span>phx.<span style="color: #006600;">Shape</span>.<span style="color: #006600;">makeBox</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">30</span>,h,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0066CC;">floor</span>.<span style="color: #006600;">addShape</span><span style="color: #66cc66;">&#40;</span>phx.<span style="color: #006600;">Shape</span>.<span style="color: #006600;">makeBox</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">30</span>,h,w-<span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #0066CC;">floor</span>.<span style="color: #006600;">isStatic</span> = <span style="color: #000000; font-weight: bold;">true</span>;
        world.<span style="color: #006600;">addBody</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">floor</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000000; font-weight: bold;">var</span> mat = <span style="color: #000000; font-weight: bold;">new</span> phx.<span style="color: #006600;">Material</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0.3</span>,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span> i <span style="color: #b1b100;">in</span> 0...100 <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">var</span> points = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">size</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span> + Std.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">0.7</span>;
            <span style="color: #000000; font-weight: bold;">var</span> a = <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">*</span> <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span>;
            <span style="color: #b1b100;">do</span> <span style="color: #66cc66;">&#123;</span>
                points.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> phx.<span style="color: #006600;">Vector</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">cos</span><span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #0066CC;">size</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sin</span><span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #0066CC;">size</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
                a -= <span style="color: #66cc66;">&#40;</span>Std.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">0.1</span>;
            <span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">while</span><span style="color: #66cc66;">&#40;</span> a <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#41;</span>;
            <span style="color: #000000; font-weight: bold;">var</span> shape = <span style="color: #000000; font-weight: bold;">new</span> phx.<span style="color: #006600;">Body</span><span style="color: #66cc66;">&#40;</span>Std.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span>w - <span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #cc66cc;">50</span>,Std.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span>h - <span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span>;
            shape.<span style="color: #006600;">addShape</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> phx.<span style="color: #006600;">Polygon</span><span style="color: #66cc66;">&#40;</span>points,<span style="color: #000000; font-weight: bold;">new</span> phx.<span style="color: #006600;">Vector</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>,mat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
            world.<span style="color: #006600;">addBody</span><span style="color: #66cc66;">&#40;</span>shape<span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> update<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">var</span> w = root.<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageWidth</span>;
        <span style="color: #000000; font-weight: bold;">var</span> h = root.<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageHeight</span>;
        <span style="color: #000000; font-weight: bold;">var</span> xf = <span style="color: #66cc66;">&#40;</span>root.<span style="color: #006600;">mouseX</span> <span style="color: #66cc66;">/</span> w<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> - <span style="color: #cc66cc;">1</span>;
        <span style="color: #000000; font-weight: bold;">var</span> yf = <span style="color: #66cc66;">&#40;</span>root.<span style="color: #006600;">mouseY</span> <span style="color: #66cc66;">/</span> h<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> - <span style="color: #cc66cc;">1</span>;
        world.<span style="color: #006600;">gravity</span>.<span style="color: #006600;">x</span> = xf <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">0.5</span>;
        world.<span style="color: #006600;">gravity</span>.<span style="color: #006600;">y</span> = yf <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">0.5</span>;
        world.<span style="color: #006600;">step</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1.0</span>,<span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span>;
        root.<span style="color: #006600;">graphics</span>.<span style="color: #0066CC;">clear</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000000; font-weight: bold;">var</span> d = <span style="color: #000000; font-weight: bold;">new</span> phx.<span style="color: #006600;">FlashDraw</span><span style="color: #66cc66;">&#40;</span>root.<span style="color: #006600;">graphics</span><span style="color: #66cc66;">&#41;</span>;
        d.<span style="color: #006600;">shape</span>.<span style="color: #006600;">lineSize</span> = <span style="color: #cc66cc;">0.5</span>;
        d.<span style="color: #006600;">staticShape</span>.<span style="color: #006600;">line</span> = <span style="color: #000000; font-weight: bold;">null</span>;
        d.<span style="color: #006600;">drawWorld</span><span style="color: #66cc66;">&#40;</span>world<span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">var</span> mc = flash.<span style="color: #006600;">Lib</span>.<span style="color: #006600;">current</span>;
        <span style="color: #000000; font-weight: bold;">var</span> t = <span style="color: #000000; font-weight: bold;">new</span> Test<span style="color: #66cc66;">&#40;</span>mc<span style="color: #66cc66;">&#41;</span>;
        mc.<span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">quality</span> = flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageQuality</span>.<span style="color: #006600;">MEDIUM</span>;
        mc.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>.<span style="color: #006600;">ENTER_FRAME</span>,<span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>_<span style="color: #66cc66;">&#41;</span> t.<span style="color: #006600;">update</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://tolstenko.net/2009/11/14/physaxe-engine-fisica-para-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->