<?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>Game Geek Speak &#187; Flex</title>
	<atom:link href="http://geekspeak.creatrixgames.com/category/programming/flex/feed" rel="self" type="application/rss+xml" />
	<link>http://geekspeak.creatrixgames.com</link>
	<description>Flash, Java, and Unity game development blog with a focus on business and marketing.</description>
	<lastBuildDate>Thu, 29 Jul 2010 01:00:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Angry Explanations #1: How to draw a freaking image with PBE!</title>
		<link>http://geekspeak.creatrixgames.com/angry-explanations-1-how-to-draw-a-freaking-image-with-pbe.html</link>
		<comments>http://geekspeak.creatrixgames.com/angry-explanations-1-how-to-draw-a-freaking-image-with-pbe.html#comments</comments>
		<pubDate>Wed, 18 Nov 2009 00:24:57 +0000</pubDate>
		<dc:creator>jason</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[PushButton Engine]]></category>

		<guid isPermaLink="false">http://geekspeak.creatrixgames.com/?p=466</guid>
		<description><![CDATA[(Thanks to Ben G. for that humorous title! And just to be super clear&#8211;I&#8217;m not angry at all about PBE. The anger is entirely tongue-in-cheek.) So, yeah, I got started with PBE at a bad time, I think. It&#8217;s in transition between some major changes, and so all the docs and tutorials to this point [...]]]></description>
			<content:encoded><![CDATA[<p>(Thanks to Ben G. for that humorous title! <img src='http://geekspeak.creatrixgames.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  And just to be super clear&#8211;I&#8217;m not angry at all about PBE. The anger is entirely tongue-in-cheek.)</p>
<p>So, yeah, I got started with <a href="http://pushbuttonengine.com/">PBE</a> at a bad time, I think.</p>
<p>It&#8217;s in transition between some major changes, and so all the docs and tutorials to this point are out of sync and <del datetime="2009-11-18T00:30:38+00:00">kind of</del> very&#8230; confusing. Because of that, I really struggled to figure this out, and in fact couldn&#8217;t get an image on the screen without professional help (I&#8217;ll let you interpret that however you&#8217;d like).</p>
<p>This information is relevant for PBE r625 and up.</p>
<p>(This isn&#8217;t to say the engine is poorly designed&#8211;it&#8217;s simply not accurately documented in places because it has been changing so quickly. And to be fair, it&#8217;s still in beta. I wouldn&#8217;t use the engine if I didn&#8217;t think it was great.)</p>
<h2>A frustrated noob&#8217;s guide to getting a freakin&#8217; image on the dang screen using Flex 3</h2>
<p>Here&#8217;s the MXML which will reference the code.</p>
<pre class="brush: xml">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;game:Game
	xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;
	xmlns:game=&quot;com.yourcompany.yourgame.*&quot;
	width=&quot;750&quot;
	height=&quot;600&quot;
	layout=&quot;absolute&quot;&gt;

&lt;/game:Game&gt;</pre>
<p>Now define a resource in a ResourceBundle subclass, which is the image you want to display, and let PBE automagically make it accessible through the resource manager.</p>
<pre class="brush: as3">package com.yourcompany.yourgame
{
	import com.pblabs.engine.resource.ResourceBundle;

	public class EmbeddedResources extends ResourceBundle
	{
		// The path is magically also the name of the resource.
		[Embed(source=&quot;../assets/images/logo.png&quot;, mimeType=&quot;application/octet-stream&quot;)]
		public var logoImage:Class;
	}
}</pre>
<p>Put that image into action! It&#8217;s a simple notion, but somewhat complicated if you&#8217;re new to the engine and its gooey innards.</p>
<pre class="brush: as3">package com.yourcompany.yourgame
{
	import com.pblabs.engine.PBE;
	import com.pblabs.engine.entity.IEntity;
	import com.pblabs.engine.resource.ImageResource;
	import com.pblabs.engine.resource.ResourceManager;
	import com.pblabs.rendering2D.DisplayObjectScene;
	import com.pblabs.rendering2D.SpriteRenderer;
	import com.pblabs.rendering2D.ui.FlexSceneView;

	import mx.containers.Canvas;
	import mx.core.Application;
	import mx.events.FlexEvent;

	public class Game extends Application
	{
		public var resources:EmbeddedResources;

		// We need access to this in a couple of functions.
		private var _scene:DisplayObjectScene;

		public function Game()
		{
			super();

			// Let the Flex Application initialize fully before we muck with it.
			addEventListener( FlexEvent.APPLICATION_COMPLETE, onStartup );
		}

		// This is called once the Flex app (stage, in particular) is initialized.
		private function onStartup( e:FlexEvent ) : void
		{
			// Load our embedded resources (the image to show).
			resources = new EmbeddedResources();

			// Tell PBE to initialize and pass it our instance so it can get the stage.
			// (Remember, Application is a subclass of Sprite, which PBE needs.)
			PBE.startup( this );

			createPbeScene();

			showLogo();
		}

		private function createPbeScene():void
		{
			// Create a new IEntity for the scene view.
			var sceneEntity:IEntity = PBE.allocateEntity();
			sceneEntity.initialize( &quot;sceneEntity&quot; );

			_scene = new DisplayObjectScene();

			// Since this is Flex, we need the appropriate scene view class.
			var sceneView:FlexSceneView = new FlexSceneView();

			// Set up the view size.
			sceneView.width = 750;
			sceneView.height = 600;

			// FREAKIN&#039; IMPORTANT: add the view as a child to our display list!
			this.addChild( sceneView );

			// Connect the view to the display object scene (a component).
			_scene.sceneView = sceneView;

			// Add the display object scene to the scene entity.
			sceneEntity.addComponent( _scene, &quot;renderer&quot; );
		}

		private function showLogo():void
		{
			// Create a new IEntity instance for the sprite to be displayed.
			var spriteEntity:IEntity = PBE.allocateEntity();
			spriteEntity.initialize( &quot;logoEntity&quot; );

			// Add a sprite rendering component.
			var sprite:SpriteRenderer = new SpriteRenderer();

			// Tell the renderer to draw (and load) this image resource.
			sprite.fileName = &quot;../assets/images/logo.png&quot;;

			// Tell the renderer to draw to the display object scene.
			sprite.scene = _scene;

			// Add the component to the sprite entity.
			spriteEntity.addComponent( sprite, &quot;sprite&quot; );
		}
	}
}
</pre>
<p>So, what the heck just happened? Pfft! Don&#8217;t ask me! <em>I&#8217;m still a freakin&#8217; noob!</em> <img src='http://geekspeak.creatrixgames.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I know a couple of things, though. The SceneView is like a &#8220;canvas&#8221; where all DisplayObjectRenderers are drawn. So you create entities and fill them with components (like a SpriteRenderer) and tell the renderer component about the scene view. Magically, the sprite appears! It&#8217;s not too much to understand if you just want to know the API and how to use it.</p>
<p>To really understand it, you&#8217;ll need to look under the hood and figure out the connections. A good bit of hidden work is being done to simplify the API, but possibly at the expense of understanding. It&#8217;s neither good nor bad. It&#8217;s just The Way of PBE (for now).</p>
<p>Feel free to post here to help fill my gaps in comprehension. I haven&#8217;t used the engine enough to write a thorough explanation, and I&#8217;m not too proud to accept help. <img src='http://geekspeak.creatrixgames.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://geekspeak.creatrixgames.com/angry-explanations-1-how-to-draw-a-freaking-image-with-pbe.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Goblin now comes with entities included</title>
		<link>http://geekspeak.creatrixgames.com/goblin-now-comes-with-entities-included.html</link>
		<comments>http://geekspeak.creatrixgames.com/goblin-now-comes-with-entities-included.html#comments</comments>
		<pubDate>Wed, 17 Dec 2008 18:07:49 +0000</pubDate>
		<dc:creator>jason</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://geekspeak.creatrixgames.com/?p=95</guid>
		<description><![CDATA[Here&#8217;s a quick post to show the entity panel of my game editor (click for full size version). So on the left is the map view, where you see a really, really hiddeous jumble of a test map. The interesting thing there is the little heart with lips (a placeholder icon I borrowed from a [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a quick post to show the entity panel of my game editor (click for full size version).</p>
<p><a href="http://geekspeak.creatrixgames.com/wp-content/uploads/2008/12/2008-12-17_editor-entities.jpg"><img src="http://geekspeak.creatrixgames.com/wp-content/uploads/2008/12/2008-12-17_editor-entities-300x171.jpg" alt="Editor entity panel" width="300" height="171" class="aligncenter size-medium wp-image-96" /></a></p>
<p>So on the left is the map view, where you see a really, really hiddeous jumble of a test map. The interesting thing there is the little heart with lips (a placeholder icon I borrowed from a casual game I made a couple years ago). That&#8217;s the entity icon, which in this case is a player spawner. That is where the player will start in this map. Yellow means that&#8217;s the selected entity, and the white square is where the cursor is (though the mouse pointer isn&#8217;t visible since pressing Print Screen doesn&#8217;t capture it).</p>
<p>On the right side, things are a little more fun. Those entity properties you see are generated dynamically. This is a really cool thing that I have wanted to try for a long time. The entity&#8217;s components define what is exposed and editable in the editor. The editor then builds the UI based on that. So I don&#8217;t have to add code to support editing new components; I just add the property definitions to the component, and the rest is magic. I&#8217;m hoping this will save me time in the long run. So far? It rocks. <img src='http://geekspeak.creatrixgames.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>In case it didn&#8217;t slap you in the face, the editor is an <a href="http://www.adobe.com/products/air/">AIR application</a>, which means I get to do all kinds of file system stuff like load and save maps and assets without security restrictions.</p>
<p>(Maybe in the next post I will finally show a map that isn&#8217;t just random lines.)</p>
]]></content:encoded>
			<wfw:commentRss>http://geekspeak.creatrixgames.com/goblin-now-comes-with-entities-included.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Regular expression cheat sheet</title>
		<link>http://geekspeak.creatrixgames.com/regular-expression-cheat-sheet.html</link>
		<comments>http://geekspeak.creatrixgames.com/regular-expression-cheat-sheet.html#comments</comments>
		<pubDate>Wed, 10 Dec 2008 17:59:56 +0000</pubDate>
		<dc:creator>jason</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://geekspeak.creatrixgames.com/?p=66</guid>
		<description><![CDATA[I came across a pretty handy regular expression cheat sheet today. I do not use regular expressions very much, so when I need them, I always have to look up the syntax every time. So this seems like a pretty good thing to have a quick link to for those times. Have a look-see: regular [...]]]></description>
			<content:encoded><![CDATA[<p>I came across a pretty handy regular expression cheat sheet today. I do not use regular expressions very much, so when I need them, I always have to look up the syntax every time. So this seems like a pretty good thing to have a quick link to for those times.</p>
<p>Have a look-see: <a href="http://regexlib.com/CheatSheet.aspx">regular expression cheat sheet</a>.</p>
<p>One little snafu in Flex, specifically, is to remember the second parameter when you create an instance of <a href="http://livedocs.adobe.com/flex/3/langref/index.html">RegExp</a>. If you need something like &#8220;g&#8221; (global) in a plain regular expression, you&#8217;ll want that in the &#8220;flags&#8221; parameter or it won&#8217;t do much.</p>
]]></content:encoded>
			<wfw:commentRss>http://geekspeak.creatrixgames.com/regular-expression-cheat-sheet.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Goblin game editor pre-alpha: first screeny</title>
		<link>http://geekspeak.creatrixgames.com/goblin-game-editor-pre-alpha-first-screeny.html</link>
		<comments>http://geekspeak.creatrixgames.com/goblin-game-editor-pre-alpha-first-screeny.html#comments</comments>
		<pubDate>Tue, 02 Dec 2008 22:11:00 +0000</pubDate>
		<dc:creator>jason</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://geekspeak.creatrixgames.com/?p=41</guid>
		<description><![CDATA[How about a little self indulgence? After the amount of hair I lost wrangling with Flex, I deserve it! I admit it: this is butt ugly. It&#8217;s just plain old Flex. I didn&#8217;t add any styling at all. Who has time for that?! And the screenshot is tiny (better ones will be bigger, promise). Anyway, [...]]]></description>
			<content:encoded><![CDATA[<p>How about a little self indulgence? <img src='http://geekspeak.creatrixgames.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  After the amount of hair I lost wrangling with Flex, I deserve it!</p>
<p>I admit it: this is butt ugly. It&#8217;s just plain old Flex. I didn&#8217;t add any styling at all. Who has time for that?! And the screenshot is tiny (better ones will be bigger, promise).</p>
<div style="text-align:center"><img src="http://geekspeak.creatrixgames.com/wp-content/uploads/2008/12/2008-12-02_goblin-ed.jpg" alt="" title="Goblin Map Editor" width="500" height="319" class="alignnone size-full wp-image-43" />
</div>
<p>Anyway, what you see is the new map dialog, where you enter some parameters for your new map. To the right you see the edit bar, a tile set, etc. This is laid out like the Lila Dreams editor, but the code is only slightly based on stuff I did previously (handling user prefs, finding asset directory, etc). It won&#8217;t actually make a new map yet, but I just need to hook that up to the UI.</p>
<p>Let me summarize: five hours of trying to figure out why Flex didn&#8217;t like my custom components and associated .as files. Finally I just decided to inline all the code, to hell with keeping it separate. I have always thought Flex is very tedious to use. It&#8217;s a love/hate relationship. Maybe in seventeen thousand years, after I have used it a little bit, I will feel more on the love side. Today&#8230; not so much.</p>
<p>On the positive side, it is coming together pretty fast despite these kinds of frustrations. There&#8217;s a chance I can achieve my goal! More updates to come.</p>
<p><i>Addendum:</i><br />
<a href="http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&#038;productId=2&#038;postId=7142">http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&#038;productId=2&#038;postId=7142</a></p>
<p>*Screams*</p>
<p>Well, at least now I know that you can&#8217;t subclass Canvas and expect it to behave like when you subclass UIComponent if you are trying to add a child Sprite to it. What I mean is, if you create a custom component that subclasses Canvas, it will throw an exception when you try to addChild() a Sprite. But if you subclass UIComponent, it will let you addChild() a Sprite.</p>
<p>*Slaps self silly, then gets back to work*</p>
]]></content:encoded>
			<wfw:commentRss>http://geekspeak.creatrixgames.com/goblin-game-editor-pre-alpha-first-screeny.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.307 seconds -->
