<?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>James Whittaker &#187; flex</title>
	<atom:link href="http://jameswhittaker.com/tag/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://jameswhittaker.com</link>
	<description>Front-end Developer, Designer and Consultant</description>
	<lastBuildDate>Sat, 19 Sep 2009 17:36:02 +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>Skinning Flex with Degrafa and FXG</title>
		<link>http://jameswhittaker.com/journal/skinning-flex-with-degrafa-and-fxg/</link>
		<comments>http://jameswhittaker.com/journal/skinning-flex-with-degrafa-and-fxg/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 17:35:50 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[degrafa]]></category>
		<category><![CDATA[flashcamp]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[fxg]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=322</guid>
		<description><![CDATA[
For my session at Flash Camp Birmingham I wanted to introduce people to declarative skinning within Flex. I was skinning Flex applications back in Flex 2 and to get the right visual appeal it was quite a tricky thing to get right. There was a reliance on heavy external assets brought into Flex and scaled [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/06/fcsession.jpg" alt="fcsession" title="fcsession" width="535" height="150" class="alignnone size-full wp-image-321 bdr" /></p>
<p>For my session at <a href="http://jameswhittaker.com/journal/flash-camp-birmingham-write-up/">Flash Camp Birmingham</a> I wanted to introduce people to declarative skinning within Flex. I was skinning Flex applications back in Flex 2 and to get the right visual appeal it was quite a tricky thing to get right. There was a reliance on heavy external assets brought into Flex and scaled using Scale9 techniques. There were many times I wanted to have better control of the UI I was creating through not only a more advanced CSS capability but without having to resort to creating skins from scratch directly with the Flash drawing API.</p>
<p><span id="more-322"></span></p>
<p><a href="http://www.degrafa.org">Degrafa</a> is a declarative graphics framework for Flex (and soon for pure ActionScript projects). It makes sense using MXML like syntax for creating your graphical skins. The work the <a href="http://www.degrafa.org">Degrafa</a> team have done is amazing, I had a very good email conversation with Jaun Sanchez of Effective UI before my talk so that I could clarify a few things and get an insight into the future of <a href="http://www.degrafa.org">Degrafa</a>, especially with Flex 4 and <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> from Adobe going into public beta.</p>
<p><a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> is a graphical interchange format developed by Adobe and is similar in many ways to SVG. Adobe are building future tooling to take advantage of this format and enable rich graphics to be transferable between developer and designer tools. <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> is also similar in approach to <a href="http://www.degrafa.org">Degrafa</a> the syntax is very alike. Both have their place and advantages and disadvantages depending upon your toolset choice and project requirements.</p>
<h4>Flash Camp session slides</h4>
<p>Here are my session slides for Flash Camp Birmingham (UK), 16th June 2009. Taking an introductory look at <a href="http://www.degrafa.org">Degrafa</a> and <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> I demonstrated the code for skinning a simple UI in both implementations. The skin is part of a project i&#8217;m working on for creating a Palm Pre looking skin for Flex 3 with <a href="http://www.degrafa.org">Degrafa</a> and Flex 4 with <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a>.</p>
<p>As you can see in the examples further down the page they are very visually close! The full skin will be available soon but for now take a look at the code and I welcome any comments or suggestions on my implementation.</p>
<div style="width:425px;text-align:left" id="__ss_1612839"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=perfectingtheusersexpinair-1228645472343018-8&#038;rel=0&#038;stripped_title=flash-camp-degrafa-fxg" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=perfectingtheusersexpinair-1228645472343018-8&#038;rel=0&#038;stripped_title=flash-camp-degrafa-fxg" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<h4>Degrafa skin</h4>
<p>For this skin I&#8217;m using Flex 3 and a CSS file to target the skin classes for the components. To get a Degrafa skin to match the width and height of the component you no longer need to override the updateDisplayList() method. There are two exposed variables called skinWidth and skinHeight that you should use.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_FlashCamp2_1325694257"
			class="flashmovie"
			width="300"
			height="400">
	<param name="movie" value="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/degrafa/FlashCamp2.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/degrafa/FlashCamp2.swf"
			name="fm_FlashCamp2_1325694257"
			width="300"
			height="400">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>The MXML structure for this Flex 3 example is simply:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;">	<span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span> xmlns:degrafa=<span style="color: #ff0000;">&quot;http://www.degrafa.com/2007&quot;</span> viewSourceURL=<span style="color: #ff0000;">&quot;srcview/index.html&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Style</span> source=<span style="color: #ff0000;">&quot;default.css&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TabNavigator</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> horizontalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> width=<span style="color: #ff0000;">&quot;250&quot;</span> height=<span style="color: #ff0000;">&quot;380&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:VBox</span> label=<span style="color: #ff0000;">&quot;Menu item 1&quot;</span> verticalGap=<span style="color: #ff0000;">&quot;15&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:HBox</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Button A&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Button B&quot;</span> selected=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:HBox</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:HBox</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span> styleName=<span style="color: #ff0000;">&quot;preItem&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Text</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:HBox</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:HBox</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span> styleName=<span style="color: #ff0000;">&quot;preItem&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Text</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:HBox</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Box</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span> styleName=<span style="color: #ff0000;">&quot;preItem&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Text</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Box</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:VBox</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:TabNavigator</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Then the Degrafa button is skinned as follows (refer to the source in the download for full code):</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;">	<span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;">&lt;GraphicBorderSkin xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> xmlns=<span style="color: #ff0000;">&quot;http://www.degrafa.com/2007&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- use skinWidth and skinHeight for setting component dimensions --&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;fills<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;LinearGradientFill id=<span style="color: #ff0000;">&quot;topHighlight&quot;</span> angle=<span style="color: #ff0000;">&quot;90&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.2&quot;</span> alpha=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/LinearGradientFill<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;LinearGradientFill id=<span style="color: #ff0000;">&quot;upFill&quot;</span> angle=<span style="color: #ff0000;">&quot;90&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#8A8A8A&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#595957&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.45&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#4E4E50&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.55&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#686B6B&quot;</span> ratio=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/LinearGradientFill<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;LinearGradientFill id=<span style="color: #ff0000;">&quot;overFill&quot;</span> angle=<span style="color: #ff0000;">&quot;90&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#8AA2BE&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#525C68&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.45&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#464E58&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.55&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#6A7686&quot;</span> ratio=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/LinearGradientFill<span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;/fills<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;strokes<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;SolidStroke color=<span style="color: #ff0000;">&quot;#676767&quot;</span> id=<span style="color: #ff0000;">&quot;upStroke&quot;</span> weight=<span style="color: #ff0000;">&quot;0.5&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;LinearGradientStroke id=<span style="color: #ff0000;">&quot;highlightStroke&quot;</span> angle=<span style="color: #ff0000;">&quot;90&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.6&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;GradientStop color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.3&quot;</span> alpha=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/LinearGradientStroke<span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;/strokes<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;geometry<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;GeometryComposition<span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;RoundedRectangle id=<span style="color: #ff0000;">&quot;buttonRect&quot;</span></span>
<span style="color: #000000;">								  width=<span style="color: #ff0000;">&quot;{skinWidth}&quot;</span></span>
<span style="color: #000000;">								  height=<span style="color: #ff0000;">&quot;{skinHeight}&quot;</span></span>
<span style="color: #000000;">								  cornerRadius=<span style="color: #ff0000;">&quot;15&quot;</span></span>
<span style="color: #000000;">								  fill=<span style="color: #ff0000;">&quot;{upFill}&quot;</span></span>
<span style="color: #000000;">								  stroke=<span style="color: #ff0000;">&quot;{upStroke}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;RoundedRectangle width=<span style="color: #ff0000;">&quot;{skinWidth-1}&quot;</span></span>
<span style="color: #000000;">								  x=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">								  y=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">								  height=<span style="color: #ff0000;">&quot;{skinHeight}&quot;</span></span>
<span style="color: #000000;">								  cornerRadius=<span style="color: #ff0000;">&quot;15&quot;</span></span>
<span style="color: #000000;">								  stroke=<span style="color: #ff0000;">&quot;{highlightStroke}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/GeometryComposition<span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;/geometry<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;filters<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DropShadowFilter</span> color=<span style="color: #ff0000;">&quot;#676767&quot;</span></span>
<span style="color: #000000;">								 blurX=<span style="color: #ff0000;">&quot;5&quot;</span></span>
<span style="color: #000000;">								 blurY=<span style="color: #ff0000;">&quot;5&quot;</span></span>
<span style="color: #000000;">								 angle=<span style="color: #ff0000;">&quot;90&quot;</span></span>
<span style="color: #000000;">								 distance=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">								 alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;">&lt;/filters<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;states<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;State name=<span style="color: #ff0000;">&quot;upSkin&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;SetProperty target=<span style="color: #ff0000;">&quot;{buttonRect}&quot;</span> name=<span style="color: #ff0000;">&quot;fill&quot;</span> value=<span style="color: #ff0000;">&quot;{upFill}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/State<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;State name=<span style="color: #ff0000;">&quot;overSkin&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;SetProperty target=<span style="color: #ff0000;">&quot;{buttonRect}&quot;</span> name=<span style="color: #ff0000;">&quot;fill&quot;</span> value=<span style="color: #ff0000;">&quot;{overFill}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/State<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;State name=<span style="color: #ff0000;">&quot;downSkin&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;">&lt;SetProperty target=<span style="color: #ff0000;">&quot;{buttonRect}&quot;</span> name=<span style="color: #ff0000;">&quot;fill&quot;</span> value=<span style="color: #ff0000;">&quot;{overFill}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;/State<span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;">&lt;State name=<span style="color: #ff0000;">&quot;selectedUpSkin&quot;</span> basedOn=<span style="color: #ff0000;">&quot;downSkin&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;">&lt;State name=<span style="color: #ff0000;">&quot;selectedOverSkin&quot;</span> basedOn=<span style="color: #ff0000;">&quot;downSkin&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
		<span style="color: #000000;">&lt;/states<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;">&lt;/GraphicBorderSkin<span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p><a href="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/degrafa/srcview/FlashCamp2.zip">Download the Flex 3 source here</a>.</p>
<h4>FXG skin</h4>
<p>The MXML is slidghtly different here because of Flex 4 using the new Spark components. Not all components have been created in Spark so elements like tabNavigator are still Halo components. This is not an issue as you can mix and match Halo and Spark components with certain rules like a Halo navigator can only have a Halo container as it&#8217;s first child. Inside that container you can then place Spark components.</p>
<p>Looking around the Flex 4 SDK there is a set of Spark skins for Halo components so that is the technique I have used here. SparkSkin is the base class for these skins so I was able to skin the tabNavigator using FXG.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_FlashCamp3_264946926"
			class="flashmovie"
			width="300"
			height="400">
	<param name="movie" value="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/fxg/FlashCamp3.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/fxg/FlashCamp3.swf"
			name="fm_FlashCamp3_264946926"
			width="300"
			height="400">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Using skinnableComponent you can then hang Spark skins off them as they support skinning (obviously!). So the simple MXML structure we have is:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Application</span> xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> xmlns:mx=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/halo&quot;</span> backgroundColor=<span style="color: #ff0000;">&quot;#333333&quot;</span> viewSourceURL=<span style="color: #ff0000;">&quot;srcview/index.html&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Style</span> source=<span style="color: #ff0000;">&quot;styles/default.css&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TabNavigator</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> horizontalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> width=<span style="color: #ff0000;">&quot;250&quot;</span> height=<span style="color: #ff0000;">&quot;380&quot;</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:VBox</span> label=<span style="color: #ff0000;">&quot;Menu item 1&quot;</span> verticalGap=<span style="color: #ff0000;">&quot;15&quot;</span><span style="color: #7400FF;">&gt;</span></span>		
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:HGroup</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> styleName=<span style="color: #ff0000;">&quot;preSkin&quot;</span> label=<span style="color: #ff0000;">&quot;Button A&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> styleName=<span style="color: #ff0000;">&quot;preSkin&quot;</span> label=<span style="color: #ff0000;">&quot;Button B&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:HGroup</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SkinnableContainer</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SimpleText</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:SkinnableContainer</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SkinnableContainer</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SimpleText</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:SkinnableContainer</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SkinnableContainer</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;50&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SimpleText</span> text=<span style="color: #ff0000;">&quot;Some Text&quot;</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:SkinnableContainer</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:VBox</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:TabNavigator</span><span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>Then as an example the skin for the button in FXG is:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;">	<span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Skin</span> xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span></span>
<span style="color: #000000;">			xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span></span>
<span style="color: #000000;">			xmlns:ai=<span style="color: #ff0000;">&quot;http://ns.adobe.com/ai/2008&quot;</span></span>
<span style="color: #000000;">			xmlns:d=<span style="color: #ff0000;">&quot;http://ns.adobe.com/fxg/2008/dt&quot;</span></span>
<span style="color: #000000;">			minHeight=<span style="color: #ff0000;">&quot;35&quot;</span></span>
<span style="color: #000000;">			minWidth=<span style="color: #ff0000;">&quot;25&quot;</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:states</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:State</span> name=<span style="color: #ff0000;">&quot;up&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:State</span> name=<span style="color: #ff0000;">&quot;over&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:State</span> name=<span style="color: #ff0000;">&quot;down&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:State</span> name=<span style="color: #ff0000;">&quot;disabled&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:states</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Metadata</span><span style="color: #7400FF;">&gt;</span></span>[HostComponent(&quot;spark.components.Button&quot;)]<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Metadata</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Rect</span> id=<span style="color: #ff0000;">&quot;upFill&quot;</span></span>
<span style="color: #000000;">				top=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">				right=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">				left=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">				bottom=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #000000;">				radiusX=<span style="color: #ff0000;">&quot;15&quot;</span></span>
<span style="color: #000000;">				radiusY=<span style="color: #ff0000;">&quot;15&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:fill</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:LinearGradient</span> rotation=<span style="color: #ff0000;">&quot;90&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#8A8A8A&quot;</span> color.over=<span style="color: #ff0000;">&quot;#8AA2BE&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#595957&quot;</span> color.over=<span style="color: #ff0000;">&quot;#525C68&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.45&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#4E4E50&quot;</span> color.over=<span style="color: #ff0000;">&quot;#464E58&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.55&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#686B6B&quot;</span> color.over=<span style="color: #ff0000;">&quot;#6A7686&quot;</span> ratio=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:LinearGradient</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:fill</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:stroke</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SolidColorStroke</span> color=<span style="color: #ff0000;">&quot;#676767&quot;</span> weight=<span style="color: #ff0000;">&quot;0.5&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:stroke</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Rect</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Rect</span> id=<span style="color: #ff0000;">&quot;highlightFill&quot;</span></span>
<span style="color: #000000;">				top=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">				right=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">				left=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">				bottom=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">				radiusX=<span style="color: #ff0000;">&quot;15&quot;</span></span>
<span style="color: #000000;">				radiusY=<span style="color: #ff0000;">&quot;15&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:stroke</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:LinearGradientStroke</span> rotation=<span style="color: #ff0000;">&quot;90&quot;</span> weight=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0&quot;</span> alpha=<span style="color: #ff0000;">&quot;0.6&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:GradientEntry</span> color=<span style="color: #ff0000;">&quot;#FDFDFD&quot;</span> ratio=<span style="color: #ff0000;">&quot;0.2&quot;</span> alpha=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:LinearGradientStroke</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:stroke</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Rect</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:SimpleText</span> id=<span style="color: #ff0000;">&quot;labelElement&quot;</span></span>
<span style="color: #000000;">					  color=<span style="color: #ff0000;">&quot;#FFFFFF&quot;</span></span>
<span style="color: #000000;">					  right=<span style="color: #ff0000;">&quot;20&quot;</span></span>
<span style="color: #000000;">					  left=<span style="color: #ff0000;">&quot;20&quot;</span></span>
<span style="color: #000000;">					  verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span></span>
<span style="color: #000000;">					  horizontalCenter=<span style="color: #ff0000;">&quot;0&quot;</span></span>
<span style="color: #000000;">					  verticalCenter=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:filters</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:DropShadowFilter</span> color=<span style="color: #ff0000;">&quot;#676767&quot;</span></span>
<span style="color: #000000;">								blurX=<span style="color: #ff0000;">&quot;5&quot;</span></span>
<span style="color: #000000;">								blurY=<span style="color: #ff0000;">&quot;5&quot;</span></span>
<span style="color: #000000;">								angle=<span style="color: #ff0000;">&quot;90&quot;</span></span>
<span style="color: #000000;">								distance=<span style="color: #ff0000;">&quot;2&quot;</span></span>
<span style="color: #000000;">								alpha=<span style="color: #ff0000;">&quot;0.8&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:filters</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Skin</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p><a href="http://jameswhittaker.com/wordpress/wp-content/uploads/flash/flashcamp/fxg/srcview/FlashCamp3.zip">Download the Flex 4 source here</a>.</p>
<h4>What&#8217;s next</h4>
<p>I&#8217;m looking to release the skins very soon and hopefully the guys at <a href="http://www.degrafa.org">Degrafa</a> will add it to the samples page. </p>
<p>If you have any feedback please leave them in the comments and please Tweet out this post.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/skinning-flex-with-degrafa-and-fxg/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Flex resources</title>
		<link>http://jameswhittaker.com/journal/flex-resources/</link>
		<comments>http://jameswhittaker.com/journal/flex-resources/#comments</comments>
		<pubDate>Fri, 22 May 2009 12:51:24 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=314</guid>
		<description><![CDATA[
Adobe Flex is a great platform to work with for creating rich engaging applications of all sizes for the web and now the desktop with AIR. Now we are at Flex version 3 and the next version Flex 4, which is the SDK, and the editor now called Flash Builder are just around the corner.
There [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/05/flexresources.jpg" alt="flexresources" title="flexresources" width="535" height="150" class="alignnone size-full wp-image-315 bdr" /></p>
<p><a href="http://www.adobe.com/go/flex">Adobe Flex</a> is a great platform to work with for creating rich engaging applications of all sizes for the web and now the desktop with <a href="http://refreshingapps.com">AIR</a>. Now we are at Flex version 3 and the next version Flex 4, which is the SDK, and the editor now called Flash Builder are just around the corner.</p>
<p>There are a number of resources, guides and articles that I use regularly when building Flex or AIR applications. This is a growing resource so bookmark the page and feel free to suggest anything that I may have missed.</p>
<p>Here we go then:</p>
<p><span id="more-314"></span></p>
<h4>Explorers</h4>
<ul>
<li><a href="http://examples.adobe.com/flex3/consulting/styleexplorer/Flex3StyleExplorer.html#">Flex 3 style explorer (Adobe)</a></li>
<li><a href="http://www.adobe.com/devnet/flex/tourdeflex/">Tour de Flex &#8211; Flex 3 component explorer also available as an AIR application (Adobe)</a></li>
<li><a href="http://ryanswanson.com/regexp/#start">Regular Expression explorer</a></li>
<li><a href="http://www.jamesward.com/easingFunctionFun/easingFunctionFun.html">Effects explorer (James Ward)</a></li>
<li><a href="http://www.efflex.org/">Designer effects for Flex components (Tink)</a></li>
</ul>
<h4>Guides and cheat sheets</h4>
<ul>
<li><a href="http://livedocs.adobe.com/flex/3/html/help.html?content=Part2_DevApps_1.html">Flex 3 Developers Guide (Adobe)</a></li>
<li><a href="http://livedocs.adobe.com/flex/3/langref/">Flex 3 Language Reference</a></li>
<li><a href="http://elromdesign.com/blog/2009/03/28/finally…-flex-builder-shortcut-cheat-sheet-for-mac-os/">Flex Builder cheat sheet (OS X)</a></li>
<li><a href="http://blogs.4point.com/armaghan.chaudhary/2009/04/remote-debugging-using-flex-builder-ide.html">Debug a remote application in Flex Builder</a></li>
</ul>
<h4>Coding standards, conventions and best practice</h4>
<ul>
<li><a href="http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions">The guidelines used by the Adobe team on the Flex SDK</a></li>
<li><a href="http://www.adobe.com/devnet/flex/articles/best_practices_pt1.html">Flex best practices part 1 (Adobe DevNet)</a></li>
<li><a href="http://www.adobe.com/devnet/flex/articles/best_practices_pt2.html">Flex best practices part 2 (Adobe DevNet)</a></li>
<li><a href="http://www.infoq.com/news/2008/04/top-10-flex-mistakes">Top 10 Flex mistakes</a></li>
</ul>
<h4>Flex performance</h4>
<ul>
<li><a href="http://www.insideria.com/2009/04/51-actionscript-30-and-flex-op.html">AS3 and Flex optimisation techniques (Inside RIA)</a></li>
<li><a href="http://www.adobe.com/devnet/flex/articles/client_perf.html">Improve client performance (Adobe DevNet)</a></li>
<li><a href="http://gauravj.com/blog/?p=20">Creating smaller SWF&#8217;s (3 part)</a></li>
</ul>
<h4>AIR performance</h4>
<ul>
<li><a href="http://www.gskinner.com/blog/archives/2009/05/idle_cpu_usage.html">Idle CPU usage in AIR (Grant Skinner)</a></li>
<li><a href="http://arno.org/arnotify/2009/05/writing-well-behaved-efficient-air-applications/">Writing efficient AIR applications (AIR core team developer)</a></li>
<li><a href="http://blogs.adobe.com/air/2009/05/performance_tips_for_adobe_air.html">AIR performance tips (Adobe AIR blog)</a></li>
</ul>
<h4>Styling &amp; skinning Flex</h4>
<ul>
<li><a href="http://www.loscavio.com/downloads/blog/flex3_css_list/flex3_css_list.htm">Flex 3 CSS properties list</a></li>
<li><a href="http://degrafa.org">Degrafa &#8211; declarative graphics framework for AS3 and Flex</a></li>
<li><a href="http://axiis.org/">Axiis &#8211; data visualisation in open source</a></li>
</ul>
<h4>External Libraries</h4>
<ul>
<li><a href="http://code.google.com/p/flexlib/">Flexlib &#8211; open source components (Google code)</a></li>
<li><a href="http://code.google.com/p/as3corelib/">AS3CoreLib &#8211; open source core library (Google code)</a></li>
</ul>
<h4>Further help</h4>
<ul>
<li><a href="http://www.flexdeveloper.eu/forums/">Flexdeveloper.eu forum</a></li>
<li><a href="http://forums.adobe.com/community/flex">Adobe community forum for Flex</a></li>
<li><a href="http://www.actionscript.org/">ActionScript.org</a></li>
<li><a href="http://www.adobe.com/cfusion/communityengine/index.cfm?event=homepage&amp;productId=2">Adobe Flex Cookbook</a></li>
</ul>
<p>This is just a small list that you can use everyday. It&#8217;s not definitive and does not try to be.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/flex-resources/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Prudential Retirement Flex application wins Revolution Award</title>
		<link>http://jameswhittaker.com/journal/prudential-retirement-flex-application-wins-revolution-award/</link>
		<comments>http://jameswhittaker.com/journal/prudential-retirement-flex-application-wins-revolution-award/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 11:49:47 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[award]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=303</guid>
		<description><![CDATA[
As I mentioned in a previous post the Adobe Flex project for Prudential that I worked on has one a prestigious Revolution Award in the financial category.
The retirement planner was the first RIA application for Prudential, however the decision to go with the Flex solution to provide a richer user experience has paid off. 
It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/03/revolutionawards09.jpg" alt="revolutionawards09" title="revolutionawards09" width="535" height="150" class="bdr alignnone size-full wp-image-304" /></p>
<p>As I mentioned in a previous post the <a href="http://www.pru.co.uk/retireyourway/">Adobe Flex project for Prudential</a> that I worked on has one a prestigious <a href="http://www.revolutionawards.com/">Revolution Award</a> in the financial category.</p>
<p>The retirement planner was the first RIA application for Prudential, however the decision to go with the Flex solution to provide a richer user experience has paid off. </p>
<p>It&#8217;s a shame that many companies shun the idea of breaking the mould and going with RIA technologies like Flex and AIR. This project goes to show that bold management and technical decisions, well designed and executed can produce a market leading innovate solution to drive revenue. </p>
<p>So a big well done to all people on the Prudential Retire Your Way project.</p>
<p>You can download the Revolution Awards 2009 winners PDF from <a href="http://www.revolutionawards.com/2009_revolution_winners.pdf">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/prudential-retirement-flex-application-wins-revolution-award/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex app shortlisted for top award</title>
		<link>http://jameswhittaker.com/journal/flex-app-shortlisted-for-top-award/</link>
		<comments>http://jameswhittaker.com/journal/flex-app-shortlisted-for-top-award/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 22:19:45 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[award]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=301</guid>
		<description><![CDATA[
I have just been informed that an Adobe Flex application that I worked on last year has been shortlisted for a Revolution Award in the financial services category.
The application is a retirement planning tool for Prudential in the UK and developed using web services in Adobe Flex 2. It guides the user through a journey [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/03/pruretire-revolution.jpg" alt="pruretire-revolution" title="pruretire-revolution" width="535" height="150" class="alignnone size-full wp-image-302 bdr" /><br />
I have just been informed that an <a href="http://www.pru.co.uk/retireyourway/">Adobe Flex application</a> that I worked on last year has been shortlisted for a <a href="http://www.revolutionawards.com">Revolution Award in the financial services category</a>.</p>
<p>The application is a <a href="http://www.pru.co.uk/retireyourway/">retirement planning tool for Prudential in the UK</a> and developed using web services in <a href="http://www.adobe.com/go/flex">Adobe Flex</a> 2. It guides the user through a journey of calculating how much money they are likely to have at retirement, find any possible shortfalls then save and review the information at a later date.</p>
<p>I was the lead Flex UI developer and responsible for the skinning of the Flex user interface, transitions and custom view components. The project incorporated a custom Flex 3d chart that was built as an extension to the standard Flex charting components. The skinning was done using Flash CS3 assets as symbols and then applied using CSS and scale nine.</p>
<blockquote><p>Launched in 1997, the Revolution Awards recognise digital marketers and their agencies for outstanding work in promoting products and services and have become the premier annual event for the digital marketing industry</p></blockquote>
<p>The <a href="http://www.pru.co.uk/retireyourway/">Prudential planner</a> is up against Dare Digital for Barclays and Harvest Digital for NatWest in the finance category.</p>
<p>You can <a href="http://www.revolutionawards.com/2009_Revolution_shortlist.pdf">download a PDF of the shortlisted contenders</a> for the <a href="http://www.revolutionawards.com">Revolution Awards 2009</a> from the <a href="http://www.revolutionawards.com/2009_Revolution_shortlist.pdf">site here</a>.</p>
<p>The project is now maintained in-house.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/flex-app-shortlisted-for-top-award/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
