<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Notes from the Flex Flash and ColdFusion Trenches - actionscript3</title>
			<link>http://blogs.digitalprimates.net/jefftapper/index.cfm</link>
			<description>Jeff Tapper&apos;s Blog</description>
			<language>en-us</language>
			<pubDate>Mon, 06 Sep 2010 15:14:09 -0400</pubDate>
			<lastBuildDate>Wed, 10 Mar 2010 14:45:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>jtapper@digitalprimates.net (Jeff Tapper)</managingEditor>
			<webMaster>jtapper@digitalprimates.net (Jeff Tapper)</webMaster>
			
			<item>
				<title>Ouch, it hurts when i do that</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2010/3/10/Ouch-it-hurts-when-i-do-that</link>
				<description>
				
				As promised, here are the slides for &quot;Ouch! It hurts when i do that.&quot; presentation first delivered at 360Flex San Jose, March 10th, 2010.
&lt;img style=&quot;visibility:hidden;width:0px;height:0px;&quot; border=0 width=0 height=0 src=&quot;http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNjgyNTAyODYzOTcmcHQ9MTI2ODI1MDg2MzQ2MiZwPTEwMDA3NTImZD*mZz*yJm89N2I3ZWQxZTcyODI5NGY2MTkz/NjE3NWRiZGEzNTNlNmUmb2Y9MA==.gif&quot; /&gt;&lt;object height=&quot;378&quot; width=&quot;490&quot;&gt;
	&lt;param name=&quot;movie&quot; value=&quot;http://slidesix.com/viewer/SlideSixViewer.swf?alias=Ouch--It-hurts-when-I-do-that&quot;/&gt;
	&lt;param name=&quot;menu&quot; value=&quot;false&quot;/&gt;
	&lt;param name=&quot;scale&quot; value=&quot;noScale&quot;/&gt;
	&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;
	&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;
	&lt;embed src=&quot;http://slidesix.com/viewer/SlideSixViewer.swf?alias=Ouch--It-hurts-when-I-do-that&quot; allowscriptaccess=&quot;always&quot; allowFullScreen=&quot;true&quot; height=&quot;378&quot; width=&quot;490&quot; type=&quot;application/x-shockwave-flash&quot;  FlashVars=&quot;gig_lt=1268250286397&amp;gig_pt=1268250863462&amp;gig_g=2&quot;/&gt;
 &lt;param name=&quot;FlashVars&quot; value=&quot;gig_lt=1268250286397&amp;gig_pt=1268250863462&amp;gig_g=2&quot; /&gt;&lt;/object&gt; 
				</description>
				
				<category>fp10</category>				
				
				<category>flex4</category>				
				
				<category>actionscript3</category>				
				
				<category>Speaking Conferences</category>				
				
				<category>flash</category>				
				
				<category>flashplayer</category>				
				
				<category>flex3</category>				
				
				<category>flash9</category>				
				
				<category>as3</category>				
				
				<category>flex</category>				
				
				<pubDate>Wed, 10 Mar 2010 14:45:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2010/3/10/Ouch-it-hurts-when-i-do-that</guid>
				
			</item>
			
			<item>
				<title>Flex 360 tickets selling fast</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2009/12/17/Flex-360-tickets-selling-fast</link>
				<description>
				
				Down to the last 5 (Cheap) tickets left for 360|Flex. &lt;a href=&quot;http://360flex-jefft.eventbrite.com/&quot;&gt;Register now&lt;/a&gt;, save $100 and get the same awesome content for a little less coin. Act fast, these last tickets won&apos;t last. When they&apos;re gone, the regular price of $599 kicks in. 

Come on out and hear me give advice how not to hurt yourself with code, in my &quot;Ouch, it hurts when i do that&quot; talk. 
				</description>
				
				<category>fp10</category>				
				
				<category>flex4</category>				
				
				<category>actionscript3</category>				
				
				<category>fp9</category>				
				
				<category>Speaking Conferences</category>				
				
				<category>flash</category>				
				
				<category>flashplayer</category>				
				
				<category>flex3</category>				
				
				<category>FlexUnit4</category>				
				
				<category>flex</category>				
				
				<pubDate>Thu, 17 Dec 2009 12:13:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2009/12/17/Flex-360-tickets-selling-fast</guid>
				
			</item>
			
			<item>
				<title>Fun with custom preloaders in Flex</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2009/10/2/Fun-with-custom-preloaders-in-Flex</link>
				<description>
				
				As you probably know, its pretty easy to use a custom preloader in flex to replace the built in preloader shown as a flex application loads.  There are a few tricks to remember with a custom preloader though, remember that the preloader is built to be displayed until the flex framework is done downloading.  As such, the preloader won&apos;t display until all the classes needed by the preloader are done downloading.  For this reason, its really important to remember that your custom preloader class doesn&apos;t make use of the flex framework, because if it does, the users will see nothing until enough of the framework has been loaded to display the preloader, and the preloader will only be displayed while the remainder of the framework is downloaded.
Fortunately, the DownloadProgressBar class makes little use of the flex framework, as it extends Sprite, instead of UIComponent, and only utilizes a few event classes from flex, which don&apos;t require any additional framework classes.  A quick google search can show you dozens of examples on subclassing DownloadProgressBar  to create a preloader which matches your application.
A larger challenge is faced when you have additional needs from a preloader.  Frequently, we are tasked with writing a preloader which is shown during the initial download, as well as remaining displayed until some startup procedures are complete within the application.  Some might try to approach by referencing Application.application within the preloader, to listen for a custom event indicating that the startup procedures are complete.  Of course, this is not an ideal solution, as referencing the Application class will link in the mx.core.Applicaiton class, which in turn links in around 170k worth of the Flex framework.
A better approach is to create a new class, which is not linked to the flex framework, which can act as an event bus between the main application and the preloader.  If this class is built as a singleton, you can be assured that both the main application and the preloader are accessing the same instance, allowing for a simple and convenient mechanism for the preloader to listen to the main application, without needing any reference to the application or the flex framework.
&lt;br /&gt;&lt;code&gt;
package net.digitalprimates.preload
{
	public class PreloadEventBus extends EventDispatcher
	{
		public var isReady:Boolean = false;
		
		private static var _instance:PreloadEventBus;
		
public static const READY:String = &quot;READY&quot;;
		
		public static function getInstance():PreloadEventBus
		{
			if (!_instance)
			{
				_instance = new PreloadEventBus(new SingletonEnforcer());
			}
			return _instance;
		}
					
		public function PreloadEventBus(singletonEnforcer:SingletonEnforcer)
		{
			if (!singletonEnforcer)
			{
				throw new Error(&quot;PreloadEventBus is a singleton class, use getInstance() instead&quot;);
			} 
		}
	}
}

class SingletonEnforcer {}
&lt;/code&gt;&lt;br /&gt;

With this class, when the main application is done with its startup procedure, it&apos;s a simple process to get a reference to the PreloadEventBus, set isReady to true, and dispatch an event.
&lt;br /&gt;&lt;code&gt;
protected function applicationCustomStartupDone(event:Event)
{
	var bus:PreloadEventBus = PreloadEventBus.getInstance();
	bus.isReady = true;
	bus.dispatchEvent( new Event ( PreloadEventBus.READY );
}
&lt;/code&gt;&lt;br /&gt;

In the custom preloader, you can override the set preload method, and instead of listening for the complete event as the base class does, listen for the INIT_COMPLETE event, which indicates that the application has loaded, and had its initialize event dispatched.   In the event handler for this method, you will get a reference to the PreloadEventBus, check if the application has already set the isReady flag to true, and if not, listen for the READY event.

&lt;br /&gt;&lt;code&gt;
private function bus:PreloadEventBus = PreloadEventBus.getInstance();

override public function set preloader( value:Sprite ):void 
{    
	preloader.addEventListener( FlexEvent.INIT_COMPLETE , initComplete);
}
&lt;/code&gt;&lt;br /&gt;

An important thing to note is the lack of call to super.preloader in this overridden setter.  If the base classes setter is allowed to run, the preloader will act as initially intended, such that it disappears when the application is done downloading.  As the purpose of this preloader is to allow for the application to determine when to hide the preloader and start the app, its important we override this functionality.  You may find that you need to listen for other events here, such as ProgressEvent.PROGRESS, FlexEvent.INIT_PROGRESS or Event.COMPLETE.  This example shows the bare minimum you would need to make use of the preloader

&lt;br /&gt;&lt;code&gt;
private function initComplete( event:Event ):void 
{      
    if (bus.isReady)
    {
    	completePreloader(event)    	
    }
    else
	{
    	bus.addEventListener(PreloadEventBus.READY, completePreloader);
    }
}
&lt;/code&gt;&lt;br /&gt;

While its not expected that the application will be done with its initialization procedures before the INIT_COMPLETE, but, based on how the application is built, it is possible.  To avoid this race condition, the isReady property of the PreloadEventBus is used, so that the preloader  only listens for the READY event if the application is not already done with its startup.

Last but not least is the completePreloader method, which is called when the preloader has determined that the application is ready.  With the logic in initComplete, this same method will be used, regardless whether the state of the application was determined by the isReady property, or by listening for the PreloadEventBus.READY event.

&lt;br /&gt;&lt;code&gt;
private function completePreloader(event:Event):void
{
	dispatchEvent( new Event( Event.COMPLETE ) );	
}
&lt;/code&gt;&lt;br /&gt;

Event.COMPLETE  is used, as this is the event for which the system manager listens, to know that the preloader is done with its job.   By preventing its normal mechanism of dispatching, and only dispatching it when the application determines it is ready, you have a nice clean approach to allow the the preloader to display as long as it needs to. 
				</description>
				
				<category>flex</category>				
				
				<category>flash9</category>				
				
				<category>actionscript3</category>				
				
				<category>as3</category>				
				
				<category>flex3</category>				
				
				<category>fp9</category>				
				
				<category>fp10</category>				
				
				<pubDate>Fri, 02 Oct 2009 11:13:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2009/10/2/Fun-with-custom-preloaders-in-Flex</guid>
				
			</item>
			
			<item>
				<title>FlexUnit 4 feature overview</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2009/5/20/FlexUnit-4-feature-overview</link>
				<description>
				
				&lt;div style=&quot;width:425px;text-align:left&quot; id=&quot;__ss_1464219&quot;&gt;&lt;a style=&quot;font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/jefftapper/flex-unit-4-feature-overview?type=presentation&quot; title=&quot;Flex Unit 4 Feature Overview&quot;&gt;Flex Unit 4 Feature Overview&lt;/a&gt;&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=flexunit4featureoverview-090520082319-phpapp02&amp;stripped_title=flex-unit-4-feature-overview&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=flexunit4featureoverview-090520082319-phpapp02&amp;stripped_title=flex-unit-4-feature-overview&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style=&quot;font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;&quot;&gt;View more &lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/jefftapper&quot;&gt;jefftapper&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;

More details available on &lt;a href=&quot;http://blogs.adobe.com/codeslinger&quot;&gt;Labriola&apos;s blog&lt;/a&gt; and &lt;a href=&quot;http://opensource.adobe.com/wiki/display/flexunit/FlexUnit+4+feature+overview&quot;&gt;openSource.adobe&lt;/a&gt; 
				</description>
				
				<category>fluint</category>				
				
				<category>AIR</category>				
				
				<category>actionscript3</category>				
				
				<category>flash</category>				
				
				<category>flashplayer</category>				
				
				<category>flex3</category>				
				
				<category>FlexUnit4</category>				
				
				<category>as3</category>				
				
				<category>flex</category>				
				
				<pubDate>Wed, 20 May 2009 09:29:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2009/5/20/FlexUnit-4-feature-overview</guid>
				
			</item>
			
			<item>
				<title>How not to code Flex Applications</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2009/5/19/How-not-to-code-Flex-Applications</link>
				<description>
				
				&lt;div style=&quot;width:425px;text-align:left&quot; id=&quot;__ss_1460844&quot;&gt;&lt;a style=&quot;font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/jefftapper/how-not-to-code-flex-applications?type=presentation&quot; title=&quot;How Not To Code Flex Applications&quot;&gt;How Not To Code Flex Applications&lt;/a&gt;&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=hownottocodeflexapplications-090519155412-phpapp01&amp;stripped_title=how-not-to-code-flex-applications&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=hownottocodeflexapplications-090519155412-phpapp01&amp;stripped_title=how-not-to-code-flex-applications&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style=&quot;font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;&quot;&gt;View more &lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a style=&quot;text-decoration:underline;&quot; href=&quot;http://www.slideshare.net/jefftapper&quot;&gt;jefftapper&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt; 
				</description>
				
				<category>flex</category>				
				
				<category>flex3</category>				
				
				<category>actionscript3</category>				
				
				<category>adobe</category>				
				
				<category>flash</category>				
				
				<pubDate>Tue, 19 May 2009 17:08:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2009/5/19/How-not-to-code-Flex-Applications</guid>
				
				<enclosure url="http://blogs.digitalprimates.net/jefftapper/enclosures/WhatNotToDo.zip" length="42290" type="application/x-zip-compressed"/>
				
			</item>
			
			<item>
				<title>Flex Camp 360 NJ</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/10/7/Flex-Camp-360-NJ</link>
				<description>
				
				&lt;p&gt;File this under the better late than never...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;On September 26 and 27th, the folks who bring you Flex 360, put on a 2 day &amp;quot;Flex Camp&amp;quot; in New Jersery, which went over extremely well.&amp;nbsp; I was presenting on Testing with Fluint (formerly known as DPUint).&amp;nbsp; Of course, I promised my slides and materials would be up on here before the end of the weekend.&amp;nbsp; Well, realizing its over a week later, I&amp;#39;m finally getting them uploaded now.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;So, if you were one of the many asking for those materials, here they are.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://files.blog-city.com/files/J05/88593/p/f/testing_with_fluint.pdf&quot;&gt;slides&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;http://files.blog-city.com/files/J05/88593/b/fluinttests.zip&quot;&gt;source code&lt;/a&gt;&lt;/p&gt; 
				</description>
				
				<category>flex</category>				
				
				<category>flex2</category>				
				
				<category>flex3</category>				
				
				<category>actionscript3</category>				
				
				<category>as3</category>				
				
				<category>adobe</category>				
				
				<category>AIR</category>				
				
				<category>fluint</category>				
				
				<pubDate>Tue, 07 Oct 2008 21:35:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/10/7/Flex-Camp-360-NJ</guid>
				
			</item>
			
			<item>
				<title>I woke up this morning...</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/5/15/I-woke-up-this-morning</link>
				<description>
				
				and found the public beta of flash player 10 was out.  How cool is that.  

I knew this would be coming before too long, but didnt realize that it would be out so quickly.  This new version is filled with lots of new features aimed at allowing greater &quot;expressiveness&quot; in flash player content, such as 3d effects, custom filters, enhanced text rendering, and revs to the drawing API.  Of course, like each version before it, FP10 also has lots of performance enhancements.  What are you waiting for go get it on &lt;a href=&quot;http://labs.adobe.com&quot;&gt;adobe labs&lt;/a&gt;


I&apos;m particularly looking forward to working with the Advanced Text Rendering features, which promise to allow lots of layout possibilities, including bi-directional text!

more later 
				</description>
				
				<category>fp10</category>				
				
				<category>actionscript3</category>				
				
				<category>as3</category>				
				
				<category>flashplayer</category>				
				
				<category>flash</category>				
				
				<pubDate>Thu, 15 May 2008 08:26:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/5/15/I-woke-up-this-morning</guid>
				
			</item>
			
			<item>
				<title>You can stop waiting, its been released.</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/4/9/You-can-stop-waiting-its-been-released</link>
				<description>
				
				I&apos;m a bit late in releasing this news, but our &quot;Flex 3 Training from the source book&quot; was released last week, and is now available from &lt;a href=&quot;http://www.peachpit.com/store/product.aspx?isbn=0321529189&quot;&gt;our publisher&lt;/a&gt;, as well as the major online bookstores such as &lt;a href=&quot;http://www.amazon.com/Adobe-Flex-3-Training-Source/dp/0321529189/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1207788638&amp;amp;sr=8-1&quot;&gt;Amazon&lt;/a&gt;, and &lt;a href=&quot;http://search.barnesandnoble.com/booksearch/isbninquiry.asp?ean=0321529189&quot;&gt;Barnes and Noble&lt;/a&gt;.  Speaking of Amazon, we are currently the #843 best selling of all their books, #15 in the Computers and Internet / Software category, and #8 in Computers and Internet / Programming.  Thanks to all of you who have bought our book, and pushed the sales ranks so high. 

Anyhow, I know folks have been asking me for months when this book would finally be released, and the answer is, last week.

Enjoy. 
				</description>
				
				<category>flex</category>				
				
				<category>flex3</category>				
				
				<category>actionscript3</category>				
				
				<category>as3</category>				
				
				<category>books</category>				
				
				<category>adobe</category>				
				
				<category>ria</category>				
				
				<pubDate>Wed, 09 Apr 2008 21:06:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/4/9/You-can-stop-waiting-its-been-released</guid>
				
			</item>
			
			<item>
				<title>CFUnited Europe, AJAXWorld, and more conference stuff...</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/3/4/CFUnited-Europe-AJAXWorld-and-more-conference-stuff</link>
				<description>
				
				Next week I&amp;#39;m off to London to speak at &lt;a href=&quot;http://europe.cfunited.com&quot;&gt;CFUnited Europe&lt;/a&gt;, and the following week, I&amp;#39;ll be speaking at &lt;a href=&quot;http://www.ajaxworld.com/general/sessiondetail0308.htm?id=130&quot;&gt;AJAX World East&lt;/a&gt;.&amp;nbsp; In both places, I&amp;#39;ll be speaking about the joy that is Flex 3 in all its forms.&amp;nbsp; The CFUnited talk is more focused on how Flex can improve the lives of CF Developers, while the AJAX World one is more focused on how Flex can help RIA developers increase their real world Retursn On Investment from RIA&amp;#39;s.&amp;nbsp; On another note, CFUnited has just released the &lt;a href=&quot;http://cfunited.com/go/schedule&quot;&gt;session schedule&lt;/a&gt; for their Washington DC Conference in June, and rumor is that the session schedule for WebManiacs should be available shortly. 
				</description>
				
				<category>cfmx7</category>				
				
				<category>AIR</category>				
				
				<category>actionscript3</category>				
				
				<category>adobe</category>				
				
				<category>cfunited</category>				
				
				<category>ajax</category>				
				
				<category>flex3</category>				
				
				<category>Speaking Conferences</category>				
				
				<category>coldfusion</category>				
				
				<category>as3</category>				
				
				<category>flex</category>				
				
				<pubDate>Tue, 04 Mar 2008 07:53:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/3/4/CFUnited-Europe-AJAXWorld-and-more-conference-stuff</guid>
				
			</item>
			
			<item>
				<title>WebManiacs 2008, Coming soon...</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/1/22/WebManiacs-2008-Coming-soon</link>
				<description>
				
				&lt;a href=&quot;http://www.webmaniacsconference.com/&quot;&gt;The WebManiacs 2008&lt;/a&gt; conference schedule has been finalized and registration is open. Early bird pricing ends Jan 31. Consisting of a two-day ColdFusion conference (&quot;CFManiacs&quot;) coupled with a three-day Flex conference (FlexManiacs), hosting over 70 speakers and 130 distinct topics (some of which are hands-on), WebManiacs promises to have the most comprehensive coverage of Flex, AIR, and ColdFusion at the lowest price. Seating is limited, so folks should register early in order to get into the more popular sessions. 

I&apos;ll be speaking on building AIR applications in the first few days of the conference. 
				</description>
				
				<category>cfmx7</category>				
				
				<category>apollo</category>				
				
				<category>actionscript3</category>				
				
				<category>as3</category>				
				
				<category>books</category>				
				
				<category>coldfusion</category>				
				
				<category>AIR</category>				
				
				<pubDate>Tue, 22 Jan 2008 12:38:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/1/22/WebManiacs-2008-Coming-soon</guid>
				
			</item>
			
			<item>
				<title>My Speaking Engagements for the first half of 2008</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/1/22/My-Speaking-Engagements-for-the-first-half-of-2008</link>
				<description>
				
				&lt;p&gt;1/18 - &lt;a href=&quot;http://www.flexcampchicago.com/&quot;&gt;Flex Camp Chicago&lt;/a&gt;&lt;/p&gt;&lt;p&gt;1/24 - &lt;a href=&quot;http://www.omahaflexcamp.org/&quot;&gt;Flex Camp Omaha&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2/24-2/27 - &lt;a href=&quot;http://www.360conferences.com/360flex/&quot;&gt;Flex 360 Atlanta&lt;/a&gt;&lt;/p&gt;&lt;p&gt;3/12-3/13 - &lt;a href=&quot;/cfunited_europe.htm&quot;&gt;CFUnited Europe&lt;/a&gt;&lt;/p&gt;&lt;p&gt;5/1-5/4 - &lt;a href=&quot;http://www.cfobjective.com/&quot;&gt;CF.Objective()&lt;/a&gt;&lt;/p&gt;&lt;p&gt;5/19-5/23 - &lt;a href=&quot;http://www.webmaniacsconference.com/&quot;&gt;WebManiacs&lt;/a&gt;&lt;/p&gt;&lt;p&gt;6/25-6/28 - &lt;a href=&quot;http://cfunited.com/&quot;&gt;CFUnited&lt;/a&gt;&lt;/p&gt; 
				</description>
				
				<category>cfunited</category>				
				
				<category>cfmx7</category>				
				
				<category>actionscript3</category>				
				
				<category>fp9</category>				
				
				<category>adobe</category>				
				
				<category>Speaking Conferences</category>				
				
				<category>flash</category>				
				
				<category>flashplayer</category>				
				
				<category>flex3</category>				
				
				<category>apollo</category>				
				
				<category>coldfusion</category>				
				
				<category>flash9</category>				
				
				<category>FMS</category>				
				
				<category>as3</category>				
				
				<category>flex</category>				
				
				<category>enterprise</category>				
				
				<pubDate>Tue, 22 Jan 2008 12:36:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2008/1/22/My-Speaking-Engagements-for-the-first-half-of-2008</guid>
				
			</item>
			
			<item>
				<title>Hey, what am I doing on blogs.digitalprimates.net?</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2007/12/6/Hey-what-am-I-doing-on-blogsdigitalprimatesnet</link>
				<description>
				
				&lt;p&gt;I&amp;#39;ve been a bit slow in getting this announcement out, as I see several other bloggers have already posted on this, but the rumors are true.&amp;nbsp; Tapper, Nimer and Associates. Inc.&amp;nbsp;has teamed up with Digital Primates Inc.&amp;nbsp;&amp;nbsp;&amp;nbsp; Some of you may recall, it was just over a year ago that I teamed up with Mike Nimer to form Tapper, Nimer and Associates.&amp;nbsp; It&amp;#39;s quite an odd experience for me to go from a solo propietorship to a team of 15 or so developers in about 16 months.&amp;nbsp;&amp;nbsp; With all the great minds from both our companies working together, we will be able to help more customer on bigger and better projects.&amp;nbsp;&amp;nbsp; &lt;/p&gt;

&lt;p&gt;Many of you probably know Mike Labriola for his work on custom Flex Components, he has extended the Flex framework in ways that the developers at Adobe never even imagined.&amp;nbsp; He is also frequently speaking at conferences and User groups.&amp;nbsp; Both Nimer and I ran across him at dozens of speaking events across the country, and as we talked, we&amp;nbsp;found there were far more similarities between us then differences.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;One of our first meetings at a conference ended up with him as&amp;nbsp;a co-author on the Flex 2 book.&amp;nbsp;&amp;nbsp;A year and a half of meeting at conferences later, and we were helping each other out on projects so frequently that it made sense to explore further integrating our companies.&amp;nbsp;&amp;nbsp;When the opportunity for Nimer and I to join forces with him and his company, it was much too enticing to pass up.&lt;/p&gt;

&lt;p&gt;We are looking forward to doing great work together, continuing to build cutting-edge applications for our clients, continuing to teach the world to build better RIAs, and continuing to serve the community.&amp;nbsp; &lt;/p&gt; 
				</description>
				
				<category>books</category>				
				
				<category>actionscript3</category>				
				
				<category>flashplayer</category>				
				
				<category>flex3</category>				
				
				<category>flex2</category>				
				
				<category>ria</category>				
				
				<category>FMS</category>				
				
				<category>as3</category>				
				
				<category>flex</category>				
				
				<category>enterprise</category>				
				
				<pubDate>Thu, 06 Dec 2007 10:40:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2007/12/6/Hey-what-am-I-doing-on-blogsdigitalprimatesnet</guid>
				
			</item>
			
			<item>
				<title>Flex 3 Training From the Source - NOW AVAILABLE on rough cuts</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm/2007/10/19/Flex-3-Training-From-the-Source--NOW-AVAILABLE-on-rough-cuts</link>
				<description>
				
				I just heard from our editor&amp;#39;s that about a 1/3 of the content for our upcoming &amp;quot;Flex 3 Training from the Source&amp;quot; book is now available in &lt;a href=&quot;http://safari.peachpit.com/9780321529183&quot;&gt;Rough Cuts form on Safari from Peach Pit.&lt;/a&gt;&amp;#160; Obviously, as the Flex 3 product hasnt been released yet, the chapter there may change as the product evolves, but we have been working diligently to get the updates in your hands as quickly as possible.&amp;#160; So, for those who are dying to get started with Flex 3, you can start reading the pre-release chapters now. 
				</description>
				
				<category>apollo</category>				
				
				<category>flex3</category>				
				
				<category>actionscript3</category>				
				
				<category>as3</category>				
				
				<category>books</category>				
				
				<pubDate>Fri, 19 Oct 2007 03:52:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm/2007/10/19/Flex-3-Training-From-the-Source--NOW-AVAILABLE-on-rough-cuts</guid>
				
			</item>
			
			<item>
				<title>CFUnited Europe</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm?mode=entry&amp;entry=A811B595-D2F3-75D8-385511064C1E4DF9</link>
				<description>
				
				I&amp;#39;ve been asked to speak at the first ever &lt;a href=&quot;http://europe.cfunited.com/&quot;&gt;CFUnited Europe&lt;/a&gt; this year.&amp;#160; CFUnited, which has been running each year in the Washington DC area (earlier under the name CFUN) for the past 9 years, is branching out, and hosting the conference in Europe as well.&amp;#160;The conference will be on March 12th and 13th in London.&amp;#160; Hope to see you there!&lt;a href=&quot;http://europe.cfunited.com&quot;&gt;&lt;img src=&quot;http://files.blog-city.com/files/J05/88593/p/f/speaker_button.gif&quot; alt=&quot;&quot; title=&quot;speaker_button.gif&quot; width=&quot;149&quot; height=&quot;146&quot; align=&quot;left&quot; /&gt;&lt;/a&gt;&amp;#160; I hope to be presenting on Flex 3 for ColdFusion developers. 
				</description>
				
				<category>cfunited</category>				
				
				<category>flex</category>				
				
				<category>flex2</category>				
				
				<category>flex3</category>				
				
				<category>actionscript3</category>				
				
				<category>as3</category>				
				
				<category>coldfusion</category>				
				
				<category>cfmx7</category>				
				
				<pubDate>Fri, 28 Sep 2007 19:51:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm?mode=entry&amp;entry=A811B595-D2F3-75D8-385511064C1E4DF9</guid>
				
			</item>
			
			<item>
				<title>Reflecting an image in Flex</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm?mode=entry&amp;entry=A811B068-A0C2-FCBE-B0F81DC5BDCB980C</link>
				<description>
				
				&lt;p&gt;Increasingly, clients have been asking for a &amp;quot;reflection&amp;quot; effect, showing a vertically flipped image of a component next to the actual component.&amp;#160; After reinventing the wheel on this several times, I came up with this simple reusable component:&lt;/p&gt;&lt;pre&gt;package com.tappernimer.components{&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;import mx.containers.Canvas;&lt;/pre&gt;&lt;pre&gt;import mx.core.UIComponent;&lt;/pre&gt;&lt;pre&gt;import flash.display.BitmapData;&lt;/pre&gt;&lt;pre&gt;import flash.geom.Matrix;&lt;/pre&gt;&lt;pre&gt;import flash.display.IBitmapDrawable;&lt;/pre&gt;&lt;pre&gt;public class VerticalReflection extends Canvas{&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;private var _component:UIComponent;&lt;/pre&gt;&lt;pre&gt;public var trans:Number=.5;&lt;/pre&gt;&lt;pre&gt;public var filterArray:Array=new Array();&lt;/pre&gt;&lt;pre&gt;public var skewY:Number=0;&lt;/pre&gt;&lt;pre&gt;public var skewX:Number=0;&lt;/pre&gt;&lt;pre&gt;public function get component():UIComponent{&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;return _component;&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;pre&gt;public function set component(c:UIComponent):void{&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;this._component = c;&lt;/pre&gt;&lt;pre&gt;// hack to work around issue with component being &lt;/pre&gt;&lt;pre&gt;// a dynamically loaded image its possible for the &lt;/pre&gt;&lt;pre&gt;// image to be fully loaded, but its height or width &lt;/pre&gt;&lt;pre&gt;// not yet set this call later, keeps retrying until &lt;/pre&gt;&lt;pre&gt;// the values are set.&lt;/pre&gt;&lt;pre&gt;if(c.width ==0 || c.height==0){&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;callLater(resetComponent,[c]);&lt;/pre&gt;&lt;pre&gt;return;&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;pre&gt;doReflection();&lt;/pre&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;pre&gt;private function resetComponent(c:UIComponent):void{&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;this.component = c;&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;pre&gt;private function doReflection():void {&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;// create bitmap object&lt;/pre&gt;&lt;pre&gt;var bmpData:BitmapData = new BitmapData(&lt;/pre&gt;&lt;pre&gt;	component.width,component.height);&lt;/pre&gt;&lt;pre&gt;// create matrix&lt;/pre&gt;&lt;pre&gt;var invertMatrix:Matrix = new Matrix(1,skewY,skewX);&lt;/pre&gt;&lt;pre&gt;// set matrix to invert vertically, but normal horizontally&lt;/pre&gt;&lt;pre&gt;invertMatrix.scale(1, -1);&lt;/pre&gt;&lt;pre&gt;// move matrix, so top is at bottom, and vice versa&lt;/pre&gt;&lt;pre&gt;invertMatrix.translate(0, component.height);&lt;/pre&gt;&lt;pre&gt;// draw component flipped&lt;/pre&gt;&lt;pre&gt;bmpData.draw(component as IBitmapDrawable,invertMatrix);&lt;/pre&gt;&lt;pre&gt;// create a new holder for the image&lt;/pre&gt;&lt;pre&gt;var ref:UIComponent = new UIComponent();&lt;/pre&gt;&lt;pre&gt;// match new holders size to the original&lt;/pre&gt;&lt;pre&gt;ref.setActualSize(component.width,component.height);&lt;/pre&gt;&lt;pre&gt;// fill the new component with the image&lt;/pre&gt;&lt;pre&gt;ref.graphics.beginBitmapFill(bmpData);&lt;/pre&gt;&lt;pre&gt;ref.graphics.drawRect(0, 0, &lt;/pre&gt;&lt;pre&gt;	component.width, component.height);&lt;/pre&gt;&lt;pre&gt;ref.graphics.endFill();&lt;/pre&gt;&lt;pre&gt;// set the transparency&lt;/pre&gt;&lt;pre&gt;ref.alpha = trans;&lt;/pre&gt;&lt;pre&gt;// apply any filters&lt;/pre&gt;&lt;pre&gt;ref.filters = filterArray;&lt;/pre&gt;&lt;pre&gt;// add image to stage&lt;/pre&gt;&lt;pre&gt;addChild(ref);&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;} &lt;/pre&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;p&gt;This component can then be passed any other component to reflect, accepting filters (filterArray), alpha value (trans), and arguments to allow you to skew the reflection.&amp;#160; In fact, using it can be as simple as this:&lt;/p&gt;&lt;font size=&quot;2&quot;&gt;&lt;p align=&quot;left&quot;&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;/p&gt;&lt;/font&gt;&lt;pre&gt;&amp;lt;mx:Application xmlns:mx=&lt;a href=&quot;http://www.adobe.com/2006/mxml&quot;&gt;http://www.adobe.com/2006/mxml&lt;/a&gt; &lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;xmlns:c=&amp;quot;com.tappernimer.components.*&amp;quot; &lt;/pre&gt;&lt;pre&gt;layout=&amp;quot;absolute&amp;quot;&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;mx:Image id=&amp;quot;image&amp;quot; source=&amp;quot;images/tn_logo_full.jpg&amp;quot;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&amp;lt;c:VerticalReflection id=&amp;quot;ref&amp;quot; &lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;component=&amp;quot;{image}&amp;quot; &lt;/pre&gt;&lt;pre&gt;x=&amp;quot;{image.x}&amp;quot; y=&amp;quot;{image.height}&amp;quot; &lt;/pre&gt;&lt;pre&gt;filterArray=&amp;quot;{new Array(new BlurFilter())}&amp;quot;/&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;pre&gt;&amp;lt;/mx:Application&amp;gt;&lt;/pre&gt;&lt;pre&gt;Here is the code running:&lt;br /&gt;&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0&quot; width=&quot;225&quot; height=&quot;225&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://files.blog-city.com/files/J05/88593/b/reflectiontest.swf&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;param name=&quot;menu&quot; value=&quot;false&quot; /&gt;&lt;param name=&quot;wmode&quot; value=&quot;&quot; /&gt;&lt;embed src=&quot;http://files.blog-city.com/files/J05/88593/b/reflectiontest.swf&quot; wmode=&quot;&quot; quality=&quot;high&quot; menu=&quot;false&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;225&quot; height=&quot;225&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt; 
				</description>
				
				<category>runtime</category>				
				
				<category>actionscript3</category>				
				
				<category>fp9</category>				
				
				<category>flash</category>				
				
				<category>flashplayer</category>				
				
				<category>flex3</category>				
				
				<category>flex2</category>				
				
				<category>flash9</category>				
				
				<category>as3</category>				
				
				<category>flex</category>				
				
				<pubDate>Fri, 21 Sep 2007 19:09:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm?mode=entry&amp;entry=A811B068-A0C2-FCBE-B0F81DC5BDCB980C</guid>
				
			</item>
			</channel></rss>