<?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>Emanuele Feronato &#187; Actionscript 3</title>
	<atom:link href="http://www.emanueleferonato.com/category/actionscript-3/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.emanueleferonato.com</link>
	<description>italian geek and PROgrammer</description>
	<lastBuildDate>Tue, 16 Mar 2010 15:55:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Citrus Engine released for free for learning</title>
		<link>http://www.emanueleferonato.com/2010/03/16/citrus-engine-released-for-free-for-learning/</link>
		<comments>http://www.emanueleferonato.com/2010/03/16/citrus-engine-released-for-free-for-learning/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 15:55:36 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=2534</guid>
		<description><![CDATA[Do you know Citrus Engine?

It&#8217;s a Box2D library designed to allow game developers making 2D side-scrolling platform games, including a graphical level builder that allows you to drag, drop, and customize all of the game objects and art in your game.
These are the main features, as they appear on the official site:

Blazing 50 FPS in [...]]]></description>
			<content:encoded><![CDATA[<p>Do you know <strong><a href="http://citrusengine.com/" target = "_blank">Citrus Engine</a></strong>?</p>
<p><a href="http://citrusengine.com/" target = "_blank"><img src="/wp-content/uploads/2010/03/citrus.png" /></a></p>
<p>It&#8217;s a Box2D library designed to allow game developers making 2D side-scrolling platform games, including a graphical level builder that allows you to drag, drop, and customize all of the game objects and art in your game.</p>
<p>These are the main features, as they appear on the <a href="http://citrusengine.com/about/features" target = "_blank">official site</a>:<span id="more-2534"></span></p>
<ul>
<li>Blazing 50 FPS in the browser on current machines, and 250+ FPS on the desktop (or Adobe AIR).</li>
<li>Physics-based engine allows for tumbling crates, pulleys, vehicles, and just about anything else you can imagine, without the limitations of a grid.</li>
<li>The Level Architect visual level editor makes it easier to create level blueprints, then tweak your level to your heart’s desire.</li>
<li>Robust documentation includes and ASDoc API, tutorial videos, and a developer-friendly manual.</li>
<li>Standards-based code API means developers and designers spend more time tweaking the fun stuff, and less time debugging.</li>
<li>Level-based progressive downloading allows gamers to start playing the game quicker by only downloading what the next level needs.</li>
<li>Pre-made commonly used objects, like a hero, coins, enemy, moving platforms, and more!</li>
<li>Object spawning management</li>
<li>Graphics rendering system that gives your animators and artists flexibility</li>
<li>Sound management</li>
<li>Keyboard and input management</li>
<li>Intuitive events framework</li>
</ul>
<p>That&#8217;s really a lot of features&#8230;</p>
<p><strong>You can have it for free</strong></p>
<p>Citrus Engine is now free for educational users. This means students, educators, and hobbiest wont&#8217;a pay for it.</p>
<p><strong>You can STILL have it for free&#8230;</strong></p>
<p>If you are looking to use the engine in commercial projects, you can still have it for free&#8230; just <a href="http://citrusengine.com/blog/view/tweet-about-citrusengine" target = "_blank">tweet about it</a> before April 15th 2010 and you can win one commercial license or a $0.25 discount per follower.</p>
<p>I am testing the engine right now, so expect some tutorial very soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2010/03/16/citrus-engine-released-for-free-for-learning/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Protect your work from ActionScript code theft with SWF Protector</title>
		<link>http://www.emanueleferonato.com/2010/03/05/protect-your-work-from-actionscript-code-theft-with-swf-protector/</link>
		<comments>http://www.emanueleferonato.com/2010/03/05/protect-your-work-from-actionscript-code-theft-with-swf-protector/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 10:03:32 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 2]]></category>
		<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=2480</guid>
		<description><![CDATA[&#171; I&#8217;ve just found a site that won a top international online advertising award &#8211; and it&#8217;s been blatantly lifted from me!
Its a flash application that has the same vectors and almost certainly the same AS code. Is there anything I can do? I&#8217;m in the UK &#8211; they&#8217;re in Brazil. &#187;
The guy who opened [...]]]></description>
			<content:encoded><![CDATA[<p>&laquo; I&#8217;ve just found a site that won a top international online advertising award &#8211; and it&#8217;s been blatantly lifted from me!</p>
<p>Its a flash application that has the same vectors and <strong>almost certainly the same AS code</strong>. Is there anything I can do? I&#8217;m in the UK &#8211; they&#8217;re in Brazil. &raquo;</p>
<p>The guy who opened <a href="http://www.webmasterworld.com/webmaster/3033990.htm" target = "_blank">this thread</a> looks quite desperate&#8230; now imagine this happening to your latest Flash game.</p>
<p>That&#8217;s why you <strong>must</strong> protect your code. You don&#8217;t want someone else stealing your work.</p>
<p>I am going to review <a href="http://www.dcomsoft.com/" target = "_blank">DCOM Soft</a>&#8217;s SWF Protector.</p>
<p><a href="http://www.dcomsoft.com/" target = "_blank"><img src="/wp-content/uploads/2010/03/swfpro01.jpg" /></a></p>
<p><strong>SWF Protector</strong></p>
<p><a href="http://www.dcomsoft.com/" target = "_blank">SWF Protector</a> is an swf protector software working through actionscript encryption to secure your actionscript content. This means decompilers won&#8217;t be able to read your actionscript.<span id="more-2480"></span></p>
<p>The most interesting <a href="http://www.dcomsoft.com/" target = "_blank">SWF Protector</a> features are:</p>
<p>* Inexpensive: only $59.95 for a Business License. <a href="http://www.emanueleferonato.com/2009/12/07/milestone-reached-100-with-mochiads/">You can earn twice in just one day with a single game</a>.</p>
<p>* Simple and fast. You can encrypt your SWF with a couple of clicks.</p>
<p>* Cross-platform. Available for Windows, Mac and Linux.</p>
<p>* Mass protection. You can protect several SWFs at once.</p>
<p>This is the interface you&#8217;ll see when you are about to secure your flash content: </p>
<p><img src="/wp-content/uploads/2010/03/swfpro02.jpg" /></p>
<p>I am testing the software on the file created on <a href="http://www.emanueleferonato.com/2010/02/25/box2d-flash-game-creation-tutorial-part-2/">Box2D Flash game creation tutorial – part 2</a> tutorial.</p>
<p>This is the original content of the <code>custom_contact_listener.as</code> file:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.Shapes.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.Joints.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.Contacts.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #004993;">Math</span>.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #9900cc; font-weight: bold;">class</span> custom_contact_listener extends b2ContactListener <span style="color: #000000;">&#123;</span>
		override <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> BeginContact<span style="color: #000000;">&#40;</span>contact<span style="color: #000000; font-weight: bold;">:</span>b2Contact<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900;">// getting the fixtures that collided</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureA<span style="color: #000000; font-weight: bold;">:</span>b2Fixture=contact.GetFixtureA<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureB<span style="color: #000000; font-weight: bold;">:</span>b2Fixture=contact.GetFixtureB<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// if the fixture is a sensor, mark the parent body to be removed</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>fixtureB.IsSensor<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				fixtureB.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.SetUserData<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;remove&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>fixtureA.IsSensor<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				fixtureA.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.SetUserData<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;remove&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>Now, I will use a Flash decompiler to extract the same file from an unprotected version of the swf&#8230; here it is:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #009900;">//class custom_contact_listener</span>
<span style="color: #9900cc; font-weight: bold;">package</span> 
<span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.<span style="color: #000000; font-weight: bold;">*</span>;
    <span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.Contacts.<span style="color: #000000; font-weight: bold;">*</span>;
&nbsp;
    <span style="color: #0033ff; font-weight: bold;">internal</span> <span style="color: #9900cc; font-weight: bold;">class</span> custom_contact_listener extends Box2D.Dynamics.b2ContactListener
    <span style="color: #000000;">&#123;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> custom_contact_listener<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">super</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
            <span style="color: #0033ff; font-weight: bold;">return</span>;
        <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #0033ff; font-weight: bold;">public</span> override <span style="color: #339966; font-weight: bold;">function</span> BeginContact<span style="color: #000000;">&#40;</span>arg1<span style="color: #000000; font-weight: bold;">:</span>Box2D.Dynamics.Contacts.b2Contact<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> loc1<span style="color: #000000; font-weight: bold;">:*</span>=arg1.GetFixtureA<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
            <span style="color: #6699cc; font-weight: bold;">var</span> loc2<span style="color: #000000; font-weight: bold;">:*</span>=arg1.GetFixtureB<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
            <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>loc2.IsSensor<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> 
            <span style="color: #000000;">&#123;</span>
                loc2.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.SetUserData<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;remove&quot;</span><span style="color: #000000;">&#41;</span>;
            <span style="color: #000000;">&#125;</span>
            <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>loc1.IsSensor<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> 
            <span style="color: #000000;">&#123;</span>
                loc1.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.SetUserData<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;remove&quot;</span><span style="color: #000000;">&#41;</span>;
            <span style="color: #000000;">&#125;</span>
            <span style="color: #0033ff; font-weight: bold;">return</span>;
        <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>The code is amost more polished&#8230; and obviously it works.</p>
<p>Now let&#8217;s try to do the same on the obfuscated swf made by <a href="http://www.dcomsoft.com/" target = "_blank">SWF Protector</a>&#8230; that&#8217;s what I got (sorry for the italian screenshot: I&#8217;m currently running an italian version of Windows7)</p>
<p><img src="/wp-content/uploads/2010/03/swfpro03.jpg" /></p>
<p>The decompiler crashed&#8230; probably the amount of weird characters inserted by the flash obfuscator made it crash.</p>
<p>In the end, <a href="http://www.dcomsoft.com/" target = "_blank">SWF Protector</a> is simple to use and very fast. It has shown lightning-fast speeds of SWF files loading, processing and saving and uses four reliable protection algorithms.</p>
<p>You can download a trial version on the official site or <strong>win one of three business licenses</strong> I am giving away being the first to reply &#8220;I want one&#8221; when this post will be published on my <a href="http://www.facebook.com/pages/Emanuele-Feronato/50374255154">Facebook Fanpage</a>. This is a special giveaway for three of my Facebook fans. And won&#8217;t be the only one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2010/03/05/protect-your-work-from-actionscript-code-theft-with-swf-protector/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Understanding Box2D&#8217;s one-way platforms, aka CLOUDS</title>
		<link>http://www.emanueleferonato.com/2010/03/02/understanding-box2ds-one-way-platforms-aka-clouds/</link>
		<comments>http://www.emanueleferonato.com/2010/03/02/understanding-box2ds-one-way-platforms-aka-clouds/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 23:24:20 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=2448</guid>
		<description><![CDATA[One of the new features introduced with Box2D 2.1a is the improved contact listener class which comes in hand when we want to create one-way platforms, or &#8220;clouds&#8221;.
This can be made thanks to a function called before the contact is processed&#8230; something like &#8220;hey, two bodies are about to collide, what should I do?&#8221;&#8230; so [...]]]></description>
			<content:encoded><![CDATA[<p>One of the new features introduced with <a href="http://www.emanueleferonato.com/2010/01/27/box2dflash-2-1a-released-what-changed/">Box2D 2.1a</a> is the improved contact listener class which comes in hand when we want to create one-way platforms, or &#8220;clouds&#8221;.</p>
<p>This can be made thanks to a function called <strong>before</strong> the contact is processed&#8230; something like &#8220;hey, two bodies are about to collide, what should I do?&#8221;&#8230; so you can decide to disable the contact for every collision you want.</p>
<p>The function used to do this task is <code>PreSolve</code>, working for all awake bodies that aren&#8217;t sensors.</p>
<p>If you don&#8217;t know what is a Box2D sensor, check <a href="http://www.emanueleferonato.com/2010/02/25/box2d-flash-game-creation-tutorial-part-2/">Box2D Flash game creation tutorial – part 2</a>.</p>
<p>So the concept is: listen for collisions, if a collision involves the cloud wall and the player, then check if the player is higher or lower than the cloud. If it&#8217;s lower, don&#8217;t process the collision and let the player fly through the cloud.</p>
<p>Let&#8217;s see the script, directly taken from <a href="http://www.emanueleferonato.com/2010/02/25/box2d-flash-game-creation-tutorial-part-2/">Box2D Flash game creation tutorial – part 2</a>:<span id="more-2448"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span>.<span style="color: #004993;">Sprite</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">Event</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">KeyboardEvent</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.Shapes.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #004993;">Math</span>.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> ball02 extends <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #009900;">// world creation</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000000; font-weight: bold;">:</span>b2World=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">10.0</span><span style="color: #000000;">&#41;</span>,<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> world_scale<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">30</span>;
		<span style="color: #009900;">// the player</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> player<span style="color: #000000; font-weight: bold;">:</span>b2Body;
		<span style="color: #009900;">// force to apply to the player</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> force<span style="color: #000000; font-weight: bold;">:</span>b2Vec2;
		<span style="color: #009900;">// variables to store whether the keys are pressed or not</span>
		<span style="color: #009900;">// true = pressed;</span>
		<span style="color: #009900;">// false = unpressed</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">left</span>,<span style="color: #004993;">right</span>,up,down<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=<span style="color: #0033ff; font-weight: bold;">false</span>;
		<span style="color: #009900;">// declaring my custom contact listener class</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> contact_listener=<span style="color: #0033ff; font-weight: bold;">new</span> custom_contact_listener<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> ball02<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900;">// assigning the contact listener to the world</span>
			world.SetContactListener<span style="color: #000000;">&#40;</span>contact_listener<span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// calling debug draw function</span>
			debug_draw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// drawing the boundaries</span>
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #000000; font-weight:bold;">500</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;ground&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">200</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;left&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">500</span>,<span style="color: #000000; font-weight:bold;">200</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;right&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">500</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;roof&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">200</span>,<span style="color: #000000; font-weight:bold;">300</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;middle&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// adding the player at 250,200</span>
			add_player<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">350</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// adding some coins</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">1</span>; i<span style="color: #000000; font-weight: bold;">&lt;</span>=<span style="color: #000000; font-weight:bold;">5</span>; i<span style="color: #000000; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				draw_coin<span style="color: #000000;">&#40;</span><span style="color: #004993;">Math</span>.<span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">400</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">50</span>,<span style="color: #004993;">Math</span>.<span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">150</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">25</span>,<span style="color: #004993;">Math</span>.<span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">3</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #009900;">// listeners needed for the game to work</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">ENTER_FRAME</span>, update<span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">stage</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">KeyboardEvent</span>.<span style="color: #004993;">KEY_DOWN</span>,on_key_down<span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">stage</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">KeyboardEvent</span>.<span style="color: #004993;">KEY_UP</span>,on_key_up<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// according to the key pressed, set the proper variable to &quot;true&quot;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> on_key_down<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">KeyboardEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span>e.<span style="color: #004993;">keyCode</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">37</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">left</span>=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">38</span> <span style="color: #000000; font-weight: bold;">:</span>
					up=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">39</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">right</span>=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">40</span> <span style="color: #000000; font-weight: bold;">:</span>
					down=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// according to the key released, set the proper variable to &quot;false&quot;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> on_key_up<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">KeyboardEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span>e.<span style="color: #004993;">keyCode</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">37</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">left</span>=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">38</span> <span style="color: #000000; font-weight: bold;">:</span>
					up=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">39</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">right</span>=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">40</span> <span style="color: #000000; font-weight: bold;">:</span>
					down=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// function to draw a coin</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> draw_coin<span style="color: #000000;">&#40;</span>px,py,r<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_body<span style="color: #000000; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>px<span style="color: #000000; font-weight: bold;">/</span>world_scale, py<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_circle<span style="color: #000000; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span>r<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_fixture<span style="color: #000000; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_fixture.shape=my_circle;
			<span style="color: #009900;">// look! it's a sensor!!</span>
			my_fixture.isSensor=<span style="color: #0033ff; font-weight: bold;">true</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> world_body<span style="color: #000000; font-weight: bold;">:</span>b2Body=world.CreateBody<span style="color: #000000;">&#40;</span>my_body<span style="color: #000000;">&#41;</span>;
			world_body.CreateFixture<span style="color: #000000;">&#40;</span>my_fixture<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// simple function to draw a box</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> draw_box<span style="color: #000000;">&#40;</span>px,py,w,h,<span style="color: #004993;">d</span>,ud<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_body<span style="color: #000000; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>px<span style="color: #000000; font-weight: bold;">/</span>world_scale, py<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">d</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				my_body.<span style="color: #004993;">type</span>=b2Body.b2_dynamicBody;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_box<span style="color: #000000; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_box.SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000; font-weight: bold;">/</span>world_scale, h<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_fixture<span style="color: #000000; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_fixture.shape=my_box;
			<span style="color: #6699cc; font-weight: bold;">var</span> world_body<span style="color: #000000; font-weight: bold;">:</span>b2Body=world.CreateBody<span style="color: #000000;">&#40;</span>my_body<span style="color: #000000;">&#41;</span>;
			world_body.SetUserData<span style="color: #000000;">&#40;</span>ud<span style="color: #000000;">&#41;</span>;
			world_body.CreateFixture<span style="color: #000000;">&#40;</span>my_fixture<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// function to add the player</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> add_player<span style="color: #000000;">&#40;</span>px,py<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_body<span style="color: #000000; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>px<span style="color: #000000; font-weight: bold;">/</span>world_scale, py<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">type</span>=b2Body.b2_dynamicBody;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_circle<span style="color: #000000; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_fixture<span style="color: #000000; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_fixture.shape=my_circle;
			player=world.CreateBody<span style="color: #000000;">&#40;</span>my_body<span style="color: #000000;">&#41;</span>;
			player.SetUserData<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;player&quot;</span><span style="color: #000000;">&#41;</span>;
			player.CreateFixture<span style="color: #000000;">&#40;</span>my_fixture<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// debug draw</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> debug_draw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debug_draw<span style="color: #000000; font-weight: bold;">:</span>b2DebugDraw = <span style="color: #0033ff; font-weight: bold;">new</span> b2DebugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> debug_sprite<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>debug_sprite<span style="color: #000000;">&#41;</span>;
			debug_draw.SetSprite<span style="color: #000000;">&#40;</span>debug_sprite<span style="color: #000000;">&#41;</span>;
			debug_draw.SetDrawScale<span style="color: #000000;">&#40;</span>world_scale<span style="color: #000000;">&#41;</span>;
			debug_draw.SetFlags<span style="color: #000000;">&#40;</span>b2DebugDraw.e_shapeBit<span style="color: #000000;">&#41;</span>;
			world.SetDebugDraw<span style="color: #000000;">&#40;</span>debug_draw<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// function to be executed at every frame</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> update<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900;">// setting the force to null</span>
			force=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// according to the key(s) pressed, add the proper vector force</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">left</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">right</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>up<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>down<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">5</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #009900;">// if there is any force, then apply it</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>force.<span style="color: #004993;">x</span><span style="color: #000000; font-weight: bold;">||</span>force.<span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				player.ApplyForce<span style="color: #000000;">&#40;</span>force,player.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			world.Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span>;
			world.ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// scanning through all bodies</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> worldbody<span style="color: #000000; font-weight: bold;">:</span>b2Body = world.GetBodyList<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>; worldbody; worldbody = worldbody.GetNext<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #009900;">// if a body is marked as &quot;remove&quot;...</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>worldbody.GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>==<span style="color: #990000;">&quot;remove&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #009900;">// ... just remove it!!</span>
					world.DestroyBody<span style="color: #000000;">&#40;</span>worldbody<span style="color: #000000;">&#41;</span>;
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			world.DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p><strong>Line 34</strong>: with the old function introduced at <a href="http://www.emanueleferonato.com/2010/02/16/understanding-box2d-applicable-forces/">Understanding Box2D applicable forces</a> I create a box marked as &#8220;middle&#8221;.</p>
<p>No other changes on the main file, now let&#8217;s see the <code>custom_contact_listener.as</code> file</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.Shapes.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.Joints.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.Contacts.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #004993;">Math</span>.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #9900cc; font-weight: bold;">class</span> custom_contact_listener extends b2ContactListener <span style="color: #000000;">&#123;</span>
		override <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> BeginContact<span style="color: #000000;">&#40;</span>contact<span style="color: #000000; font-weight: bold;">:</span>b2Contact<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900;">// getting the fixtures that collided</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureA<span style="color: #000000; font-weight: bold;">:</span>b2Fixture=contact.GetFixtureA<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureB<span style="color: #000000; font-weight: bold;">:</span>b2Fixture=contact.GetFixtureB<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// if the fixture is a sensor, mark the parent body to be removed</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>fixtureB.IsSensor<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				fixtureB.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.SetUserData<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;remove&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>fixtureA.IsSensor<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				fixtureA.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.SetUserData<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;remove&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		override <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> PreSolve<span style="color: #000000;">&#40;</span>contact<span style="color: #000000; font-weight: bold;">:</span>b2Contact, oldManifold<span style="color: #000000; font-weight: bold;">:</span>b2Manifold<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900;">// getting the fixtures that collided</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureA<span style="color: #000000; font-weight: bold;">:</span>b2Fixture=contact.GetFixtureA<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureB<span style="color: #000000; font-weight: bold;">:</span>b2Fixture=contact.GetFixtureB<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// variable to handle bodies y position</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> player_y_position<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> platform_y_position<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>;
			<span style="color: #009900;">// checking if the collision bodies are the ones marked as &quot;middle&quot; and &quot;player&quot;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>fixtureA.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>==<span style="color: #990000;">&quot;middle&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> fixtureB.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>==<span style="color: #990000;">&quot;player&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">||</span><span style="color: #000000;">&#40;</span>fixtureA.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>==<span style="color: #990000;">&quot;player&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> fixtureB.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>==<span style="color: #990000;">&quot;middle&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #009900;">// determining if the fixtureA represents the platform (&quot;middle&quot;) or the player</span>
				<span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span>fixtureA.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #990000;">&quot;middle&quot;</span> <span style="color: #000000; font-weight: bold;">:</span>
						<span style="color: #009900;">// determining y positions</span>
						player_y_position=fixtureB.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #004993;">y</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span>;
						platform_y_position=fixtureA.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #004993;">y</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span>;
						<span style="color: #0033ff; font-weight: bold;">break</span>;
					<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #990000;">&quot;player&quot;</span> <span style="color: #000000; font-weight: bold;">:</span>
						<span style="color: #009900;">// determining y positions</span>
						player_y_position=fixtureA.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #004993;">y</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span>;
						platform_y_position=fixtureB.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #004993;">y</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span>;
<span style="color: #000000; font-weight: bold;">&lt;</span>strong<span style="color: #000000; font-weight: bold;">&gt;</span>						<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #000000;">&#125;</span>
				<span style="color: #009900;">// checking distance between bodies</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">distance</span> = player_y_position<span style="color: #000000; font-weight: bold;">-</span>platform_y_position;
				<span style="color: #009900;">// if the distance is greater than player radius + half of the platform height...</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>distance<span style="color: #000000; font-weight: bold;">&gt;-</span><span style="color: #000000; font-weight:bold;">14.5</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #009900;">// don't manage the contact</span>
					contact.SetEnabled<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span>;
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p><strong>Line 22</strong>: beginning of the PreSolve function, the core of this example</p>
<p><strong>Lines 24-25</strong>: getting the fixtures that generated the contact</p>
<p><strong>Lines 27-28</strong>: declaring two variables to store y position of both bodies</p>
<p><strong>Line 30</strong>: here I am checking if the fixtures are the one associated to the player and the one associated to the cloud</p>
<p><strong>Lines 32-43</strong>: according to the fixture associated to the player and the one associated to the cloud, I am saving in the variables declared at <strong>lines 27-28</strong> the y position of both bodies. I am multiplying directly by <code>30</code> without passing the right <code>world_scale</code> value declared at <strong>line 13</strong> of the main class because it&#8217;s not the purpose of this tutorial.</p>
<p><strong>Line 45</strong>: Determining the vertical distance from the player and the cloud</p>
<p><strong>Lines 47-50</strong>: If the player is not at least <code>14.5</code> pixels higher than the cloud, then disable the contact. Why <code>14.5</code>? It&#8217;s the sum of the ball radius (10) and half the cloud height (5)&#8230; and I am not using <code>15</code> because I found sometimes the distance when the ball falls on the cloud is <code>14.93</code>, so the cloud won&#8217;t &#8220;hold&#8221; the ball, letting it fall down. With <code>14.5</code>, I am sure this won&#8217;t happen.</p>
<p>And this is the result&#8230; </p>
<p><embed src="/wp-content/uploads/2010/03/oneway.swf" allowscriptaccess="always" menu="false" quality="high" width="500" height="400" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Move the ball by tapping arrow keys and watch the static object in the center of the stage act as a cloud&#8230; you can fly through it from bottom to top, but you can&#8217;t do it from top to bottom.</p>
<p><a href="/wp-content/uploads/2010/03/oneway.zip">Download the source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2010/03/02/understanding-box2ds-one-way-platforms-aka-clouds/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Box2D Flash game creation tutorial &#8211; part 2</title>
		<link>http://www.emanueleferonato.com/2010/02/25/box2d-flash-game-creation-tutorial-part-2/</link>
		<comments>http://www.emanueleferonato.com/2010/02/25/box2d-flash-game-creation-tutorial-part-2/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 09:56:23 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=2434</guid>
		<description><![CDATA[After seeing the character creation in Box2D Flash game creation tutorial &#8211; part 1, it&#8217;s time to add some coins to collect.
This process will involve some interesting Box2D features, like sensors and custom collision management.
I would suggest to read the basics of sensors at Erase Box: the tutorial and custom collision management at Creation of [...]]]></description>
			<content:encoded><![CDATA[<p>After seeing the character creation in <a href="http://www.emanueleferonato.com/2010/02/19/box2d-flash-game-creation-tutorial-part-1/">Box2D Flash game creation tutorial &#8211; part 1</a>, it&#8217;s time to add some coins to collect.</p>
<p>This process will involve some interesting Box2D features, like sensors and custom collision management.</p>
<p>I would suggest to read the basics of sensors at <a href="http://www.emanueleferonato.com/2009/02/25/erase-box-the-tutorial/">Erase Box: the tutorial</a> and custom collision management at <a href="http://www.emanueleferonato.com/2009/11/23/creation-of-a-flash-stabilize-clone-using-box2d-part-4/">Creation of a Flash Stabilize! clone using Box2D – part 4</a>.</p>
<p>Although they are both referred to an older Box2D version, they&#8217;ll introduce you to sensor and collisions.</p>
<p>Now the concept is simple: we are placing some circular sensors around the stage (the coins), then we&#8217;ll create a custom contact listener class to check whether the player is over a coin or not. If it&#8217;s over, we&#8217;ll remove the coin.</p>
<p>So this is the main script:<span id="more-2434"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span>.<span style="color: #004993;">Sprite</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">Event</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">KeyboardEvent</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.Shapes.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #004993;">Math</span>.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> ball02 extends <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #009900;">// world creation</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000000; font-weight: bold;">:</span>b2World=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">10.0</span><span style="color: #000000;">&#41;</span>,<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> world_scale<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">30</span>;
		<span style="color: #009900;">// the player</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> player<span style="color: #000000; font-weight: bold;">:</span>b2Body;
		<span style="color: #009900;">// force to apply to the player</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> force<span style="color: #000000; font-weight: bold;">:</span>b2Vec2;
		<span style="color: #009900;">// variables to store whether the keys are pressed or not</span>
		<span style="color: #009900;">// true = pressed;</span>
		<span style="color: #009900;">// false = unpressed</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">left</span>,<span style="color: #004993;">right</span>,up,down<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=<span style="color: #0033ff; font-weight: bold;">false</span>;
		<span style="color: #009900;">// declaring my custom contact listener class</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> contact_listener=<span style="color: #0033ff; font-weight: bold;">new</span> custom_contact_listener<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> ball02<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900;">// assigning the contact listener to the world</span>
			world.SetContactListener<span style="color: #000000;">&#40;</span>contact_listener<span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// calling debug draw function</span>
			debug_draw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// drawing the boundaries</span>
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #000000; font-weight:bold;">500</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;ground&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">200</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;left&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">500</span>,<span style="color: #000000; font-weight:bold;">200</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;right&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">500</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;roof&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// adding the player at 250,200</span>
			add_player<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">200</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// adding some coins</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">1</span>; i<span style="color: #000000; font-weight: bold;">&lt;</span>=<span style="color: #000000; font-weight:bold;">5</span>; i<span style="color: #000000; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				draw_coin<span style="color: #000000;">&#40;</span><span style="color: #004993;">Math</span>.<span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">400</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">50</span>,<span style="color: #004993;">Math</span>.<span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">300</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">50</span>,<span style="color: #004993;">Math</span>.<span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">3</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #009900;">// listeners needed for the game to work</span>
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">ENTER_FRAME</span>, update<span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">stage</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">KeyboardEvent</span>.<span style="color: #004993;">KEY_DOWN</span>,on_key_down<span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">stage</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">KeyboardEvent</span>.<span style="color: #004993;">KEY_UP</span>,on_key_up<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// according to the key pressed, set the proper variable to &quot;true&quot;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> on_key_down<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">KeyboardEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span>e.<span style="color: #004993;">keyCode</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">37</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">left</span>=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">38</span> <span style="color: #000000; font-weight: bold;">:</span>
					up=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">39</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">right</span>=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">40</span> <span style="color: #000000; font-weight: bold;">:</span>
					down=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// according to the key released, set the proper variable to &quot;false&quot;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> on_key_up<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">KeyboardEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span>e.<span style="color: #004993;">keyCode</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">37</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">left</span>=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">38</span> <span style="color: #000000; font-weight: bold;">:</span>
					up=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">39</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">right</span>=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">40</span> <span style="color: #000000; font-weight: bold;">:</span>
					down=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// function to draw a coin</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> draw_coin<span style="color: #000000;">&#40;</span>px,py,r<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_body<span style="color: #000000; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>px<span style="color: #000000; font-weight: bold;">/</span>world_scale, py<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_circle<span style="color: #000000; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span>r<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_fixture<span style="color: #000000; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_fixture.shape=my_circle;
			<span style="color: #009900;">// look! it's a sensor!!</span>
			my_fixture.isSensor=<span style="color: #0033ff; font-weight: bold;">true</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> world_body<span style="color: #000000; font-weight: bold;">:</span>b2Body=world.CreateBody<span style="color: #000000;">&#40;</span>my_body<span style="color: #000000;">&#41;</span>;
			world_body.CreateFixture<span style="color: #000000;">&#40;</span>my_fixture<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// simple function to draw a box</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> draw_box<span style="color: #000000;">&#40;</span>px,py,w,h,<span style="color: #004993;">d</span>,ud<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_body<span style="color: #000000; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>px<span style="color: #000000; font-weight: bold;">/</span>world_scale, py<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">d</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				my_body.<span style="color: #004993;">type</span>=b2Body.b2_dynamicBody;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_box<span style="color: #000000; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_box.SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000; font-weight: bold;">/</span>world_scale, h<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_fixture<span style="color: #000000; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_fixture.shape=my_box;
			<span style="color: #6699cc; font-weight: bold;">var</span> world_body<span style="color: #000000; font-weight: bold;">:</span>b2Body=world.CreateBody<span style="color: #000000;">&#40;</span>my_body<span style="color: #000000;">&#41;</span>;
			world_body.SetUserData<span style="color: #000000;">&#40;</span>ud<span style="color: #000000;">&#41;</span>;
			world_body.CreateFixture<span style="color: #000000;">&#40;</span>my_fixture<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// function to add the player</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> add_player<span style="color: #000000;">&#40;</span>px,py<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_body<span style="color: #000000; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>px<span style="color: #000000; font-weight: bold;">/</span>world_scale, py<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">type</span>=b2Body.b2_dynamicBody;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_circle<span style="color: #000000; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_fixture<span style="color: #000000; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_fixture.shape=my_circle;
			player=world.CreateBody<span style="color: #000000;">&#40;</span>my_body<span style="color: #000000;">&#41;</span>;
			player.CreateFixture<span style="color: #000000;">&#40;</span>my_fixture<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// debug draw</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> debug_draw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debug_draw<span style="color: #000000; font-weight: bold;">:</span>b2DebugDraw = <span style="color: #0033ff; font-weight: bold;">new</span> b2DebugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> debug_sprite<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>debug_sprite<span style="color: #000000;">&#41;</span>;
			debug_draw.SetSprite<span style="color: #000000;">&#40;</span>debug_sprite<span style="color: #000000;">&#41;</span>;
			debug_draw.SetDrawScale<span style="color: #000000;">&#40;</span>world_scale<span style="color: #000000;">&#41;</span>;
			debug_draw.SetFlags<span style="color: #000000;">&#40;</span>b2DebugDraw.e_shapeBit<span style="color: #000000;">&#41;</span>;
			world.SetDebugDraw<span style="color: #000000;">&#40;</span>debug_draw<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// function to be executed at every frame</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> update<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900;">// setting the force to null</span>
			force=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// according to the key(s) pressed, add the proper vector force</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">left</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">right</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>up<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>down<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">5</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #009900;">// if there is any force, then apply it</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>force.<span style="color: #004993;">x</span><span style="color: #000000; font-weight: bold;">||</span>force.<span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				player.ApplyForce<span style="color: #000000;">&#40;</span>force,player.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			world.Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span>;
			world.ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// scanning through all bodies</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> worldbody<span style="color: #000000; font-weight: bold;">:</span>b2Body = world.GetBodyList<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>; worldbody; worldbody = worldbody.GetNext<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #009900;">// if a body is marked as &quot;remove&quot;...</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>worldbody.GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>==<span style="color: #990000;">&quot;remove&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #009900;">// ... just remove it!!</span>
					world.DestroyBody<span style="color: #000000;">&#40;</span>worldbody<span style="color: #000000;">&#41;</span>;
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
			world.DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>Let&#8217;s see the interesting lines:</p>
<p><strong>Line 22</strong>: declaring my <code>contact_listener</code> variable, as <code>custom_contact_listener</code> type</p>
<p><strong>Line 25</strong>: assigning my custom contact listener class to Box2D world</p>
<p><strong>Lines 36-38</strong>: calling five times the <code>draw_coin</code> function passing three parameters: x position, y position and radius.</p>
<p><strong>Lines 79-89</strong>: the draw_coin function&#8230; just a basic function that draw a circle&#8230; just notice at <strong>line 86</strong> how I am declaring the circle as a sensor. This way the circle exists in the world but won&#8217;t physically collide with anything. Also, a sensor should be a static body, or it will fall down outside the stage as it won&#8217;t collide with anything.</p>
<p><strong>Lines 150-156</strong>: scanning through all bodies to find, and eventually remove, bodies marked with <code>remove</code>. Such marker is handled by the custom contact listener class, located in the <code>custom_contact_listener.as</code> file:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.Shapes.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.Joints.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.Contacts.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #004993;">Math</span>.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #9900cc; font-weight: bold;">class</span> custom_contact_listener extends b2ContactListener <span style="color: #000000;">&#123;</span>
		override <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> BeginContact<span style="color: #000000;">&#40;</span>contact<span style="color: #000000; font-weight: bold;">:</span>b2Contact<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900;">// getting the fixtures that collided</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureA<span style="color: #000000; font-weight: bold;">:</span>b2Fixture=contact.GetFixtureA<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> fixtureB<span style="color: #000000; font-weight: bold;">:</span>b2Fixture=contact.GetFixtureB<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// if the fixture is a sensor, mark the parent body to be removed</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>fixtureB.IsSensor<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				fixtureB.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.SetUserData<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;remove&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>fixtureA.IsSensor<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				fixtureA.GetBody<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.SetUserData<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;remove&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p><code>BeginContact</code> function will give us the fixtures involved in the collision. Then at <strong>lines 15-17</strong> and <strong>18-20</strong> I am checking if the fixture is a sensor, then eventually mark its parent body to be removed.</p>
<p><strong>Important</strong>: don&#8217;t try to remove the body inside this function, because bodies have a <code>locked</code> status while they are in the middle of a timestep, so you should remove a body only after you performed the <code>Step</code> (<strong>line 147</strong> of the main file). This gave me a little headache, so you&#8217;ve been warned!</p>
<p>This is the result:</p>
<p><embed src="/wp-content/uploads/2010/02/ball02.swf" allowscriptaccess="always" menu="false" quality="high" width="500" height="400" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Pick up all little circles moving the player tapping on arrow keys.</p>
<p><a href="/wp-content/uploads/2010/02/ball02.zip">Download the source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2010/02/25/box2d-flash-game-creation-tutorial-part-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>11 Flash isometric engines you can use in your games</title>
		<link>http://www.emanueleferonato.com/2010/02/23/11-flash-isometric-engines-you-can-use-in-your-games/</link>
		<comments>http://www.emanueleferonato.com/2010/02/23/11-flash-isometric-engines-you-can-use-in-your-games/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 14:45:02 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>
		<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=2400</guid>
		<description><![CDATA[I am playing isometric games for more than 20 years&#8230; probably started with Q*bert, one of the oldest games I played is Head Over Heels on my Commodore 64, and I was an hardcore player of UFO: Enemy Unknown.
As you should know, isometric projection is a method of visually representing three-dimensional objects in two dimensions, [...]]]></description>
			<content:encoded><![CDATA[<p>I am playing isometric games for more than 20 years&#8230; probably started with <a href="http://en.wikipedia.org/wiki/Q*bert" target = "_blank">Q*bert</a>, one of the oldest games I played is <a href="http://en.wikipedia.org/wiki/Head_Over_Heels_(video_game)" target = "_blank">Head Over Heels</a> on my Commodore 64, and I was an hardcore player of <a href="http://en.wikipedia.org/wiki/UFO:_Enemy_Unknown" target = "_blank">UFO: Enemy Unknown</a>.</p>
<p>As you should know, isometric projection is a method of visually representing three-dimensional objects in two dimensions, in which the three coordinate axes appear equally foreshortened and the angles between any two of them are 120 degrees. A great way to represent 3D worlds on old 8-bit computers since their CPUs did not handle a real 3D world, and a great way to create casual adventure games nowadays.</p>
<p>I am showing you a list of 11 Flash isometric engines, some of them are free, others are commercial, and some still unreleased. I am writing to all authors to have more info about their engines, meanwhile this the most complete list I was able to make.</p>
<p>Engines are listed in alphabetical order.</p>
<p><strong>2D isometric engine</strong> &#8211; Free</p>
<p><a href="http://code.google.com/p/2d-isometric-engine/" target = "_blank">http://code.google.com/p/2d-isometric-engine/</a></p>
<p>Open source, multilevel and multiplayer tilebased isometric engine, reviewed in <a href="http://www.emanueleferonato.com/2009/08/18/as3-isometric-engine/">this post</a></p>
<p><strong>as3isolib</strong> &#8211; Free</p>
<p><img src="/wp-content/uploads/2010/02/engines_as3isolib.jpg" /></p>
<p><a href="http://as3isolib.wordpress.com/" target = "_blank">http://as3isolib.wordpress.com/</a></p>
<p>As3isolib is an open-source ActionScript 3.0 Isometric Library developed to assist in creating isometrically projected content (such as games and graphics) targeted for the Flash player platform. As3isolib includes utilities, primitives and views. As3isolib was developed with simplicity, speed and performance in mind so that developers can focus on actual implementations rather than having to learn a complex API.</p>
<p>You can see latest project using this engine at <a href="http://apps.facebook.com/downtowngame/" target = "_blank">http://apps.facebook.com/downtowngame/</a><span id="more-2400"></span></p>
<p><strong>FFilmation</strong> &#8211; Free</p>
<p><img src="/wp-content/uploads/2010/02/engines_ffilmation.jpg" /></p>
<p><a href="http://www.ffilmation.org/" target ="_blank">http://www.ffilmation.org/</a></p>
<p>The FFilmation Engine is an AS3 isometric programing engine, focused mainly on game development. The aim of the project is providing a robust development platform, where game designers can work on the game’s details and forget about the render engine. It is intended to be really usable from a “real production scenario” point of view.</p>
<p>See a demo playing <a href="http://www.ffilmation.org/mynameisponcho/" target = "_blank">My Name is Poncho</a></p>
<p><strong>Flash 3D Isometric Game Engine</strong> &#8211; Unreleased</p>
<p><a href="http://actionscripter.co.uk/blog/?page_id=76" target = "_blank">http://actionscripter.co.uk/blog/?page_id=76</a></p>
<p>Vector isometric engine allowing to zoom, rotate and pan the environment in a &#8220;real&#8221; 3D world. I&#8217;m asking the author more information, stay tuned</p>
<p><strong>isoengineas3</strong> &#8211; Free</p>
<p><a href="http://isoengineas3.sourceforge.net/" target = "_blank">http://isoengineas3.sourceforge.net/</a></p>
<p>2D Isometric Engine project build with Flash AS3. It is an open source, multilevel and multiplayer tilebased isometric engine. No more information.</p>
<p><strong>Isometric Game Engine</strong> &#8211; Unreleased</p>
<p><a href="http://www.davidworks.com/?id=int_iso" target = "_blank">http://www.davidworks.com/?id=int_iso</a></p>
<p>An isometric engine built from scratch for an online virtual campus. No more info.</p>
<p>The <a href="http://www.davidworks.com/content/int_iso/core.htm">demo</a> is quite interesting so I am going to contact the author for more information.</p>
<p><strong>Isometric terrain engine</strong> &#8211; Free</p>
<p><a href="http://yaief.wordpress.com/2008/12/05/isometric-terrain-engine/" target = "_blank">http://yaief.wordpress.com/2008/12/05/isometric-terrain-engine/</a></p>
<p>This is an isometric terrain generator, actually an abandoned project but still an inspiration.</p>
<p><strong>OpenSpace</strong> &#8211; Commercial &#8211; Trial version available</p>
<p><img src="/wp-content/uploads/2010/02/engines_openspace.jpg" /></p>
<p><a href="http://www.openspace-engine.com/">http://www.openspace-engine.com/</a></p>
<p>OpenSpace is a powerful Flash based isometric engine and framework for rapid development of multi-user virtual worlds and MMO communities.</p>
<p>Check <a href="http://www.footballvillage.net/" target ="_blank">Football Village</a> to see it in action.</p>
<p>OpenSpace is licensed on a &#8220;per-seat&#8221; basis: a separate license is required for each user working with OpenSpace.</p>
<p><strong>Sean Cooper Isometric Engine</strong> &#8211; Commercial</p>
<p><a href="http://www.games.seantcooper.com/IsometricEngine.aspx" target ="_blank">http://www.games.seantcooper.com/IsometricEngine.aspx</a></p>
<p>Made by Sean &#8220;BoxHead&#8221; Cooper, the engine is based on some techniques used in the PC game Syndicate, which he wrote in 1993. The technique is simple and extremely fast, well suited to Flash and will run fast on most machines.</p>
<p>At the moment there isn&#8217;t any project showcase, just a demo in the <a href="http://www.games.seantcooper.com/IsometricEngine.aspx" target ="_blank">official page</a>, and no info about the license, but being developed by a PROgrammer like Sean makes this engine quite interesting.</p>
<p><strong>TheoWorlds</strong> &#8211; Commercial</p>
<p><img src="/wp-content/uploads/2010/02/engines_theoworlds.jpg" /></p>
<p><a href="http://www.theoworlds.com/products.php">http://www.theoworlds.com/products.php</a></p>
<p>TheoWorlds Builder SDK v2 is a kit that will help you develop online virtual worlds much faster, without starting from scratch. At its core it contains the original Theo Isometric Engine™ that lets you create pseudo-3D maps, place on them objects and characters, and organize the interaction between them.</p>
<p>You can test the engine playing <a href="http://www.theoworlds.com/games/th/" target = "_blank">Treasure Hunter</a></p>
<p>TheoWorlds Builder SDK v2 is priced $3,200, while the light SDK v1 $799</p>
<p><strong>T.I.L.E. (Tangerine Isometric Level Editor)</strong> &#8211; Commercial</p>
<p><img src="/wp-content/uploads/2010/02/engines_tangerine.jpg" /></p>
<p><a href="http://www.tangerinepop.com/" target ="_blank">http://www.tangerinepop.com/</a> then click on &#8220;tech&#8221;</p>
<p>According to the site, T.I.L.E. provides the ability to rapidly build a standard lock &#038; key adventure game with hundreds of rooms. It also provides the primary software framework needed to build a quality MMO with numerous maps and new play modes via in increasing list of new game mechanics.</p>
<p>An example of a game developed with this technology is <a href="http://www.tangerinepop.com/GraveShift/" target = "_blank">GraveShift</a></p>
<p>Prices range from (as said on the site) &#8220;half to less than half the costs of building it yourself&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2010/02/23/11-flash-isometric-engines-you-can-use-in-your-games/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Monetize your Flash games with GamesChart</title>
		<link>http://www.emanueleferonato.com/2010/02/23/monetize-your-flash-games-with-gameschart/</link>
		<comments>http://www.emanueleferonato.com/2010/02/23/monetize-your-flash-games-with-gameschart/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 22:23:00 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>
		<category><![CDATA[Monetize]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Users contributions]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=2403</guid>
		<description><![CDATA[Do you remember Emanuele Ornella from Mind the Move? It&#8217;s the guy behind the Come2Play multiplayer API tutorial posted about a month ago.
Now he is explaining us a new way to monetize Flash games: GamesChart
&#171; When I first saw the announcement on Flash Game Developers group on www.linkedIn.com about the GamesChart beta program I immediately [...]]]></description>
			<content:encoded><![CDATA[<p>Do you remember <strong>Emanuele Ornella</strong> from <a target = "_blank" href="http://www.mindthemove.com/">Mind the Move</a>? It&#8217;s the guy behind the <a href="http://www.emanueleferonato.com/2010/01/14/come2play-multiplayer-api-tutorial/">Come2Play multiplayer API tutorial</a> posted about a month ago.</p>
<p>Now he is explaining us a new way to monetize Flash games: <strong><a href="http://gameschart.com/" target = "_blank">GamesChart</a></strong></p>
<p>&laquo; When I first saw the announcement on <a href="http://www.linkedin.com/groups?home=&#038;gid=121017" target = "_blank">Flash Game Developers group</a> on www.linkedIn.com about the <strong><a href="http://gameschart.com/" target = "_blank">GamesChart</a></strong> beta program I immediately thought to participate. It was a surprise to me to find that my game <a href="http://gameschart.com/games/Haunted-House" target = "_blank">Haunted House</a> was at first position for the entire 4 weeks of the beta program!</p>
<p>Actually also my <a href="http://gameschart.com/games/Alice-Memory-1" target = "_blank">Alice Memory</a> game is also on the chart, even if never more than in the 6th position.</p>
<p><img src="/wp-content/uploads/2010/02/gc01.jpg" /></p>
<p>What <strong><a href="http://gameschart.com/" target = "_blank">GamesChart</a></strong> is about?</p>
<p>It’s another way to generate money from you Flash games. The nice thing is that it is not an alternative to the traditional banner you place during the loading of the game. But it goes together.<br />
The main idea is to have publisher to “bid” for which game will be in the chart and this will generate extra revenue to the developer, to the publisher who correctly bid and of course to the GamesChart organization.</p>
<p>This is from <strong>Barry White</strong> directly from linkedIn group.<span id="more-2403"></span></p>
<p>I thought I&#8217;d include some more information about how GamesChart can earn developers money:</p>
<p>+ Every game that has the GamesChart API embedded in it is tracked by GamesChart.</p>
<p>+ The developer can also choose to enable or disable a series of dynamic charts that actually display within the Flash game itself.</p>
<p>+ The most popular games each week make their way to the top of the charts.</p>
<p>+ Any gamers who click on a game listed in these charts is taken to play that game on another portal.</p>
<p>+ Publishers use an advanced pay per click bidding system to purchase this traffic and drive users back to their own sites to play the games they have bid on.</p>
<p>+ Games need to be uploaded to the Publishers portal before they can receive traffic. (great for seeding)</p>
<p>+ Developers receive up to a 50% revenue share of any outbound clicks generated from within their game should they choose to display the charts. (also full blacklisting available)</p>
<p>+ Publishers also receive 10% of total revenues generated from any GamesChart enabled games featured on their site.</p>
<p>I am going to explain the very easy steps to follow to have a game added to this GamesChart.</p>
<p>In order to do so I am going to provide my other game <a href="http://gameschart.com/games/Tokyo-Train" target = "_blank">Tokyo Train</a> with this service as well.</p>
<p>First thing you need to register as developer, if you don’t already. This is quite easy to do, just follow instruction on the site.</p>
<p>You then are prompted to add a game:</p>
<p><img src="/wp-content/uploads/2010/02/gc02.jpg" /></p>
<p>So do not hesitate: go to click the button and create the new game:</p>
<p><img src="/wp-content/uploads/2010/02/gc03.jpg" /></p>
<p>Instructions are easy and nice to follow: I have to admit they did a very good job on make your job easy.</p>
<p><img src="/wp-content/uploads/2010/02/gc04.jpg" /></p>
<p>You are now prompted with the game id that you need to put on the component property to have your game identified.<br />
Of course first of all you need to download the API library from the <a href="http://wiki.gameschart.com/index.php/Getting_Started" target = "_blank">“GamesChart Wiki” link</a>.</p>
<p>You have the choice to get the component for Adobe Flash IDE or the complete API if you use FlashDevelop and for both choices you can choose between AS3 and AS2. My choice was for the component and AS3.</p>
<p>The very first time you download the zip pack, you need to double click on the GamesChartAPI-AS3.mpx:</p>
<p><img src="/wp-content/uploads/2010/02/gc05.jpg" /></p>
<p>This will install the component, and that’s the only thing you really need to install: brilliant.</p>
<p>Now open your FLA and browse for the components (Windows > Components menu): you will find the GamesChartAPI one.</p>
<p><img src="/wp-content/uploads/2010/02/gc06.jpg" /></p>
<p>Now, again it’s easy: drag and drop the component onto the stage (better if at the top layer):</p>
<p><img src="/wp-content/uploads/2010/02/gc07.jpg" /></p>
<p>Do not worry about the position: it will be hidden once the game starts. Do you remember the game id? Go to grab it and paste it in the component inspector:</p>
<p><img src="/wp-content/uploads/2010/02/gc08.jpg" /></p>
<p>That’s all! You can now publish the game: you will notice a small G icon on top right of the stage.</p>
<p>You can force to have this cute icon can be hidden or display when you want. Or you can also move it.</p>
<p>I would suggest you to leave it for the entire game and in that position: it’s the best position, just adjust your buttons if you have any conflict.</p>
<p>In this way a player can click on the icon anytime during the game. This will let him vote your game and show chart. In fact when the icon is clicked the chart will appear and will let you open a new window with the games on the list.</p>
<p><img src="/wp-content/uploads/2010/02/gc09.jpg" /></p>
<p>You need one more thing: to publish the game. You can get your SWF file or you can first upload on MochiAds with version control as I am doing. This is the best solution because your game will be updated all over the world with the cute G icon.<br />
That’s all!<br />
Enjoy!</p>
<p>PS.: I just discovered that Haunted House is no more on first position! So let’s go there and click the cute “G” icon!! &raquo;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2010/02/23/monetize-your-flash-games-with-gameschart/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Box2D Flash game creation tutorial &#8211; part 1</title>
		<link>http://www.emanueleferonato.com/2010/02/19/box2d-flash-game-creation-tutorial-part-1/</link>
		<comments>http://www.emanueleferonato.com/2010/02/19/box2d-flash-game-creation-tutorial-part-1/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 00:16:24 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=2395</guid>
		<description><![CDATA[My first Flash game tutorial ever was Flash game creation tutorial – part 1.
It was the first of a series to create a game like jmtb&#8217;s ball games. It was an old AS2 series, and some steps have been ported in AS3 with Create a Flash ball game using AS3.
The &#8220;ball&#8221; game is so simple [...]]]></description>
			<content:encoded><![CDATA[<p>My first Flash game tutorial ever was <a href="http://www.emanueleferonato.com/2006/10/29/flash-game-creation-tutorial-part-1/">Flash game creation tutorial – part 1</a>.</p>
<p>It was the first of a series to create a game like <a href="http://jmtb02.com/" target = "_blank">jmtb</a>&#8217;s ball games. It was an old AS2 series, and some steps have been ported in AS3 with <a href="http://www.emanueleferonato.com/2008/03/24/create-a-flash-ball-game-using-as3/">Create a Flash ball game using AS3</a>.</p>
<p>The &#8220;ball&#8221; game is so simple yet addictive and customizable that I think it&#8217;s the perfect game to start a tutorial series based on a new language.</p>
<p>This time I am not covering a new language but the famous Box2D library, but I am going to add all necessary features to make it an interesting game to play.</p>
<p>In this first chapter, I am going to create the ball and the way you control it, by tapping arrow keys.</p>
<p>I am using the basics of <a href="http://www.emanueleferonato.com/2010/02/16/understanding-box2d-applicable-forces/">Understanding Box2D applicable forces</a> and <a href="http://www.emanueleferonato.com/2010/02/01/box2d-tutorial-for-the-absolute-beginners-revamped/">Box2D tutorial for the absolute beginners – revamped</a>, which I recommend you to read.</p>
<p>Now this is the code:<span id="more-2395"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span>.<span style="color: #004993;">Sprite</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">Event</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">KeyboardEvent</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.Shapes.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #004993;">Math</span>.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> ball01 extends <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #009900;">// world creation</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000000; font-weight: bold;">:</span>b2World=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">10.0</span><span style="color: #000000;">&#41;</span>,<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> world_scale<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">30</span>;
		<span style="color: #009900;">// the player</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> player<span style="color: #000000; font-weight: bold;">:</span>b2Body;
		<span style="color: #009900;">// force to apply to the player</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> force<span style="color: #000000; font-weight: bold;">:</span>b2Vec2;
		<span style="color: #009900;">// variables to store whether the keys are pressed or not</span>
		<span style="color: #009900;">// true = pressed;</span>
		<span style="color: #009900;">// false = unpressed</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">left</span>,<span style="color: #004993;">right</span>,up,down<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span>=<span style="color: #0033ff; font-weight: bold;">false</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> ball01<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900;">// calling thebug draw function</span>
			debug_draw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// drawing the boundaries</span>
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #000000; font-weight:bold;">500</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;ground&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">200</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;left&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">500</span>,<span style="color: #000000; font-weight:bold;">200</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;right&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">500</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;roof&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// adding the player at 250,200</span>
			<span style="color: #009900;">// some listeners</span>
			add_player<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">200</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">ENTER_FRAME</span>, update<span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">stage</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">KeyboardEvent</span>.<span style="color: #004993;">KEY_DOWN</span>,on_key_down<span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">stage</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">KeyboardEvent</span>.<span style="color: #004993;">KEY_UP</span>,on_key_up<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// according to the key pressed, set the proper variable to &quot;true&quot;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> on_key_down<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">KeyboardEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span>e.<span style="color: #004993;">keyCode</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">37</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">left</span>=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">38</span> <span style="color: #000000; font-weight: bold;">:</span>
					up=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">39</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">right</span>=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">40</span> <span style="color: #000000; font-weight: bold;">:</span>
					down=<span style="color: #0033ff; font-weight: bold;">true</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// according to the key released, set the proper variable to &quot;false&quot;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> on_key_up<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">KeyboardEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span>e.<span style="color: #004993;">keyCode</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">37</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">left</span>=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">38</span> <span style="color: #000000; font-weight: bold;">:</span>
					up=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">39</span> <span style="color: #000000; font-weight: bold;">:</span>
					<span style="color: #004993;">right</span>=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">40</span> <span style="color: #000000; font-weight: bold;">:</span>
					down=<span style="color: #0033ff; font-weight: bold;">false</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// simple function to draw a box</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> draw_box<span style="color: #000000;">&#40;</span>px,py,w,h,<span style="color: #004993;">d</span>,ud<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_body<span style="color: #000000; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>px<span style="color: #000000; font-weight: bold;">/</span>world_scale, py<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">d</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				my_body.<span style="color: #004993;">type</span>=b2Body.b2_dynamicBody;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_box<span style="color: #000000; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_box.SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000; font-weight: bold;">/</span>world_scale, h<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_fixture<span style="color: #000000; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_fixture.shape=my_box;
			<span style="color: #6699cc; font-weight: bold;">var</span> world_body<span style="color: #000000; font-weight: bold;">:</span>b2Body=world.CreateBody<span style="color: #000000;">&#40;</span>my_body<span style="color: #000000;">&#41;</span>;
			world_body.SetUserData<span style="color: #000000;">&#40;</span>ud<span style="color: #000000;">&#41;</span>;
			world_body.CreateFixture<span style="color: #000000;">&#40;</span>my_fixture<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// function to add the player</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> add_player<span style="color: #000000;">&#40;</span>px,py<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_body<span style="color: #000000; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>px<span style="color: #000000; font-weight: bold;">/</span>world_scale, py<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">type</span>=b2Body.b2_dynamicBody;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_circle<span style="color: #000000; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_fixture<span style="color: #000000; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_fixture.shape=my_circle;
			player=world.CreateBody<span style="color: #000000;">&#40;</span>my_body<span style="color: #000000;">&#41;</span>;
			player.CreateFixture<span style="color: #000000;">&#40;</span>my_fixture<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// debug draw</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> debug_draw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debug_draw<span style="color: #000000; font-weight: bold;">:</span>b2DebugDraw = <span style="color: #0033ff; font-weight: bold;">new</span> b2DebugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> debug_sprite<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>debug_sprite<span style="color: #000000;">&#41;</span>;
			debug_draw.SetSprite<span style="color: #000000;">&#40;</span>debug_sprite<span style="color: #000000;">&#41;</span>;
			debug_draw.SetDrawScale<span style="color: #000000;">&#40;</span>world_scale<span style="color: #000000;">&#41;</span>;
			debug_draw.SetFlags<span style="color: #000000;">&#40;</span>b2DebugDraw.e_shapeBit<span style="color: #000000;">&#41;</span>;
			world.SetDebugDraw<span style="color: #000000;">&#40;</span>debug_draw<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #009900;">// functiojn to be executed at every frame</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> update<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #009900;">// setting the force to null</span>
			force=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// according to the key(s) pressed, add the proper vector force</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">left</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">right</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>up<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>down<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				force.Add<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">5</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #009900;">// if there is any force, then apply it</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>force.<span style="color: #004993;">x</span><span style="color: #000000; font-weight: bold;">||</span>force.<span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				player.ApplyForce<span style="color: #000000;">&#40;</span>force,player.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			world.Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span>;
			world.ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			world.DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>As you can see, I did not change that much from <a href="http://www.emanueleferonato.com/2010/02/16/understanding-box2d-applicable-forces/">Understanding Box2D applicable forces</a> and <a href="http://www.emanueleferonato.com/2010/02/01/box2d-tutorial-for-the-absolute-beginners-revamped/">Box2D tutorial for the absolute beginners – revamped</a>.</p>
<p><code>draw_circle </code> function at <strong>lines 19-30</strong> in <a href="http://www.emanueleferonato.com/2010/02/01/box2d-tutorial-for-the-absolute-beginners-revamped/">Box2D tutorial for the absolute beginners – revamped</a> now is called add_player (<strong>lines 86-95</strong>) and places a circle in the (<code>px</code>,<code>py</code>) coordinates.</p>
<p>The body is named <code>player</code> and is declared in the class at <strong>line 14</strong>, then is used at <strong>line 125</strong> to have the force applied with ApplyForce explained at <a href="http://www.emanueleferonato.com/2010/02/16/understanding-box2d-applicable-forces/">Understanding Box2D applicable forces</a>.</p>
<p>Notice how different forces are applied according to the arrow key pressed&#8230; playing with these values will change the gameplay&#8230; which values would you use?</p>
<p>This is the result:</p>
<p><embed src="/wp-content/uploads/2010/02/ball01.swf" allowscriptaccess="always" menu="false" quality="high" width="500" height="400" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Tap arrow keys to move the ball.</p>
<p><a href="/wp-content/uploads/2010/02/ball01.zip">Download the source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2010/02/19/box2d-flash-game-creation-tutorial-part-1/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Understanding Box2D applicable forces</title>
		<link>http://www.emanueleferonato.com/2010/02/16/understanding-box2d-applicable-forces/</link>
		<comments>http://www.emanueleferonato.com/2010/02/16/understanding-box2d-applicable-forces/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 12:19:07 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=2378</guid>
		<description><![CDATA[In Box2d, bodies aren&#8217;t only affected by gravity and collisions, but you can also apply forces to them.
Knowing the right force to apply is very important when you want to control a body, as you may want to do in a Flash game
Let&#8217;s see the forces you can apply:
Applying a force
public function ApplyForce(force:b2Vec2, point:b2Vec2):void
Apply a [...]]]></description>
			<content:encoded><![CDATA[<p>In Box2d, bodies aren&#8217;t only affected by gravity and collisions, but you can also apply forces to them.</p>
<p>Knowing the right force to apply is very important when you want to control a body, as you may want to do in a Flash game</p>
<p>Let&#8217;s see the forces you can apply:</p>
<p><strong>Applying a force</strong></p>
<p><code>public function ApplyForce(force:b2Vec2, point:b2Vec2):void</code></p>
<p>Apply a force at a world point. If the force is not applied at the center of mass, it will generate a torque and affect the angular velocity. This wakes up the body, so you don&#8217;t have to wake it up by yourself.</p>
<p>The force is applied inNewtons (N). </p>
<p><strong>Applying an impulse</strong></p>
<p><code>public function ApplyImpulse(impulse:b2Vec2, point:b2Vec2):void</code></p>
<p>Apply an impulse at a point. This immediately modifies the velocity. It also modifies the angular velocity if the point of application is not at the center of mass. This wakes up the body, so you don&#8217;t have to wake it up by yourself.</p>
<p>The impulse is applied in Newton-seconds or kg-m/s. </p>
<p><strong>Setting a linear velocity</strong></p>
<p><code>public function SetLinearVelocity(v:b2Vec2):void</code></p>
<p>Set the linear velocity of the center of mass. This function will <strong>not</strong> work if the body is sleeping, so you must wake it up with <code>SetAwake</code> before applying the velocity.</p>
<p><strong>What force should I apply?</strong></p>
<p>You should choose the force according to the result you want to achieve. Let&#8217;s suppose you want to apply a vertical force, to make something jump in the air, and let&#8217;s suppose you can apply the force at any time, even when you just applied it.</p>
<p>You will have three cases:</p>
<p><strong>Applying the force when the body is not moving</strong>: this happens when you apply the force when the body lies on the ground or when it&#8217;s in the air, in the moment it finished its &#8220;jumping&#8221; speed and it&#8217;s about to fall down. In this case there aren&#8217;t any noticeable difference among applied forces.</p>
<p><strong>Applying the force when the body is moving up</strong>: this happens when the body is in the air and still has &#8220;jumping&#8221; speed. In this case, applying a force or an impulse will sum the &#8220;jumping&#8221; speed to the applied force to produce a &#8220;boost&#8221;, while setting the velocity again will just apply the velocity again, no matter the &#8220;jumping speed&#8221;</p>
<p><strong>Applying the force when the body is falling down</strong>: this happens when the body finished its &#8220;jumping&#8221; speed and it&#8217;s falling down. As in the previous case, applying a force or an impulse will sum the falling speed to the applied force, and according to falling speed and applied force, the body will continue falling or jump a little (how little? the difference between the falling force and the applied one). Setting the velocity will just stop the body to fall and make it jumping again, no matter of the falling speed.<span id="more-2378"></span></p>
<p><strong>The script</strong></p>
<p>This script will generate three tiny boxes. The left one is moved with a force, the middle one with an impulse, and the third one with a set velocity. You will apply forces clicking the mouse</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span>.<span style="color: #004993;">Sprite</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">Event</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">MouseEvent</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.Shapes.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #004993;">Math</span>.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> forces extends <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000000; font-weight: bold;">:</span>b2World=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">10.0</span><span style="color: #000000;">&#41;</span>,<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> world_scale<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">30</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> forces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			debug_draw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #000000; font-weight:bold;">500</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">false</span>,<span style="color: #990000;">&quot;ground&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">100</span>,<span style="color: #000000; font-weight:bold;">100</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">true</span>,<span style="color: #990000;">&quot;left&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span>,<span style="color: #000000; font-weight:bold;">100</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">true</span>,<span style="color: #990000;">&quot;middle&quot;</span><span style="color: #000000;">&#41;</span>;
			draw_box<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">400</span>,<span style="color: #000000; font-weight:bold;">100</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #0033ff; font-weight: bold;">true</span>,<span style="color: #990000;">&quot;right&quot;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">ENTER_FRAME</span>, update<span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">stage</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">CLICK</span>,applyforces<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> draw_box<span style="color: #000000;">&#40;</span>px,py,w,h,<span style="color: #004993;">d</span>,ud<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_body<span style="color: #000000; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_body.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>px<span style="color: #000000; font-weight: bold;">/</span>world_scale, py<span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">d</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				my_body.<span style="color: #004993;">type</span>=b2Body.b2_dynamicBody;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> my_box<span style="color: #000000; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_box.SetAsBox<span style="color: #000000;">&#40;</span>w<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000; font-weight: bold;">/</span>world_scale, h<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000; font-weight: bold;">/</span>world_scale<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> my_fixture<span style="color: #000000; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			my_fixture.shape=my_box;
			<span style="color: #6699cc; font-weight: bold;">var</span> world_body<span style="color: #000000; font-weight: bold;">:</span>b2Body=world.CreateBody<span style="color: #000000;">&#40;</span>my_body<span style="color: #000000;">&#41;</span>;
			world_body.SetUserData<span style="color: #000000;">&#40;</span>ud<span style="color: #000000;">&#41;</span>;
			world_body.CreateFixture<span style="color: #000000;">&#40;</span>my_fixture<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> debug_draw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> debug_draw<span style="color: #000000; font-weight: bold;">:</span>b2DebugDraw = <span style="color: #0033ff; font-weight: bold;">new</span> b2DebugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> debug_sprite<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>debug_sprite<span style="color: #000000;">&#41;</span>;
			debug_draw.SetSprite<span style="color: #000000;">&#40;</span>debug_sprite<span style="color: #000000;">&#41;</span>;
			debug_draw.SetDrawScale<span style="color: #000000;">&#40;</span>world_scale<span style="color: #000000;">&#41;</span>;
			debug_draw.SetFlags<span style="color: #000000;">&#40;</span>b2DebugDraw.e_shapeBit<span style="color: #000000;">&#41;</span>;
			world.SetDebugDraw<span style="color: #000000;">&#40;</span>debug_draw<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> applyforces<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> force<span style="color: #000000; font-weight: bold;">:</span>b2Vec2;
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> worldbody<span style="color: #000000; font-weight: bold;">:</span>b2Body = world.GetBodyList<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>; worldbody; worldbody = worldbody.GetNext<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span>worldbody.GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #990000;">&quot;left&quot;</span> <span style="color: #000000; font-weight: bold;">:</span>
						force=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">450</span><span style="color: #000000;">&#41;</span>;
						worldbody.ApplyForce<span style="color: #000000;">&#40;</span>force,worldbody.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
						<span style="color: #0033ff; font-weight: bold;">break</span>;
					<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #990000;">&quot;middle&quot;</span> <span style="color: #000000; font-weight: bold;">:</span>
						force=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">15</span><span style="color: #000000;">&#41;</span>;
						worldbody.ApplyImpulse<span style="color: #000000;">&#40;</span>force,worldbody.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
						<span style="color: #0033ff; font-weight: bold;">break</span>;
					<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #990000;">&quot;right&quot;</span> <span style="color: #000000; font-weight: bold;">:</span>
						force=<span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">15</span><span style="color: #000000;">&#41;</span>;
						worldbody.SetAwake<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span>;
						worldbody.SetLinearVelocity<span style="color: #000000;">&#40;</span>force<span style="color: #000000;">&#41;</span>;
						<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> update<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			world.Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span>;
			world.ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			world.DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>And this is the result:</p>
<p><embed src="/wp-content/uploads/2010/02/forces.swf" allowscriptaccess="always" menu="false" quality="high" width="500" height="400" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Apply forces by clicking the mouse in various times, to see the difference among <code>ApplyForce</code>, <code>ApplyImpulse</code> and <code>SetLinearVelocity</code>.</p>
<p><a href="/wp-content/uploads/2010/02/forces.zip">Download the source code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2010/02/16/understanding-box2d-applicable-forces/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Flash AS3 Pixel based circle collision engine</title>
		<link>http://www.emanueleferonato.com/2010/02/13/flash-as3-pixel-based-circle-collision-engine/</link>
		<comments>http://www.emanueleferonato.com/2010/02/13/flash-as3-pixel-based-circle-collision-engine/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 23:37:07 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Game design]]></category>
		<category><![CDATA[Users contributions]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=2368</guid>
		<description><![CDATA[After seeing the Lineball video teaser I got some email asking me how did I make the hollow circle with Box2D, and how to get a smooth drawing using box primitives.
Well, I have to say I didn&#8217;t use Box2d, but another library called Collision Detection Kit.
I&#8217;ll publish some tutorial about it once I&#8217;ll complete the [...]]]></description>
			<content:encoded><![CDATA[<p>After seeing the <a href="http://www.emanueleferonato.com/2010/02/11/lineball-video-teaser/">Lineball video teaser</a> I got some email asking me how did I make the hollow circle with Box2D, and how to get a smooth drawing using box primitives.</p>
<p>Well, I have to say I didn&#8217;t use Box2d, but another library called <a href="http://www.coreyoneil.com/portfolio/index.php?project=5" target = "_blank">Collision Detection Kit</a>.</p>
<p>I&#8217;ll publish some tutorial about it once I&#8217;ll complete the game, but it&#8217;s not the point of today&#8217;s post.</p>
<p>A reader from Argentina, <strong>Adolfo Chacon</strong>, sent me an AS3 basic engine to do the same thing (maybe even better) using the concepts I explained soooooo long ago in the <a href="http://www.emanueleferonato.com/2007/01/08/create-a-flash-draw-game-like-line-rider-or-others-part-1/">Create a flash draw game like Line Rider or others</a> series.</p>
<p>It&#8217;s a basic, uncommented script because it&#8217;s just a prototype&#8230; basically Adolfo took my old script, adjusted trigonometry and did the magic dividing the simulation in steps to manage slower speeds.</p>
<p>I resized it, changed variable names (translating from spanish) and some operators since the auto format option gave me errors when trying to format <code>a&lt;-b</code>, forcing me to change into <code>a&lt;b*-1</code>.</p>
<p>Now enjoy the script<span id="more-2368"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span>.<span style="color: #004993;">Sprite</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">Event</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">MouseEvent</span>;
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> pixel_engine extends <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> ball_radius<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> precision<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">120</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> degrees_to_radians<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.0174532925</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> x_speed<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> y_speed<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> friction<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.9</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> max_speed<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">15</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> gravity<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0.98</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> steps=<span style="color: #000000; font-weight:bold;">2</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> ball<span style="color: #000000; font-weight: bold;">:</span>ball_mc = <span style="color: #0033ff; font-weight: bold;">new</span> ball_mc<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> terrain<span style="color: #000000; font-weight: bold;">:</span>terrain_mc = <span style="color: #0033ff; font-weight: bold;">new</span> terrain_mc<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> pixel_engine<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>ball<span style="color: #000000;">&#41;</span>;
			ball.<span style="color: #004993;">x</span>=<span style="color: #000000; font-weight:bold;">250</span>;
			ball_radius=ball.<span style="color: #004993;">width</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">2</span>;
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>terrain<span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">ENTER_FRAME</span>, update<span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">stage</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">MOUSE_DOWN</span>, reverse_gravity<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> reverse_gravity<span style="color: #000000;">&#40;</span>event<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			gravity<span style="color: #000000; font-weight: bold;">*</span>=<span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> update<span style="color: #000000;">&#40;</span>e <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>ball.y<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight:bold;">400</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				ball.y<span style="color: #000000; font-weight: bold;">-</span>=<span style="color: #000000; font-weight:bold;">400</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>ball.y<span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				ball.<span style="color: #004993;">y</span><span style="color: #000000; font-weight: bold;">+</span>=<span style="color: #000000; font-weight:bold;">400</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> j<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">1</span>; j<span style="color: #000000; font-weight: bold;">&lt;</span>=steps; j<span style="color: #000000; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> number_of_collisions<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">0</span>;
				<span style="color: #6699cc; font-weight: bold;">var</span> sum_x_collision<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0</span>;
				<span style="color: #6699cc; font-weight: bold;">var</span> sum_y_collision<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">0</span>;
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>x_speed<span style="color: #000000; font-weight: bold;">&gt;</span>max_speed<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					x_speed=max_speed;
				<span style="color: #000000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>x_speed<span style="color: #000000; font-weight: bold;">&lt;</span>max_speed<span style="color: #000000; font-weight: bold;">*-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						x_speed=<span style="color: #000000; font-weight: bold;">-</span> max_speed;
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>y_speed<span style="color: #000000; font-weight: bold;">&gt;</span>max_speed<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					y_speed=max_speed;
				<span style="color: #000000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;">else</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>y_speed<span style="color: #000000; font-weight: bold;">&lt;</span>max_speed<span style="color: #000000; font-weight: bold;">*-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						y_speed=<span style="color: #000000; font-weight: bold;">-</span> max_speed;
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
				ball.<span style="color: #004993;">x</span>=ball.<span style="color: #004993;">x</span><span style="color: #000000; font-weight: bold;">+</span>x_speed<span style="color: #000000; font-weight: bold;">/</span>steps;
				ball.<span style="color: #004993;">y</span>=ball.<span style="color: #004993;">y</span><span style="color: #000000; font-weight: bold;">+</span>y_speed<span style="color: #000000; font-weight: bold;">/</span>steps;
				y_speed=y_speed<span style="color: #000000; font-weight: bold;">+</span>gravity<span style="color: #000000; font-weight: bold;">/</span>steps;
				<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>=<span style="color: #000000; font-weight:bold;">1</span>; i<span style="color: #000000; font-weight: bold;">&lt;</span>=precision; i<span style="color: #000000; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> x_test<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=ball.<span style="color: #004993;">x</span><span style="color: #000000; font-weight: bold;">+</span>ball_radius<span style="color: #000000; font-weight: bold;">*</span><span style="color: #004993;">Math</span>.<span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>i<span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">360</span><span style="color: #000000; font-weight: bold;">/</span>precision<span style="color: #000000; font-weight: bold;">*</span>degrees_to_radians<span style="color: #000000;">&#41;</span>;
					<span style="color: #6699cc; font-weight: bold;">var</span> y_test<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=ball.y<span style="color: #000000; font-weight: bold;">-</span>ball_radius<span style="color: #000000; font-weight: bold;">*</span><span style="color: #004993;">Math</span>.<span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>i<span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">360</span><span style="color: #000000; font-weight: bold;">/</span>precision<span style="color: #000000; font-weight: bold;">*</span>degrees_to_radians<span style="color: #000000;">&#41;</span>;
					<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>terrain.<span style="color: #004993;">hitTestPoint</span><span style="color: #000000;">&#40;</span>x_test,y_test,<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						number_of_collisions<span style="color: #000000; font-weight: bold;">++</span>;
						sum_x_collision=sum_x_collision<span style="color: #000000; font-weight: bold;">+</span>x_test;
						sum_y_collision=sum_y_collision<span style="color: #000000; font-weight: bold;">+</span>y_test;
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
				<span style="color: #6699cc; font-weight: bold;">var</span> average_x<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=sum_x_collision<span style="color: #000000; font-weight: bold;">/</span>number_of_collisions;
				<span style="color: #6699cc; font-weight: bold;">var</span> average_y<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=sum_y_collision<span style="color: #000000; font-weight: bold;">/</span>number_of_collisions;
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>number_of_collisions<span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #6699cc; font-weight: bold;">var</span> collision_angle<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span>.<span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>ball.x<span style="color: #000000; font-weight: bold;">-</span>average_x,ball.y<span style="color: #000000; font-weight: bold;">-</span>average_y<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">/</span>degrees_to_radians<span style="color: #000000; font-weight: bold;">*-</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">90</span>;
					<span style="color: #6699cc; font-weight: bold;">var</span> collision_x<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = ball.<span style="color: #004993;">x</span> <span style="color: #000000; font-weight: bold;">-</span> ball_radius <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #004993;">Math</span>.<span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>collision_angle <span style="color: #000000; font-weight: bold;">+</span> <span style="color: #000000; font-weight:bold;">90</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">*</span> degrees_to_radians<span style="color: #000000;">&#41;</span>;
					<span style="color: #6699cc; font-weight: bold;">var</span> collision_y<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = ball.<span style="color: #004993;">y</span> <span style="color: #000000; font-weight: bold;">+</span> ball_radius <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #004993;">Math</span>.<span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>collision_angle <span style="color: #000000; font-weight: bold;">+</span> <span style="color: #000000; font-weight:bold;">90</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">*</span> degrees_to_radians<span style="color: #000000;">&#41;</span>;
					<span style="color: #6699cc; font-weight: bold;">var</span> delta_x<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000;">&#40;</span>collision_x <span style="color: #000000; font-weight: bold;">-</span> ball.<span style="color: #004993;">x</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">/</span> ball_radius <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span>;
					<span style="color: #6699cc; font-weight: bold;">var</span> delta_y<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000;">&#40;</span>collision_y <span style="color: #000000; font-weight: bold;">-</span> ball.<span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">/</span> ball_radius <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">1</span>;
					<span style="color: #6699cc; font-weight: bold;">var</span> speed<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span>.<span style="color: #004993;">sqrt</span><span style="color: #000000;">&#40;</span>x_speed<span style="color: #000000; font-weight: bold;">*</span>x_speed<span style="color: #000000; font-weight: bold;">+</span>y_speed<span style="color: #000000; font-weight: bold;">*</span>y_speed<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span>friction;
					<span style="color: #6699cc; font-weight: bold;">var</span> bounce<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #004993;">Math</span>.<span style="color: #004993;">atan2</span><span style="color: #000000;">&#40;</span>x_speed,y_speed<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">/</span>degrees_to_radians<span style="color: #000000; font-weight: bold;">*-</span><span style="color: #000000; font-weight:bold;">1</span>;
					<span style="color: #6699cc; font-weight: bold;">var</span> ricochet<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>=<span style="color: #000000; font-weight:bold;">2</span><span style="color: #000000; font-weight: bold;">*</span>collision_angle<span style="color: #000000; font-weight: bold;">-</span>bounce<span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">180</span>;
					x_speed=<span style="color: #004993;">Math</span>.<span style="color: #004993;">sin</span><span style="color: #000000;">&#40;</span>ricochet<span style="color: #000000; font-weight: bold;">*</span>degrees_to_radians<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span>speed;
					y_speed=<span style="color: #000000; font-weight: bold;">-</span> <span style="color: #004993;">Math</span>.<span style="color: #004993;">cos</span><span style="color: #000000;">&#40;</span>ricochet<span style="color: #000000; font-weight: bold;">*</span>degrees_to_radians<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span>speed;
					<span style="color: #0033ff; font-weight: bold;">while</span> <span style="color: #000000;">&#40;</span>terrain.<span style="color: #004993;">hitTestPoint</span><span style="color: #000000;">&#40;</span>collision_x, collision_y,<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
						ball.<span style="color: #004993;">x</span>=ball.<span style="color: #004993;">x</span><span style="color: #000000; font-weight: bold;">+</span>delta_x;
						ball.<span style="color: #004993;">y</span>=ball.<span style="color: #004993;">y</span><span style="color: #000000; font-weight: bold;">+</span>delta_y;
						collision_x=ball.x<span style="color: #000000; font-weight: bold;">-</span>delta_x<span style="color: #000000; font-weight: bold;">*</span>ball_radius;
						collision_y=ball.y<span style="color: #000000; font-weight: bold;">-</span>delta_y<span style="color: #000000; font-weight: bold;">*</span>ball_radius;
					<span style="color: #000000;">&#125;</span>
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>And play with the result&#8230; just watch the simulation and press left mouse button to reverse gravity.</p>
<p><embed src="/wp-content/uploads/2010/02/pixel_engine.as_.swf" allowscriptaccess="always" menu="false" quality="high" width="500" height="400" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p><a href="/wp-content/uploads/2010/02/pixel_engine.as_.zip">Download the source code</a>. Who said draw games are dead?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2010/02/13/flash-as3-pixel-based-circle-collision-engine/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Create incredible particle effects with Partigen 2</title>
		<link>http://www.emanueleferonato.com/2010/02/08/create-incredible-particle-effects-with-partigen-2/</link>
		<comments>http://www.emanueleferonato.com/2010/02/08/create-incredible-particle-effects-with-partigen-2/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 10:10:12 +0000</pubDate>
		<dc:creator>Emanuele Feronato</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://www.emanueleferonato.com/?p=2080</guid>
		<description><![CDATA[Do you remember Partigen?
Andrew Fitzgerald from Desuade released the new version, of his amazing particle effects engine: Partigen 2.

Featuring over 120 exclusive preset effects, Partigen 2 is the first and only extension for Flash that let&#8217;s you to create complex particle effects in just a click.
The list of features is huge, so I am listing [...]]]></description>
			<content:encoded><![CDATA[<p>Do you remember <a href="http://www.emanueleferonato.com/2007/08/20/create-amazing-particle-effects-in-flash-with-partigen-component/">Partigen</a>?</p>
<p><strong>Andrew Fitzgerald</strong> from Desuade released the new version, of his amazing particle effects engine: <strong><a href="http://desuade.com/partigen" target = "_blank">Partigen 2</a></strong>.</p>
<p><embed src="/wp-content/uploads/2010/02/chimney_swf.swf" allowscriptaccess="always" menu="false" quality="high" width="520" height="268" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Featuring over 120 exclusive preset effects, <a href="http://desuade.com/partigen" target = "_blank">Partigen 2</a> is the first and only extension for Flash that let&#8217;s you to create complex particle effects in just a click.</p>
<p>The list of features is huge, so I am listing the ones I found most interesting:</p>
<ul>
<li>Full Package XML-Serialization</li>
<li>Fully documented AS3 API</li>
<li>Emitters can be created with either the IDE component or via ActionScript</li>
<li>Particles can be any display object that inherits the Particle class</li>
<li>Renderers can be shared across multiple Emitters</li>
<li>Pools can handle the internal creation and storage of Particle objects in memory</li>
</ul>
<p>You can read the full list of features <a href="http://desuade.com/partigen/specs" target = "_blank">here</a></p>
<p>The documentation is awesome, the best I&#8217;ve seen so far in a product like this one. You can access the <a target  ="_blank" href="http://api.desuade.com/en_as3/">full API documentation</a>, and from <a href="http://desuade.com/partigen/demos" target = "_blank">this link</a> you can access a 42 minutes long video covering the entire Partigen 2 component, and you can create beautiful effects using the component in less than a minute.</p>
<p>Anyway, we&#8217;re not here to talk about the component, but to test the AS3 API.<span id="more-2080"></span></p>
<p><strong>Playing with AS3 API</strong></p>
<p>In this example, I am going to create a particle effect with the user interface provided in the component, then I&#8217;ll export it with XML and finally add it &#8220;on the fly&#8221; to the <a href="http://www.emanueleferonato.com/2010/01/27/box2dflash-2-1a-released-what-changed/">Box2D car example</a>.</p>
<p>Playing with the presets is easy and fun, and once you&#8217;re done, just press &#8220;Copy to XML&#8221; to have the XML copied into your dashboard</p>
<p><img src="/wp-content/uploads/2010/02/part.png" /></p>
<p>Then, since we don&#8217;t want external files in our game, this is the code we need:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span>.<span style="color: #004993;">Sprite</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">Event</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">KeyboardEvent</span>;
	<span style="color: #009900;">//</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Collision.Shapes.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Common.<span style="color: #004993;">Math</span>.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> Box2D.Dynamics.Joints.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #009900;">// partigen libraries</span>
	<span style="color: #0033ff; font-weight: bold;">import</span> com.desuade.partigen.emitters.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> com.desuade.partigen.renderers.<span style="color: #000000; font-weight: bold;">*</span>;
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> partigen extends <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> world<span style="color: #000000; font-weight: bold;">:</span>b2World;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> car_body<span style="color: #000000; font-weight: bold;">:</span>b2Body;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> front_wheel<span style="color: #000000; font-weight: bold;">:</span>b2Body;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> rear_wheel<span style="color: #000000; font-weight: bold;">:</span>b2Body;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> front_motor<span style="color: #000000; font-weight: bold;">:</span>b2RevoluteJointDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2RevoluteJointDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> rear_motor<span style="color: #000000; font-weight: bold;">:</span>b2RevoluteJointDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2RevoluteJointDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> fixtureDef<span style="color: #000000; font-weight: bold;">:</span>b2FixtureDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2FixtureDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> rear_motor_added<span style="color: #000000; font-weight: bold;">:</span>b2RevoluteJoint;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> front_motor_added<span style="color: #000000; font-weight: bold;">:</span>b2RevoluteJoint;
		<span style="color: #009900;">// partigen variables</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> the_particle<span style="color: #000000; font-weight: bold;">:</span>particle_mc = <span style="color: #0033ff; font-weight: bold;">new</span> particle_mc<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #6699cc; font-weight: bold;">var</span> particle_emitter<span style="color: #000000; font-weight: bold;">:</span>Emitter = <span style="color: #0033ff; font-weight: bold;">new</span> Emitter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> partigen<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			world=<span style="color: #0033ff; font-weight: bold;">new</span> b2World<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> b2Vec2<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>,<span style="color: #000000; font-weight:bold;">10.0</span><span style="color: #000000;">&#41;</span>,<span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span>;
			debug_draw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> body<span style="color: #000000; font-weight: bold;">:</span>b2Body;
			<span style="color: #6699cc; font-weight: bold;">var</span> bodyDef<span style="color: #000000; font-weight: bold;">:</span>b2BodyDef= <span style="color: #0033ff; font-weight: bold;">new</span> b2BodyDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> boxDef<span style="color: #000000; font-weight: bold;">:</span>b2PolygonShape = <span style="color: #0033ff; font-weight: bold;">new</span> b2PolygonShape<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> circleDef<span style="color: #000000; font-weight: bold;">:</span>b2CircleShape=<span style="color: #0033ff; font-weight: bold;">new</span> b2CircleShape<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> revoluteJointDef<span style="color: #000000; font-weight: bold;">:</span>b2RevoluteJointDef = <span style="color: #0033ff; font-weight: bold;">new</span> b2RevoluteJointDef<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			bodyDef.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>, <span style="color: #000000; font-weight:bold;">200</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span>;
			boxDef.SetAsBox<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">600</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>, <span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span>;
			fixtureDef.shape=boxDef;
			fixtureDef.friction=<span style="color: #000000; font-weight:bold;">1</span>;
			fixtureDef.density=<span style="color: #000000; font-weight:bold;">1</span>;
			body=world.CreateBody<span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000000;">&#41;</span>;
			body.CreateFixture<span style="color: #000000;">&#40;</span>fixtureDef<span style="color: #000000;">&#41;</span>;
			bodyDef.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>, <span style="color: #000000; font-weight:bold;">200</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span>;
			boxDef.SetAsBox<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>, <span style="color: #000000; font-weight:bold;">50</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span>;
			fixtureDef.shape=boxDef;
			fixtureDef.friction=<span style="color: #000000; font-weight:bold;">1</span>;
			fixtureDef.density=<span style="color: #000000; font-weight:bold;">1</span>;
			body=world.CreateBody<span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000000;">&#41;</span>;
			body.CreateFixture<span style="color: #000000;">&#40;</span>fixtureDef<span style="color: #000000;">&#41;</span>;
			bodyDef.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">500</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>, <span style="color: #000000; font-weight:bold;">200</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span>;
			boxDef.SetAsBox<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>, <span style="color: #000000; font-weight:bold;">50</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span>;
			fixtureDef.shape=boxDef;
			fixtureDef.friction=<span style="color: #000000; font-weight:bold;">1</span>;
			fixtureDef.density=<span style="color: #000000; font-weight:bold;">1</span>;
			body=world.CreateBody<span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000000;">&#41;</span>;
			body.CreateFixture<span style="color: #000000;">&#40;</span>fixtureDef<span style="color: #000000;">&#41;</span>;
			bodyDef.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">250</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>, <span style="color: #000000; font-weight:bold;">90</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span>;
			bodyDef.<span style="color: #004993;">type</span>=b2Body.b2_dynamicBody;
			bodyDef.userData = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			boxDef.SetAsBox<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">50</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>, <span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span>;
			fixtureDef.shape=boxDef;
			fixtureDef.density=<span style="color: #000000; font-weight:bold;">1</span>;
			fixtureDef.friction=<span style="color: #000000; font-weight:bold;">1</span>;
			fixtureDef.restitution=<span style="color: #000000; font-weight:bold;">0.1</span>;
			car_body=world.CreateBody<span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000000;">&#41;</span>;
			car_body.CreateFixture<span style="color: #000000;">&#40;</span>fixtureDef<span style="color: #000000;">&#41;</span>;
			fixtureDef.density=<span style="color: #000000; font-weight:bold;">1</span>;
			fixtureDef.friction=<span style="color: #000000; font-weight:bold;">5</span>;
			fixtureDef.density=<span style="color: #000000; font-weight:bold;">0.1</span>;
			fixtureDef.shape=circleDef;
			bodyDef.allowSleep=<span style="color: #0033ff; font-weight: bold;">false</span>;
			bodyDef.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>car_body.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #004993;">x</span> <span style="color: #000000; font-weight: bold;">+</span> <span style="color: #000000; font-weight:bold;">40</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>, car_body.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span>;
			front_wheel=world.CreateBody<span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000000;">&#41;</span>;
			front_wheel.CreateFixture<span style="color: #000000;">&#40;</span>fixtureDef<span style="color: #000000;">&#41;</span>;
			bodyDef.<span style="color: #004993;">position</span>.Set<span style="color: #000000;">&#40;</span>car_body.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #004993;">x</span> <span style="color: #000000; font-weight: bold;">-</span> <span style="color: #000000; font-weight:bold;">40</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>, car_body.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #004993;">y</span><span style="color: #000000;">&#41;</span>;
			rear_wheel=world.CreateBody<span style="color: #000000;">&#40;</span>bodyDef<span style="color: #000000;">&#41;</span>;
			rear_wheel.CreateFixture<span style="color: #000000;">&#40;</span>fixtureDef<span style="color: #000000;">&#41;</span>;
			front_motor.enableMotor=<span style="color: #0033ff; font-weight: bold;">true</span>;
			front_motor.maxMotorTorque=<span style="color: #000000; font-weight:bold;">10</span>;
			front_motor.Initialize<span style="color: #000000;">&#40;</span>car_body, front_wheel, front_wheel.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			front_motor_added=world.CreateJoint<span style="color: #000000;">&#40;</span>front_motor<span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">as</span> b2RevoluteJoint;
			rear_motor.enableMotor=<span style="color: #0033ff; font-weight: bold;">true</span>;
			rear_motor.maxMotorTorque=<span style="color: #000000; font-weight:bold;">1</span>;
			rear_motor.Initialize<span style="color: #000000;">&#40;</span>car_body, rear_wheel, rear_wheel.GetWorldCenter<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			rear_motor_added=world.CreateJoint<span style="color: #000000;">&#40;</span>rear_motor<span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">as</span> b2RevoluteJoint;
			<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">ENTER_FRAME</span>, update<span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">stage</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">KeyboardEvent</span>.<span style="color: #004993;">KEY_DOWN</span>, key_down<span style="color: #000000;">&#41;</span>;
			<span style="color: #009900;">// partigen code</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> particle_container<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>particle_container<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> particle_renderer<span style="color: #000000; font-weight: bold;">:</span>Renderer=<span style="color: #0033ff; font-weight: bold;">new</span> StandardRenderer<span style="color: #000000;">&#40;</span>particle_container,<span style="color: #990000;">'top'</span><span style="color: #000000;">&#41;</span>;
			particle_emitter.renderer=particle_renderer;
			particle_emitter.particle=particle_mc;
			<span style="color: #6699cc; font-weight: bold;">var</span> emmx<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">XML</span> = 
			<span style="color: #000000; font-weight: bold;">&lt;</span>IDEEmitter particle=<span style="color: #990000;">&quot;particle_mc&quot;</span> eps=<span style="color: #990000;">&quot;10&quot;</span> burst=<span style="color: #990000;">&quot;2&quot;</span> life=<span style="color: #990000;">&quot;1&quot;</span> lifeSpread=<span style="color: #990000;">&quot;*0.5&quot;</span> group=<span style="color: #990000;">&quot;GroupParticle&quot;</span> groupAmount=<span style="color: #990000;">&quot;0&quot;</span> groupProximity=<span style="color: #990000;">&quot;10&quot;</span> <span style="color: #004993;">angle</span>=<span style="color: #990000;">&quot;0&quot;</span> angleSpread=<span style="color: #990000;">&quot;*360&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			  <span style="color: #000000; font-weight: bold;">&lt;</span>Controllers<span style="color: #000000; font-weight: bold;">&gt;</span>
			    <span style="color: #000000; font-weight: bold;">&lt;</span>EmitterController<span style="color: #000000; font-weight: bold;">/&gt;</span>
			    <span style="color: #000000; font-weight: bold;">&lt;</span>ParticleController<span style="color: #000000; font-weight: bold;">&gt;</span>
			      <span style="color: #000000; font-weight: bold;">&lt;</span>ParticleTweenController duration=<span style="color: #990000;">&quot;0&quot;</span> property=<span style="color: #990000;">&quot;rotation&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;</span>KeyframeContainer tweenClass=<span style="color: #990000;">&quot;BasicTween&quot;</span> precision=<span style="color: #990000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;0&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*200&quot;</span> label=<span style="color: #990000;">&quot;begin&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;1&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> <span style="color: #004993;">value</span>=<span style="color: #990000;">&quot;0&quot;</span> spread=<span style="color: #990000;">&quot;*100&quot;</span> label=<span style="color: #990000;">&quot;end&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;/</span>KeyframeContainer<span style="color: #000000; font-weight: bold;">&gt;</span>
			      <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticleTweenController<span style="color: #000000; font-weight: bold;">&gt;</span>
			      <span style="color: #000000; font-weight: bold;">&lt;</span>ParticlePhysicsController duration=<span style="color: #990000;">&quot;0&quot;</span> flip=<span style="color: #990000;">&quot;false&quot;</span> useAngle=<span style="color: #990000;">&quot;true&quot;</span> property=<span style="color: #990000;">&quot;x&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;</span>ParticleTweenController duration=<span style="color: #990000;">&quot;0&quot;</span> property=<span style="color: #990000;">&quot;velocity&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>KeyframeContainer tweenClass=<span style="color: #990000;">&quot;BasicTween&quot;</span> precision=<span style="color: #990000;">&quot;1&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;0&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> <span style="color: #004993;">value</span>=<span style="color: #990000;">&quot;3&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;begin&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;1&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;end&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;/</span>KeyframeContainer<span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticleTweenController<span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;</span>ParticleTweenController duration=<span style="color: #990000;">&quot;0&quot;</span> property=<span style="color: #990000;">&quot;acceleration&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>KeyframeContainer tweenClass=<span style="color: #990000;">&quot;BasicTween&quot;</span> precision=<span style="color: #990000;">&quot;2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;0&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;begin&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;1&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;end&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;/</span>KeyframeContainer<span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticleTweenController<span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;</span>ParticleTweenController duration=<span style="color: #990000;">&quot;0&quot;</span> property=<span style="color: #990000;">&quot;friction&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>KeyframeContainer tweenClass=<span style="color: #990000;">&quot;BasicTween&quot;</span> precision=<span style="color: #990000;">&quot;2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;0&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;begin&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;1&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;end&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;/</span>KeyframeContainer<span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticleTweenController<span style="color: #000000; font-weight: bold;">&gt;</span>
			      <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticlePhysicsController<span style="color: #000000; font-weight: bold;">&gt;</span>
			      <span style="color: #000000; font-weight: bold;">&lt;</span>ParticleTweenController duration=<span style="color: #990000;">&quot;0&quot;</span> property=<span style="color: #990000;">&quot;alpha&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;</span>KeyframeContainer tweenClass=<span style="color: #990000;">&quot;BasicTween&quot;</span> precision=<span style="color: #990000;">&quot;2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;0&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> <span style="color: #004993;">value</span>=<span style="color: #990000;">&quot;0.1&quot;</span> spread=<span style="color: #990000;">&quot;*0.8&quot;</span> label=<span style="color: #990000;">&quot;begin&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;1&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;end&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;/</span>KeyframeContainer<span style="color: #000000; font-weight: bold;">&gt;</span>
			      <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticleTweenController<span style="color: #000000; font-weight: bold;">&gt;</span>
			      <span style="color: #000000; font-weight: bold;">&lt;</span>ParticleTweenController duration=<span style="color: #990000;">&quot;0&quot;</span> property=<span style="color: #990000;">&quot;scale&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;</span>KeyframeContainer tweenClass=<span style="color: #990000;">&quot;BasicTween&quot;</span> precision=<span style="color: #990000;">&quot;2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;0&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> <span style="color: #004993;">value</span>=<span style="color: #990000;">&quot;0.3&quot;</span> spread=<span style="color: #990000;">&quot;*0.5&quot;</span> label=<span style="color: #990000;">&quot;begin&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;1&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> <span style="color: #004993;">value</span>=<span style="color: #990000;">&quot;0&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;end&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;/</span>KeyframeContainer<span style="color: #000000; font-weight: bold;">&gt;</span>
			      <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticleTweenController<span style="color: #000000; font-weight: bold;">&gt;</span>
			      <span style="color: #000000; font-weight: bold;">&lt;</span>ParticlePhysicsController duration=<span style="color: #990000;">&quot;0&quot;</span> flip=<span style="color: #990000;">&quot;true&quot;</span> useAngle=<span style="color: #990000;">&quot;true&quot;</span> property=<span style="color: #990000;">&quot;y&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;</span>ParticleTweenController duration=<span style="color: #990000;">&quot;0&quot;</span> property=<span style="color: #990000;">&quot;velocity&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>KeyframeContainer tweenClass=<span style="color: #990000;">&quot;BasicTween&quot;</span> precision=<span style="color: #990000;">&quot;1&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;0&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> <span style="color: #004993;">value</span>=<span style="color: #990000;">&quot;3&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;begin&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;1&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;end&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;/</span>KeyframeContainer<span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticleTweenController<span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;</span>ParticleTweenController duration=<span style="color: #990000;">&quot;0&quot;</span> property=<span style="color: #990000;">&quot;acceleration&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>KeyframeContainer tweenClass=<span style="color: #990000;">&quot;BasicTween&quot;</span> precision=<span style="color: #990000;">&quot;2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;0&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;begin&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;1&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;end&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;/</span>KeyframeContainer<span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticleTweenController<span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;</span>ParticleTweenController duration=<span style="color: #990000;">&quot;0&quot;</span> property=<span style="color: #990000;">&quot;friction&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;</span>KeyframeContainer tweenClass=<span style="color: #990000;">&quot;BasicTween&quot;</span> precision=<span style="color: #990000;">&quot;2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;0&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;begin&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			            <span style="color: #000000; font-weight: bold;">&lt;</span>Keyframe <span style="color: #004993;">position</span>=<span style="color: #990000;">&quot;1&quot;</span> ease=<span style="color: #990000;">&quot;linear&quot;</span> spread=<span style="color: #990000;">&quot;*0&quot;</span> label=<span style="color: #990000;">&quot;end&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span>
			          <span style="color: #000000; font-weight: bold;">&lt;/</span>KeyframeContainer<span style="color: #000000; font-weight: bold;">&gt;</span>
			        <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticleTweenController<span style="color: #000000; font-weight: bold;">&gt;</span>
			      <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticlePhysicsController<span style="color: #000000; font-weight: bold;">&gt;</span>
			    <span style="color: #000000; font-weight: bold;">&lt;/</span>ParticleController<span style="color: #000000; font-weight: bold;">&gt;</span>
			  <span style="color: #000000; font-weight: bold;">&lt;/</span>Controllers<span style="color: #000000; font-weight: bold;">&gt;</span>
			<span style="color: #000000; font-weight: bold;">&lt;/</span>IDEEmitter<span style="color: #000000; font-weight: bold;">&gt;</span>;
			particle_emitter.fromXML<span style="color: #000000;">&#40;</span>emmx<span style="color: #000000;">&#41;</span>;
			particle_emitter.<span style="color: #004993;">start</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> key_down<span style="color: #000000;">&#40;</span>event<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">KeyboardEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">switch</span> <span style="color: #000000;">&#40;</span>event.<span style="color: #004993;">keyCode</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">39</span> <span style="color: #000000; font-weight: bold;">:</span>
					rear_motor_added.SetMotorSpeed<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span>;
					front_motor_added.SetMotorSpeed<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
				<span style="color: #0033ff; font-weight: bold;">case</span> <span style="color: #000000; font-weight:bold;">37</span> <span style="color: #000000; font-weight: bold;">:</span>
					rear_motor_added.SetMotorSpeed<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span>;
					front_motor_added.SetMotorSpeed<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span>;
					<span style="color: #0033ff; font-weight: bold;">break</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> debug_draw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> m_sprite<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span>;
			m_sprite = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>m_sprite<span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> dbgDraw<span style="color: #000000; font-weight: bold;">:</span>b2DebugDraw = <span style="color: #0033ff; font-weight: bold;">new</span> b2DebugDraw<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #6699cc; font-weight: bold;">var</span> dbgSprite<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Sprite</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			m_sprite.<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>dbgSprite<span style="color: #000000;">&#41;</span>;
			dbgDraw.SetSprite<span style="color: #000000;">&#40;</span>m_sprite<span style="color: #000000;">&#41;</span>;
			dbgDraw.SetDrawScale<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span>;
			dbgDraw.SetFillAlpha<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000000;">&#41;</span>;
			dbgDraw.SetLineThickness<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span>;
			dbgDraw.SetFlags<span style="color: #000000;">&#40;</span>b2DebugDraw.e_shapeBit<span style="color: #000000;">&#41;</span>;
			world.SetDebugDraw<span style="color: #000000;">&#40;</span>dbgDraw<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> update<span style="color: #000000;">&#40;</span>e <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			world.Step<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000; font-weight:bold;">30</span>,<span style="color: #000000; font-weight:bold;">10</span>,<span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span>;
			world.ClearForces<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			world.DrawDebugData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> bb<span style="color: #000000; font-weight: bold;">:</span>b2Body = world.GetBodyList<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>; bb; bb = bb.GetNext<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>bb.GetUserData<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					particle_emitter.<span style="color: #004993;">x</span>=bb.GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #004993;">x</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span>;
					particle_emitter.<span style="color: #004993;">y</span>=bb.GetPosition<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #004993;">y</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">30</span>;
				<span style="color: #000000;">&#125;</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>As you can see, the partigen code is very small, the most of the code is the particle XML itself.</p>
<p>And this is the result: I wanted fake bodies to spread from the car&#8217;s body.</p>
<p><embed src="/wp-content/uploads/2010/02/partigen.swf" allowscriptaccess="always" menu="false" quality="high" width="500" height="200" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></p>
<p>Move the car with left/right arrow keys and enjoy.</p>
<p><strong>Final considerations</strong></p>
<p><a href="http://desuade.com/partigen" target = "_blank">Partigen 2</a> is the most complete tool to create particle effects with Flash IDE and API, in a couple of minutes you will be able to create amazing effects, saving hours of trial and error.</p>
<p>Desuade is so confident that you&#8217;ll fall even more in love with Partigen 2, it comes with a <strong>100% satisfaction, 60 day money-back guarantee</strong>. A single license costs <strong>$97</strong>, and it&#8217;s positively a must-have.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.emanueleferonato.com/2010/02/08/create-incredible-particle-effects-with-partigen-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
