<?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>SimianLogic Studios &#187; flex</title>
	<atom:link href="http://www.simianlogicstudios.com/tag/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simianlogicstudios.com</link>
	<description>indie game developer, web tinkerer, and transplanted Southerner living in Silicon Valley</description>
	<lastBuildDate>Thu, 18 Feb 2010 16:38:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Quick Flex Hack: Turn a LinkBar into a ToggleButtonBar</title>
		<link>http://www.simianlogicstudios.com/2008/05/09/quick-hack-to-turn-a-link-bar-into-a-toggle-button-bar/</link>
		<comments>http://www.simianlogicstudios.com/2008/05/09/quick-hack-to-turn-a-link-bar-into-a-toggle-button-bar/#comments</comments>
		<pubDate>Fri, 09 May 2008 19:42:18 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2008/05/09/quick-hack-to-turn-a-link-bar-into-a-toggle-button-bar/</guid>
		<description><![CDATA[I love how Flex&#8217;s (talking Flex 2 here, we haven&#8217;t jumped to Flex 3 yet at the day-job) LinkBar looks, but I&#8217;m not a big fan of view stacks.  I wanted to use one just as you would normally use a ToggleButtonBar, but by default the LinkBar only grays out the &#8220;selected&#8221; item if [...]]]></description>
			<content:encoded><![CDATA[<p>I love how Flex&#8217;s (talking Flex 2 here, we haven&#8217;t jumped to Flex 3 yet at the day-job) LinkBar looks, but I&#8217;m not a big fan of view stacks.  I wanted to use one just as you would normally use a ToggleButtonBar, but by default the LinkBar only grays out the &#8220;selected&#8221; item if its dataProvider is actually a ViewStack.  Solution: subclass it and toss in a little hack that gets the results we want.  Without further adieu, here&#8217;s the code to turn a link bar into a toggle bar:</p>
<blockquote>
<pre>package {

import mx.controls.*;
import mx.events.*;

public class ToggleLinkBar extends LinkBar {

public function ToggleLinkBar() {
super();
addEventListener(ItemClickEvent.ITEM_CLICK,changeToggle);
}

private function changeToggle(e:ItemClickEvent):void {
for(var i:int = 0; i < numChildren; i++) {
Button(getChildAt(i)).enabled = (selectedIndex != i);
}
}
}
}</pre>
</blockquote>
<p>Works like a charm!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2008/05/09/quick-hack-to-turn-a-link-bar-into-a-toggle-button-bar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>filler: a game</title>
		<link>http://www.simianlogicstudios.com/2008/01/11/filler-a-game/</link>
		<comments>http://www.simianlogicstudios.com/2008/01/11/filler-a-game/#comments</comments>
		<pubDate>Sat, 12 Jan 2008 03:09:28 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[playable]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2008/01/11/filler-a-game/</guid>
		<description><![CDATA[Not much activity lately, but all for a good cause.  After negotiating with various sponsors (the game&#8217;s been more or less done since mid-December), I released my first sponsored game today: filler.  I had several offers on the table upwards of a couple of thousand dollars, but in the end I decided to [...]]]></description>
			<content:encoded><![CDATA[<p>Not much activity lately, but all for a good cause.  After negotiating with various sponsors (the game&#8217;s been more or less done since mid-December), I released my first sponsored game today: <a title="filler: a game" href="http://www.kongregate.com/games/SimianLogic/filler?referrer=SimianLogic">filler</a>.  I had several offers on the table upwards of a couple of thousand dollars, but in the end I decided to go with a non-exclusive sponsorship from Kongregate.  The game will be living on their site exclusively for a week or so before I start an upload-fest and try to get it as widely distributed as possible (which will bring in even more money via <a title="it's Mo-chee" target="_blank" href="https://www.mochiads.com/r/9ce996a732f572cb">MochiAds</a>).  Because Kongregate offers non-exclusive sponsorships (meaning I can resell ad-free, site-locked versions to individual portals), I&#8217;m eventually expecting to make several thousand dollars off of this game.  I may do a longer post-mortem later, but for now it just feels so good to have it out there. <span id="more-67"></span></p>
<p>Note: I shrunk it down so it would fit in this blog pane (I&#8217;ve made a mental note to fix that later).  The actual game dimensions are 600&#215;500,  so don&#8217;t tax your eyes too badly playing it here!  You can see a bigger version at one of my ugly temporary pages <a title="Filler!" href="http://www.simianlogicstudios.com/fun/filler">here</a>.<br />

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_filler_1163047240"
			class="flashmovie"
			width="500"
			height="417">
	<param name="movie" value="http://www.simianlogicstudios.com/fun/filler/filler.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.simianlogicstudios.com/fun/filler/filler.swf"
			name="fm_filler_1163047240"
			width="500"
			height="417">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2008/01/11/filler-a-game/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Piqqem in FlexApps on flickr</title>
		<link>http://www.simianlogicstudios.com/2007/12/10/piqqem-in-flexapps-on-flickr/</link>
		<comments>http://www.simianlogicstudios.com/2007/12/10/piqqem-in-flexapps-on-flickr/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 00:18:40 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/12/10/piqqem-in-flexapps-on-flickr/</guid>
		<description><![CDATA[A little while ago at work, we switched veins from &#8220;Totally Super Secret&#8221; to &#8220;Shhh, don&#8217;t tell too many people, but we&#8217;ll give out a few accounts.&#8221;  The bosses didn&#8217;t want any press releases or newspaper articles just yet, but my co-worker and I spent a couple of days seeing if there were any slightly-stealthy [...]]]></description>
			<content:encoded><![CDATA[<p>A little while ago at work, we switched veins from &#8220;Totally Super Secret&#8221; to &#8220;Shhh, don&#8217;t tell too many people, but we&#8217;ll give out a few accounts.&#8221;  The bosses didn&#8217;t want any press releases or newspaper articles just yet, but my co-worker and I spent a couple of days seeing if there were any slightly-stealthy ways to get some word out.  I had stumbled across Ted Patrick&#8217;s <a target="_blank" title="FlexApps component" href="http://www.onflex.org/ted/2007/02/flexapps-component-version-09.php">FlexApps component</a> a couple of months ago, so this seemed like a perfect excuse to test it out.  There hadn&#8217;t been any new posts since April, so there was a chance that the group (even though it&#8217;s only run by one person) was defunct&#8211;but that didn&#8217;t deter me.  I&#8217;d sort of forgotten all about it until this morning my boss <a target="_blank" title="FlexApps on  flickR" href="http://www.flickr.com/photos/flexapps/">sent us a link</a> asking who&#8217;d submitted them  (in a &#8220;good job&#8221; sort of way).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/12/10/piqqem-in-flexapps-on-flickr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiling a Stock Flex Component.</title>
		<link>http://www.simianlogicstudios.com/2007/12/09/compiling-a-flex-component/</link>
		<comments>http://www.simianlogicstudios.com/2007/12/09/compiling-a-flex-component/#comments</comments>
		<pubDate>Sun, 09 Dec 2007 23:56:36 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/12/09/compiling-a-flex-component/</guid>
		<description><![CDATA[I work a lot with MXML, but even I still think there&#8217;s a little bit of chicanery going on when it comes to getting it to play nice with the other kids.  Due to all the various problems that normal TextFields have with image support (via htmlText), at work I decided to replace the [...]]]></description>
			<content:encoded><![CDATA[<p>I work a lot with MXML, but even I still think there&#8217;s a little bit of chicanery going on when it comes to getting it to play nice with the other kids.  Due to all the various problems that normal TextFields have with image support (via htmlText), at work I decided to replace the stock Rich Text Editor with a custom-built version that uses an estended TextArea instead of the stock TextArea.  Because the extended TextArea is literally an extension of TextArea, I hoped I&#8217;d be able to just grab the source for the RTE, copy it into my source tree, fix the package, and swap out any references for the mx:TextArea with my own.  So that&#8217;s what I did&#8230; only for some reason I decided to test this as a standalone instead of trying to immediately integrate it with our other code.  The new RTE file compiled with no complaints, but whenever I ran it I wold get a Run Time Error (the OTHER RTE):<span id="more-62"></span></p>
<p>TypeError: Error #1006: getInstance is not a function&#8230;</p>
<p>Figuring that there was some sort of reference to something internal, I started pulling code out.  A lot of code out.  Eventually I stripped out all of the Meta, all of the Script code, and was left with pure MXML&#8230; with anything not core (i.e. function calls) also dumped.  It still wouldn&#8217;t work.  Eventually I had it stripped to the following, and that&#8217;s when the &#8220;DUH&#8221; gods struck:</p>
<p>Of course it should throw an error&#8211;I hadn&#8217;t wrapped my Panel in any sort of application.  I reverted back to the stock Adobe code, made another mxml file with an application in it to load the hacked-RTE, and it worked like a charm the first time out.  Because I went into the conversion thinking it would take some nudging to work, I missed my own silly error.</p>
<p>I guess it could be worse, though&#8211;it&#8217;s not like I have to write my own RTE component from scratch.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/12/09/compiling-a-flex-component/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Media Player and Flex Embed Don&#039;t Play Nice</title>
		<link>http://www.simianlogicstudios.com/2007/11/30/windows-media-player-and-flex-embed-dont-play-nice/</link>
		<comments>http://www.simianlogicstudios.com/2007/11/30/windows-media-player-and-flex-embed-dont-play-nice/#comments</comments>
		<pubDate>Sat, 01 Dec 2007 02:17:45 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/11/30/windows-media-player-and-flex-embed-dont-play-nice/</guid>
		<description><![CDATA[While putting some final polish on my latest flash game, something utterly bizarre happened.  I usually save putting in sounds for the last job, but due to re-used interface code the menu sounds (on rollover) for this game were already in place.  While sorting through my somewhat pathetic sound library (around $15&#8217;s worth off of  [...]]]></description>
			<content:encoded><![CDATA[<p>While putting some final polish on my latest flash game, something utterly bizarre happened.  I usually save putting in sounds for the last job, but due to re-used interface code the menu sounds (on rollover) for this game were already in place.  While sorting through my somewhat pathetic sound library (around $15&#8217;s worth off of  SoundRangers) on my laptop, I came to the sad realization that Windows Media Player was the only software on it that would play mp3s.  I loaded up my library and listened to everything a few times to try to sort out which  sounds would go where.  Once done, I closed WMP and switched back over to NetBeans.  I dropped in the code for a few new sound effects to test, compiled, and loaded the SWF.  Nothing.  Nada.  No sound.  Not even the menu sounds, which I KNEW were already working.</p>
<p><span id="more-60"></span></p>
<p>After doing some debugging to make sure my sound listeners were actually getting the proper events and firing off the sounds, I was pretty perplexed.  A bunch of google searches with queries like &#8220;as3 sound won&#8217;t play&#8221;, &#8220;as3 sound broken&#8221;, etc&#8230; yielded nothing interesting&#8211;the code was correct! Then it hit me.  Every so often when  I play a video or sound file in Windows Media Player, close the application, and then try to delete the video&#8211;I&#8217;ll get an error saying the file is still in use.  There seems to be some sort of bug in WMP&#8211;it doesn&#8217;t always release assets properly, even when you completely close the application.</p>
<p>The odd thing is that the flex compiler didn&#8217;t throw any kind of warning that the assets it was trying to embed weren&#8217;t available.  They just never played.  After deleting the files from my assets directory, copying them back in from my sound library, and recompiling (with no code changes), everything worked like a charm.  No matter how much I love my X-Box, Mac and Linux just keep getting more and more tempting&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/11/30/windows-media-player-and-flex-embed-dont-play-nice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nibblets and the State of Flex Game Development</title>
		<link>http://www.simianlogicstudios.com/2007/11/09/nibblets-and-the-state-of-flex-game-development/</link>
		<comments>http://www.simianlogicstudios.com/2007/11/09/nibblets-and-the-state-of-flex-game-development/#comments</comments>
		<pubDate>Sat, 10 Nov 2007 05:38:23 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[playable]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/11/09/nibblets-and-the-state-of-flex-game-development/</guid>
		<description><![CDATA[I had an idea for a game about a month ago.  Normally I just prototype this things, file them away, and move on to the next one (there&#8217;s always a next one).  I was taking part in the MochiAds beta at the time, though, so I figured I&#8217;d put a little more work [...]]]></description>
			<content:encoded><![CDATA[<p>I had an idea for a game about a month ago.  Normally I just prototype this things, file them away, and move on to the next one (there&#8217;s always a next one).  I was taking part in the <a target="_blank" title="MochiAds" href="http://www.mochiads.com">MochiAds</a> beta at the time, though, so I figured I&#8217;d put a little more work into it and release it on a few sites.  To cut a not-too-long-story short, making games sucks.  I&#8217;ll qualify that.  I love prototyping, but I&#8217;ve spent the last month (on and off in my after-work non-girlfriend free-time) essentially adding instruction screens, level selection screens, and high score integration.  The actual gameplay (and all 10 levels) haven&#8217;t changed at all since my first prototype (which took about 2 hours) over a month ago.<span id="more-56"></span></p>
<p>This isn&#8217;t to say that I&#8217;m going to ever stop making games&#8230; because it&#8217;s too much fun.  I&#8217;m not going to hold my breath on the financial rewards coming in from the MochiAds, but it&#8217;s pretty cool that I can track how many people are playing across a bunch of different sites (sadly, MochiBot doesn&#8217;t work with Flash 9 yet).  And once it&#8217;s been out there awhile, I can flip a switch and turn all the low-CPM ads into links back to my own site.</p>
<p>Why does doing interface stuff take so long?  Well, for one thing, it&#8217;s boring as hell.  This is the main reason MXML exists&#8230; but unfortunately, neither of the two &#8220;services&#8221; I&#8217;m targeting allow it: <a target="_blank" title="Three Rings" href="http://www.threerings.com">Whirled </a>(still in super-secret Alpha) and MochiAds.  The other that I wouldn&#8217;t mind supporting is <a target="_blank" title="Kongregate" href="http://www.kongregate.com">Kongregate</a>, but they&#8217;re not Flash 9-enabled, yet.  Perhaps Flex isn&#8217;t quite mainstream enough (and by that I mean stupid-simple).  Or maybe rather than building more games I should devote some time to developing an AS3-only interface library.<br />
On to the game!  I whipped up an <a target="_blank" title="Nibblets" href="http://www.simianlogicstudios.com/fun/nibblets">ad-crazy embedded version</a> just to test out a couple of other ad mechanics.  Or you could go directly to <a target="_blank" title="Nibblets" href="http://www.simianlogicstudios.com/fun/nibblets/nibblets.swf">the SWF</a>.  The thing runs at 900&#215;400, so I&#8217;m not sure how well it&#8217;s going to embed below:</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_nibblets_1006089889"
			class="flashmovie"
			width="550"
			height="244">
	<param name="movie" value="http://www.simianlogicstudios.com/fun/nibblets/nibblets.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.simianlogicstudios.com/fun/nibblets/nibblets.swf"
			name="fm_nibblets_1006089889"
			width="550"
			height="244">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/11/09/nibblets-and-the-state-of-flex-game-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ToggleButtonBar fix</title>
		<link>http://www.simianlogicstudios.com/2007/11/07/togglebuttonbar-fix/</link>
		<comments>http://www.simianlogicstudios.com/2007/11/07/togglebuttonbar-fix/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 00:40:37 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/11/07/togglebuttonbar-fix/</guid>
		<description><![CDATA[I&#8217;m working on adding Header controls to my version of the Flex Rich Text Editor, and I noticed that the ToggleButtonBar doesn&#8217;t&#8230; exactly&#8230; work.  I dug into the source and saw why.  When using the &#8220;ToggleOnClick&#8221; property, the TBB does some funny stuff that it&#8217;s parent, the regular ButtonBar, doesn&#8217;t really care about. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on adding Header controls to my version of the Flex Rich Text Editor, and I noticed that the ToggleButtonBar doesn&#8217;t&#8230; exactly&#8230; work.  I dug into the source and saw why.  When using the &#8220;ToggleOnClick&#8221; property, the TBB does some funny stuff that it&#8217;s parent, the regular ButtonBar, doesn&#8217;t really care about.  While it&#8217;s possible to set the TBB&#8217;s selectedIndex to -1, this doesn&#8217;t actually get transmitted to the parent ButtonBar.  This means that, while the TBB deselects the item properly, the parent BB still think you have the same thing selected.  Which means you can&#8217;t click on it again until you select something else and then come back to it.<span id="more-55"></span><br />
I found a <a target="_blank" href="http://www.andymcintosh.com/?p=13">blog post</a> of someone else complaining about this, and&#8211;even more valuabe&#8211;there was a comment from an Adobe employee saying they&#8217;d checked in a fix for this (into Flex 3).   Hooray open source!  I just went over to Adobe&#8217;s site, grabbed the latest build of the Flex 3 Beta, and copied the source for the new ToggleButtonBar into a new file in my source directly (which I&#8217;m calling FixedTBB).</p>
<p>The selection quirks are indeed fixed in the new version, but there were two more bugs in the ToggleButtonBar code.  The logic for whether or not to select or deselect a particular button happens in the function &#8220;hiliteSelectedNavItem,&#8221; which is called after the clickHandler.  So what?  This means, from an itemClickEvent perspective, that the ToggleButtonBar will NEVER generate an event where the selectedIndex = -1.  Why don&#8217;t I just check the TBB&#8217;s selectedIndex manually instead of trusting the events?  Well, the handler for the event is actually getting called before the TBB&#8217;s hiliteSelectedNavItem fires, so as far as my event handler is concerned the selectedIndex can never be -1.</p>
<p>As I want the deselects to turn off paragraph styles, this is a <em>bad thing.  </em>Luckily, it&#8217;s easy to fix.  In the clickHandler function, you need to change it so that if you&#8217;re turning off a button it dispatches that event rather than letting the parent NavBar fire of its simpler &#8220;You clicked on Button #4&#8243; event:</p>
<p align="left">Previous version:<br />
<code /></p>
<pre>if (_toggleOnClick &#038;&#038; index == selectedIndex)
hiliteSelectedNavItem(-1);
else
hiliteSelectedNavItem(index);
super.clickHandler(event);</pre>
<p align="left">New Version:<br />
<code /></p>
<pre>if (_toggleOnClick &#038;&#038; index == selectedIndex)
{
selectedIndex = -1;
hiliteSelectedNavItem(-1);
var newEvent:ItemClickEvent = new ItemClickEvent(ItemClickEvent.ITEM_CLICK);
newEvent.label = "none";
newEvent.index = -1;
newEvent.item = null;
dispatchEvent(newEvent);

event.stopImmediatePropagation();
}else{
hiliteSelectedNavItem(index);
super.clickHandler(event);
}</pre>
<p align="left">And voila!  My listener for itemClickEvents now magically also knows when a user has deselected something!</p>
<p align="left">The other fix was pretty trivial as well.  By default, the ToggleButtonBar always selects one of the items to begin with.  As Headers are clearly optional states, I definitely don't want that.  There's a private variable called "initializeSelectedButton" which defaults to true.  Once the first button is added to a TBB, a function sets its selected property to true and then sets initializeSelectedButton to false.  I just made that variable public and set it to false manually before adding any buttons, and my problems were solved.  The better thing would be to actually create getters/setters for it, but I'll leave that to the Adobe whiz-kids.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/11/07/togglebuttonbar-fix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe RIA Dev Camp</title>
		<link>http://www.simianlogicstudios.com/2007/11/07/adobe-ria-dev-camp/</link>
		<comments>http://www.simianlogicstudios.com/2007/11/07/adobe-ria-dev-camp/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 00:18:23 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/11/07/adobe-ria-dev-camp/</guid>
		<description><![CDATA[On Monday, I headed up to San Fran for one of Adobe&#8217;s little community events: an &#8220;Adobe Rich Internet Application Developer&#8217;s Camp.&#8221;  I have to say, I really liked their corporate digs.  Besides the 2-man behemoth of a company I&#8217;m working at now, I&#8217;ve worked at Electronic Arts and been to several events [...]]]></description>
			<content:encoded><![CDATA[<p>On Monday, I headed up to San Fran for one of Adobe&#8217;s little community events: an &#8220;Adobe Rich Internet Application Developer&#8217;s Camp.&#8221;  I have to say, I really liked their corporate digs.  Besides the 2-man behemoth of a company I&#8217;m working at now, I&#8217;ve worked at Electronic Arts and been to several events hosted by Apple/Google/Yahoo (to name a few).  I could probably fill an entire post on the differences (perceived by me anyway) between the corporate cultures of the various mega-corporations, but I&#8217;ll keep it to a minimum by saying I liked Adobe&#8217;s HQ a lot better than any of the others I&#8217;ve been to.  And free beer didn&#8217;t hurt, either.<span id="more-54"></span></p>
<p>The &#8220;camp&#8221; was geared more towards those considering Flex in their workflow, I guess, so I didn&#8217;t get a whole ton out of it.  The thing started off with a couple of Flex &#8220;Evangelists&#8221; giving their thoughts on what an RIA is and how Flex is the coolest thing around.  The only thing I really took away from it is that James Ward has a pretty <a href="http://www.jamesward.org/census">cool tool</a> posted on his site for benchmarking flex performance.  The next version of Flash is going to have a flex cache for caching most of the core flex (and MXML) framework, which should reduce the size of flex-compiled swfs by ~200-500k, which was pretty excellent.   I&#8217;m not sure if the current compiler will be updated or this is something we&#8217;ll only get by switching to Flex 3, though.</p>
<p>Some guys from Paypal gave a demo of a merchant tool they were making in AIR, which was pretty cool.  Matt Chotin talked about what else was going to be new in Flex 3, most of which I&#8217;d already heard.  The FABridge is going to be part of the mx core in the next release, and they&#8217;re also planning on support deep links within applications (meaning you could bookmark a specific state within an application or send it as a link).  Some guys from Yahoo! demonstrated how they built a SEO optimization tool in 3.5 days in Flex, which was also pretty cool.</p>
<p>Finally, one of the guys from Actionscript.com (<span align="left" id="dnn_ctr383_ContentPane"><span id="dnn_ctr383_Authors_rptAuthors__ctl0_lblName">Satori Canton) </span></span>got up and spoke for awhile.  I think they were going to be presenting something, but for some reason their presentation got screwed up and so he just talked.  He seemed nice enough&#8230; just kind of cooky.  He was dressed in a business suit&#8230; but with a Pancho thrown on top.  And his fingernails were painted black.  And he had a magic wand.  None of this is to say he didn&#8217;t seem competent&#8211;just a little more interesting than your average speaker.  Mostly his talk sounded a lot like consultant-speak, with a slight bent towards the poetic.  He talked a lot about community love and then ended his talk with the following (I may be paraphrasing a little, but I&#8217;m pretty sure I got most of this down exactly):</p>
<blockquote><p>&#8220;You guys (the community) are like a song.  I wish I could MP3 all of you and put you on a little thumb drive and carry you with me everywhere I go.&#8221;</p>
</blockquote>
<p>All in all, it was pretty interesting.  I didn&#8217;t win any of the raffles, but I did get a bag full of Adobe loot (including a free &#8220;Programming Flex 2&#8243; book).  There&#8217;s a SilVaFUG meeting in San Jose that I might check out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/11/07/adobe-ria-dev-camp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex RTE Part 2: Faking mouse:hover</title>
		<link>http://www.simianlogicstudios.com/2007/10/22/flex-rte-part-2-faking-mousehover/</link>
		<comments>http://www.simianlogicstudios.com/2007/10/22/flex-rte-part-2-faking-mousehover/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 00:43:48 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/10/22/flex-rte-part-2-faking-mousehover/</guid>
		<description><![CDATA[Before getting into the meat of my post, I suppose it&#8217;s all right to now mention that I&#8217;m working at a site called Piqqem.  As of last week we&#8217;re no longer officially in &#8220;stealth,&#8221; but we&#8217;re not quite ready to go into full-on publicity-seeking mode yet, either.  The RTE code I&#8217;ve been working [...]]]></description>
			<content:encoded><![CDATA[<p>Before getting into the meat of my post, I suppose it&#8217;s all right to now mention that I&#8217;m working at a site called <a target="_blank" title="Piqqem" href="http://www.piqqem.com">Piqqem</a>.  As of last week we&#8217;re no longer officially in &#8220;stealth,&#8221; but we&#8217;re not quite ready to go into full-on publicity-seeking mode yet, either.  The RTE code I&#8217;ve been working on is for our &#8220;Piqqem Notes,&#8221; a wiki like section for all of the stocks we cover.<br />
See also: <a title="Flex RTE Part 1: Link Buttons" href="http://simianlogic3d.com/blog/2007/10/05/flex-rte-part-1-link-buttons/">Flex RTE Part 1: Link Buttons</a></p>
<p>I&#8217;ve actually skipped an installment on converting real HTML to what flash considers HTML and converting the gobbledy-gook that flash considers &#8220;HTML&#8221; into real-world-usable HTML.  This installment, though, (mostly) fixes one of the more annoying features of the Flex Rich Text Editor control.  The new code hasn&#8217;t yet been integrated into my code from Part 1, just in case someone wants to see the &#8220;simple&#8221; example.<br />
The Flex CSS support actually covers a:hover, but there&#8217;s no way to use CSS with an editable TextField, which means the RichTextEditor control doesn&#8217;t inherently support mouse hover states.  The only indicator you get that you&#8217;re mousing over a link is a hand cursor&#8211;but there&#8217;s no built-in way to see where that link points to.<span id="more-49"></span></p>
<p>To get around this, I&#8217;ve added a mouseMove handler which grabs the mouse&#8217;s location in the TextField, figures out what character is under the mouse, checks to see whether or not that character is part of a link, and then (finally) adds a fake toolTip above the mouse.  Why a fake tooltip, you ask?  Well, merely toggling the TextField&#8217;s toolTip property wasn&#8217;t giving me any sort of consistent results at all, so I just decided to fake it.  If someone who understands how toolTips work better than I do can make it work with the built-in toolTip, more power too &#8216;em.  The source is below the example:</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_linkHover_1630353426"
			class="flashmovie"
			width="400"
			height="300">
	<param name="movie" value="http://simianlogic3d.com/fun/flex/link_hover/linkHover.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://simianlogic3d.com/fun/flex/link_hover/linkHover.swf"
			name="fm_linkHover_1630353426"
			width="400"
			height="300">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Download: <a title="Source Files" href="http://simianlogic3d.com/fun/flex/link_hover/source.zip">source.zip</a><br />
Okay, so there&#8217;s no color change to go along with the mouse hover&#8230; but I&#8217;ll show you how to do that in my next post with lots of HTML-y goodness.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/10/22/flex-rte-part-2-faking-mousehover/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex RTE Part 1: Link Buttons</title>
		<link>http://www.simianlogicstudios.com/2007/10/05/flex-rte-part-1-link-buttons/</link>
		<comments>http://www.simianlogicstudios.com/2007/10/05/flex-rte-part-1-link-buttons/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 00:20:22 +0000</pubDate>
		<dc:creator>SimianLogic</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://simianlogic3d.com/blog/2007/10/05/flex-rte-part-1-link-buttons/</guid>
		<description><![CDATA[In this post earlier this week, I set out the project goal of making the Flex Rich Text Editor control a little more user-friendly.  Here&#8217;s the first bit.  I&#8217;ve removed the old add link textField completely and replaced it with two new buttons: &#8220;Add Link&#8221; and &#8220;Remove Link.&#8221;  The popup for the [...]]]></description>
			<content:encoded><![CDATA[<p>In <a target="_blank" href="http://simianlogic3d.com/blog/2007/10/02/flex-rte-and-the-obscure-gettextfield-function/">this post</a> earlier this week, I set out the project goal of making the Flex Rich Text Editor control a little more user-friendly.  Here&#8217;s the first bit.  I&#8217;ve removed the old add link textField completely and replaced it with two new buttons: &#8220;Add Link&#8221; and &#8220;Remove Link.&#8221;<span id="more-46"></span>  The popup for the &#8220;Add Link&#8221; button automatically grants focus to the text field and places the cursor after the &#8220;http://&#8221;, just to make it a little easier to use.  The &#8220;Remove Link&#8221; button does two things.  First, it will remove a link from any highlighted text.  Second, if the current text carat is on a link (and you don&#8217;t have any text highlighted), the &#8220;Remove Link&#8221; button will figure out the beginning and end of that link and remove the whole thing.</p>
<p>What&#8217;s next?  I&#8217;d like to have the RTE automatically apply a font color to all links so that it&#8217;s consistent with the rest of our site (this &lt;font&gt; tag would then be parsed out when the HTML is extracted).  Then, as I mentioned in the last post, I&#8217;ll be removing the font and font size selectors&#8211;replacing them with simple Heading (h1, h2, h3&#8230;) selectors instead.  Because this RTE is intended for use on a wiki-like page, headings are pretty useful while choosing between Verdana and Helvetica is something we don&#8217;t really want our users doing.</p>
<p>Source code: <a target="_blank" title="source" href="http://simianlogic3d.com/fun/flex/rte_a/rte_link.zip">rte_link.zip</a></p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_rtePlus_496664531"
			class="flashmovie"
			width="450"
			height="500">
	<param name="movie" value="http://simianlogic3d.com/fun/flex/rte_a/rtePlus.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://simianlogic3d.com/fun/flex/rte_a/rtePlus.swf"
			name="fm_rtePlus_496664531"
			width="450"
			height="500">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.simianlogicstudios.com/2007/10/05/flex-rte-part-1-link-buttons/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
