<?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; flashcamp</title>
	<atom:link href="http://jameswhittaker.com/tag/flashcamp/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_377340407"
			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_377340407"
			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_191749438"
			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_191749438"
			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>Flash Camp Birmingham write up</title>
		<link>http://jameswhittaker.com/journal/flash-camp-birmingham-write-up/</link>
		<comments>http://jameswhittaker.com/journal/flash-camp-birmingham-write-up/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 10:54:01 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[flashcamp]]></category>
		<category><![CDATA[speaking]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=318</guid>
		<description><![CDATA[
Flash Camp Birmingham (UK) organised by the Flash Midlands user group. After a very good Flash Camp London it was always going to be interesting to see how the format would work outside of London. The answer very well! 

For those of you who are not familiar with a Flash Camp it&#8217;s basically a free [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/06/fcbhamtitle.jpg" alt="fcbhamtitle" title="fcbhamtitle" width="535" height="150" class="alignnone size-full wp-image-319 bdr" /></p>
<p>Flash Camp Birmingham (UK) organised by the <a href="http://www.flashmidlands.com">Flash Midlands user group</a>. After a very good <a href="http://jameswhittaker.com/journal/flashcamp-london-presentation/">Flash Camp London</a> it was always going to be interesting to see how the format would work outside of London. The answer very well! </p>
<p><span id="more-318"></span></p>
<p>For those of you who are not familiar with a Flash Camp it&#8217;s basically a free event run by the community for people working with or interested in the <a href="http://www.adobe.com/flashplatform/">Adobe Flash Platform</a>. It&#8217;s not a marketing event, although Adobe help with sponsorship, where prominent members of the community forego their time to come and give presentations and demos on the latest happenings with the Flash platform. And it costs nothing, how fantastic is that.</p>
<p>The sessions were 45 mins in length so long enough to give an insight into a particular topic kind of whetting you appetite for your own further study, yet short enough that it&#8217;s not too long until the next session.</p>
<p>So Birmingham it was at the Central Library theatre which was surprisingly good. A large screen and an auditorium that seated 250, the only thing that was lacking was a decent sized breakout area for mingling. There were some great sponsors, usability experts <a href="http://www.bunnyfoot.com">Bunnyfoot</a> were showing off their eye tracking system and it was great to see ex colleagues <a href="http://www.wayouteast.co.uk/">Jon</a> and Mark again. In fact it was like a mini reunion for quite a few people who I used to work with plus a good friend of mine Richard from the Birmingham Conservatoire made the event a really sociable affair.</p>
<p>So after a few network niggles the day started off with Adobe&#8217;s <a href="http://www.duvos.com/">Enrique Duvos</a> EMEA Evangelist manager introducing the latest product updates like Flash Builder, Flex 4, Catalyst and Flash player penetration rates. Enrique did a great job of setting the scene for later presentations.</p>
<h4>The sessions</h4>
<p><a href="http://www.newtriks.com/">Simon Bailey</a> was the first of us <a href="http://www.adobe.com/communities/experts/">Community Experts</a> to hit the stage on <a href="http://puremvc.org/">PureMVC</a>. Great delivery but possibly a bit over the heads of some of the audience! It was a great introduction and I certainly picked up a few tips and will be heading across to his <a href="http://www.newtriks.com/">blog</a> for more PureMVC stuff in the future.</p>
<p>A short break ensued before the infamous <a href="http://blog.flashgen.com/">Mike Jones aka Flashgen</a> hit the stage with a session on Flex components and a comparison between the new Spark components in Flex 4 and the old Halo components from Flex 2 &amp; 3. Really informative session on some of the core differences between Spark and Halo right down to how the component and skinning lifecycles differ. </p>
<p>Adobe have really gone down the correct path on the new Spark model. It addresses many of the concerns and limitations of the old Halo model by separating out the behaviour, layout and skin of components. Mike also takes the prize of phrase of the day for &#8220;datagrids are the Marmite of the component family&#8230;&#8221; thanks to <a href="http://elsabartley.co.uk/">Elsa</a> for making this <a href="http://twitter.com/marmaladegirl/statuses/2204494039">public on Twitter</a>!<br />
Mikes session was a good precursor to my session on skinning Flex.</p>
<p>So <a href="http://jameswhittaker.com">I</a> was up next with my session entitled &#8220;Skinning Flex&#8221;. I wanted introduce declarative graphics and take a look at what people can use today in their Flex 3 projects using <a href="http://www.degrafa.org">Degrafa</a>, then introduce <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> that arrives in Flex 4, the Creative Suite and of course <a href="http://labs.adobe.com/technologies/flashcatalyst/">Flash Catalyst</a>. After an introduction to the basics I demoed an example using a sample from my Palm Pre esque skin. One version was done in Flex 3 and Degrafa the other Flex 4 and FXG the results were virtually indistinguishable and showed how easy both are to work with. I didn&#8217;t get to show any Flash Catalyst due to time but the later Adobe OnTour session from Adobe by Enrique showed a detailed CS > Catalyst > Flex 4 &amp; Flash Builder demo. </p>
<p>Lunchtime followed and everyone was beginning to feel the heat inside the auditorium so the timing was perfect. Time for a chat and sandwich with old friends and we were back on again with <a href="http://www.infiniteturtles.co.uk/blog/">Rob Bateman</a> from <a href="http://www.away3d.com/">Away3D</a> up next. </p>
<p>I&#8217;m always very inspired and taken back by some of the Flash 3D demos I have seen (like <a href="http://www.sebleedelisle.com/">Seb Lee-Delisle</a> Papervision demos) and this was no exception. Many people don&#8217;t know that Away3D started life as a <a href="http://blog.papervision3d.org/">Papervision</a> branch back in the day. The speed and advancement of the features always amazes and Rob is always a step ahead of the game with the vision for Away3D. I&#8217;m not a 3D expert by any means and I wished I had the time to delve into it more. Some great demos were shown and I&#8217;m sure many were left very inspired.</p>
<p>I didn&#8217;t catch the session on mobile and FLash Lite from <a href="http://ribot.co.uk/">Anthony and Jerome Ribot</a> unfortunately although I heard it was an interesting session. Always good to get some mobile stuff to be shown. </p>
<p>After a short break the last session at Flash Camp Birmingham was a panel ready to answer questions on freelancing, contracting and how to break away from the company man. The entertaining panel consisted of <a href="http://www.flashgen.com">Mike Jones (Flashgen.com)</a>, <a href="http://www.muchosmedia.com/">Stefan Richter (Muchos Media)</a>, <a href="http://www.newtricks.com">Simon Bailey (Newtricks.com)</a> and Ross Flemming from specialist recruitment company <a href="http://www.teksystems.com/">TEK Systems</a>. Even the intros were great talking points hearing about how the panellists got into Flash Platform development. A few good questions were raised and answered. I personally think that having panels for open questions and discussion offer a interesting alternative to one way presentations and sessions that are usually delivered. </p>
<p>What followed was the prize giving and raffle. <a href="http://jodieorourke.com/">Jodie</a> I think you have a new career if all of this Flash stuff collapses! Very reminiscent of the end of Flash on the Beach many attendees had left already to catch transport home or just to get a breath of fresh air. Of the O&#8217;Reilly books being raffled out it was obvious that the Web 2.0 book by <a href="http://technoracle.blogspot.com/">Duane Nickull</a> was going to be the last on on peoples wish list no offense Duane! My ex colleague Greg (part of the Away 3D team) won a copy of Flash Builder and a couple of other lucky attendees got full passes to this year <a href="http://www.flashonthebeach.com/">Flash on the Beach courtesy of FOTB&#8217;s John Davey</a>.</p>
<p>So wrapping up another great Flash Camp for me again after London. I enjoyed my session on Degrafa and FXG and looking at some tweets afterwards the audience enjoyed it too. A bog thank you has to go to all the behind the scenes help from everyone involved that made this event flow smoothly and feel organised. Thanks also to the sponsors for making it happen and keeping free for the attendees. Until the next time happy coding.</p>
<h4>Photos</h4>
<p>Here are some photos by <a href="http://www.flickr.com/photos/marmaladegirl/tags/flashcamp/">Elsa from Flickr</a>:</p>
<p><object width="499" height="350"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fmarmaladegirl%2Ftags%2Fflashcamp%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fmarmaladegirl%2Ftags%2Fflashcamp%2F&#038;user_id=23032561@N00&#038;tags=flashcamp&#038;jump_to=&#038;start_index="></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fmarmaladegirl%2Ftags%2Fflashcamp%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fmarmaladegirl%2Ftags%2Fflashcamp%2F&#038;user_id=23032561@N00&#038;tags=flashcamp&#038;jump_to=&#038;start_index=" width="499" height="350"></embed></object></p>
<h4>Videos</h4>
<p>Here are some videos that I took with my <a href="http://flipvideo.co.uk/products_flip_mino.shtml#scene=sceneMain">Flip MinoHD</a>. A great camera but in HD it picks up every little shake of your hand so apologies for the shaky cam effect it was not intentional!</p>
<p><object width="499" height="287"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5225449&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5225449&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="499" height="287"></embed></object></p>
<p><object width="499" height="287"><param name="movie" value="http://www.youtube.com/v/PQT7Q27V5go&#038;hl=en&#038;fs=1&#038;fmt=18&#038;showsearch=0&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/PQT7Q27V5go&#038;hl=en&#038;fs=1&#038;fmt=18&#038;showsearch=0&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="499" height="287"></embed></object></p>
<p><a href="http://jameswhittaker.com/journal/skinning-flex-with-degrafa-and-fxg/">See my next post for my presentation notes and code examples</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/flash-camp-birmingham-write-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash Camp Birmingham (UK)</title>
		<link>http://jameswhittaker.com/journal/flash-camp-birmingham-uk/</link>
		<comments>http://jameswhittaker.com/journal/flash-camp-birmingham-uk/#comments</comments>
		<pubDate>Thu, 21 May 2009 13:41:34 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[flashcamp]]></category>
		<category><![CDATA[speaking]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=311</guid>
		<description><![CDATA[
Here we go it&#8217;s Flash Camp time again but in my area of the UK the Midlands!
There is a great mix of sessions to be had by some fantastic speakers so there should be something for all including designers, developers and general others. There are some great sponsors too so come down on the 16th [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/05/flashcampbirmingham.jpg" alt="flashcampbirmingham" title="flashcampbirmingham" width="535" height="150" class="alignnone size-full wp-image-312 bdr" /></p>
<p>Here we go it&#8217;s <a href="http://www.flashcamp.co.uk">Flash Camp</a> time again but in my area of the UK the Midlands!</p>
<p>There is a great mix of sessions to be had by some fantastic speakers so there should be something for all including designers, developers and general others. There are some great sponsors too so come down on the 16th June but remember to register today as places are limited. Also did I mention it&#8217;s FREE! </p>
<p>I&#8217;m excited to be <a href="http://www.flashcamp.co.uk/jameswhittaker.html">giving a session on Flex UI skinning</a>. Always a hot topic and with many ways to enhance the engagement and appearance of your Flex applications I will cover techniques you can implement today with the fantastic Degrafa framework. While taking a peek at what will be arriving in Flex 4 and Flash Catalyst with FXG. Oh yes baby!</p>
<p>So please come and say hi and collect a Moo card, I&#8217;ll be happy to help with any AIR or Skinning questions you may have or even just to talk about the weather.</p>
<p>Yes there is life outside of London in the Flash, Flex and RIA community. So sign up now for a hedonistic day of Flash Platform activity, cool sessions and the chance to meet other great people. I&#8217;m really interested to meet others from the Midlands area who are working on interactive projects using the Flash Platform. There appears to be quite an underground scene going on with many small agencies and freelancers that I&#8217;m only just discovering on my doorstep.</p>
<p>Register now at <a href="http://www.flashcamp.co.uk">Flash Camp (UK)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/flash-camp-birmingham-uk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Catch me in .NET magazine &#8220;Where next for the Flash Platform&#8221; roundtable</title>
		<link>http://jameswhittaker.com/journal/catch-me-in-net-magazine-where-next-for-the-flash-platform-roundtable/</link>
		<comments>http://jameswhittaker.com/journal/catch-me-in-net-magazine-where-next-for-the-flash-platform-roundtable/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 16:06:23 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[flashcamp]]></category>
		<category><![CDATA[netmag]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=305</guid>
		<description><![CDATA[
As part of last month&#8217;s Flash Camp in London, I took part in a round table discussion on the Flash Platform for .NET magazine (Practical Web Magazine in the USA). The NET mag issue 188 is out now in the UK and will be worldwide very soon.

The discussion was chaired by Adobe Evangelist Andrew Shorten [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/04/netmag1.png" alt="netmag1" title="netmag1" width="535" height="150" class="alignnone size-full wp-image-306 bdr" /></p>
<p>As part of last month&#8217;s <a href="http://jameswhittaker.com/journal/flashcamp-london-presentation/">Flash Camp in London</a>, I took part in a round table discussion on the Flash Platform for .NET magazine (Practical Web Magazine in the USA). The <a href="http://www.netmag.co.uk/zine/latest-issue/issue-188">NET mag issue 188</a> is out now in the UK and will be worldwide very soon.</p>
<p><span id="more-305"></span></p>
<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/04/net188roundtable250.jpg" alt="net188roundtable250" title="net188roundtable250" width="250" height="162" class="alignleft size-full wp-image-308" />The discussion was chaired by <a href="http://www.ashorten.com/">Adobe Evangelist Andrew Shorten</a> and some key Flash platform people from the UK. Attending was myself, <a href="http://blog.flashgen.com/">Mike Jones (aka Flashgen)</a>, <a href="http://blog.bittube.com/">Dave Williamson</a>, <a href="http://www.flashcomguru.com/">Stefan Richter</a> and <a href="http://www.mwdadvisors.com/about/advisors.php">Bola Rotibi</a> from city analyst firm MDW Advisors. </p>
<p>Having had a horrendous delayed train journey down from the Midlands (thanks to Virgin Trains&#8230;) I arrived with seconds to go. The location was fabulous thanks to <a href="http://chesterchipperfield.com/">Chester Chipperfield</a> lending us his apartment, even with the squeaky floor boards that you can hear on the video! </p>
<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/04/netmag2.jpg" alt="netmag2" title="netmag2" width="180" height="141" class="alignright size-full wp-image-309" /></p>
<p>It was a wonderful experience and it&#8217;s great to be featured in the magazine, so thanks to everyone at <a href="http://www.adobe.com">Adobe</a>  and <a href="http://www.netmag.co.uk">.NET mag</a>. </p>
<p>The whole hour long discussion was recorded in HD by <a href="http://www.webkitchen.be/">Adobe Evangelist Serge Jespers</a>, some great editing on this too. Quite odd watching yourself on video&#8230;</p>
<p><object width="535" height="301"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3924836&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3924836&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="535" height="301"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/catch-me-in-net-magazine-where-next-for-the-flash-platform-roundtable/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash Camp London presentation</title>
		<link>http://jameswhittaker.com/journal/flashcamp-london-presentation/</link>
		<comments>http://jameswhittaker.com/journal/flashcamp-london-presentation/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 18:00:03 +0000</pubDate>
		<dc:creator>jmwhittaker</dc:creator>
				<category><![CDATA[journal]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[flashcamp]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[speaking]]></category>

		<guid isPermaLink="false">http://jameswhittaker.com/?p=297</guid>
		<description><![CDATA[
I was super excited to give a session at  Flash Camp London today to Flash creatives from around the UK.
The camp was aimed more at the designer and creative side of Flash and we wanted to show some of the new and shiny features of Flash CS4. Some great speakers attended and I was [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/02/flashcampsession.jpg" alt="flashcampsession" title="flashcampsession" width="535" height="150" class="alignnone size-full wp-image-300" /></p>
<p>I was super excited to give a session at <a href="http://flashcamp.co.uk"> Flash Camp London</a> today to Flash creatives from around the UK.</p>
<p>The camp was aimed more at the designer and creative side of Flash and we wanted to show some of the new and shiny features of <a href="http://www.adobe.com/go/flash">Flash CS4</a>. Some <a href="http://flashcamp.co.uk/">great speakers</a> attended and I was honored to have presented on the same bill as some of the most renowned and respected individuals in the Flash scene.</p>
<p><span id="more-297"></span></p>
<p><a href="http://flashcamp.co.uk/__STATIC/bio_jameswhittaker.html">My session</a> was to show how easy it is to create a cross platform desktop application using the new AIR features of Flash CS4, then how to seamlessly deploy the application using the installer badge on a webpage. </p>
<p><a href="http://refreshingapps.com">AIR applications</a> are super easy to do now in Flash which leaves you more time to work on the creative and interactive side of your AIR apps.</p>
<p>I cover building a simple chromeless AIR application called &#8216;Flash Camp Chatter&#8217; that gets the last 4 tweets about Flash camp from Twitter and displays them in floating clouds, not exactly going to set the world alight but fine for a quick demo. You can try the application using the installer badge at the end of this post.</p>
<p>The application is simple and it&#8217;s left up to the reader to add extra features like animation, effects, more error handling etc. The application is shown merely as a proof of how to create a custom chrome AIR applications quickly in Flash CS4.</p>
<p>As the session was only 30 minutes long it was always going to be difficult to squeeze in all of the content I wanted to show. The slide deck here is more detailed than the one I used on the day.</p>
<h4>Session slides</h4>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0" width="500" height="400"><param name="movie" value="https://share.acrobat.com/adc/flex/mpt.swf" /><param name="quality" value="high" /><param name="wmode" value="transparent"/><param name="allowFullScreen" value="true"/><param name="flashvars"  value="ext=pdf&#038;docId=36100f79-2d54-4744-a94a-949a7430e4bf&#038;lang=en_US"/><embed src="https://share.acrobat.com/adc/flex/mpt.swf"  quality="high"  pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"  type="application/x-shockwave-flash" width="500" height="400" wmode="transparent" allowFullScreen="true" flashvars="ext=pdf&#038;docId=36100f79-2d54-4744-a94a-949a7430e4bf&#038;lang=en_US"></embed></object></p>
<h4>Demo files</h4>
<p><a href="http://jameswhittaker.com/wordpress/wp-content/uploads/2009/02/flashcampchatterapp.zip">Download a ZIP file containing all of the demo files</a>. </p>
<p>You will have to create your own Digital Certificate and in order to re-export the AIR files from Flash CS4. To properly test the installer badge your AIR file must be located on a web server and the server must have the correct MIME type for AIR (see example below for Apache):</p>
<p><code><br />
	AddType application/vnd.adobe.air-application-installer-package+zip .air<br />
</code></p>
<h4>Install the final demo app</h4>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_AIRInstallBadge_1057650198"
			class="flashmovie"
			width="215"
			height="180">
	<param name="movie" value="/wordpress/wp-content/uploads/flash/air/AIRInstallBadge.swf" />
	<param name="flashvars" value="airversion=1.5&appname=FlashCampChatter&appurl=http://jameswhittaker.com/wordpress/wp-content/uploads/air/flashcampchatter/FlashCampChatter.air&image=http://jameswhittaker.com/wordpress/wp-content/uploads/air/flashcampchatter/flashcamp-badgeinstall.jpeg&appid=com.jameswhittaker.flashcamp.FlashCampChatter&pubid=902F3763ABA0EDFF5A70535AC3F7CA60A4E1C73F.1&appversion=1.0&str_launching=Launching%20App&str_launchingtext=Please%20wait%20while%20Flash%20Camp%20Chatter%20launches.&str_installing=Installing%20App&str_installingtext=Please%20wait%20while%20Flash%20Camp%20Chatter%20installs." />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/wordpress/wp-content/uploads/flash/air/AIRInstallBadge.swf"
			name="fm_AIRInstallBadge_1057650198"
			width="215"
			height="180">
		<param name="flashvars" value="airversion=1.5&appname=FlashCampChatter&appurl=http://jameswhittaker.com/wordpress/wp-content/uploads/air/flashcampchatter/FlashCampChatter.air&image=http://jameswhittaker.com/wordpress/wp-content/uploads/air/flashcampchatter/flashcamp-badgeinstall.jpeg&appid=com.jameswhittaker.flashcamp.FlashCampChatter&pubid=902F3763ABA0EDFF5A70535AC3F7CA60A4E1C73F.1&appversion=1.0&str_launching=Launching%20App&str_launchingtext=Please%20wait%20while%20Flash%20Camp%20Chatter%20launches.&str_installing=Installing%20App&str_installingtext=Please%20wait%20while%20Flash%20Camp%20Chatter%20installs." />
	<!--<![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>Unlike in my session this badge will re-launch the Flash Camp Chatter AIR application if you already have it installed.</p>
<h4>Other sessions</h4>
<p>The presentation material from other sessions will be available from the <a href="http://flashcamp.co.uk">Flash Camp website.</a></p>
<h4>Photos and reviews</h4>
<p>Dan (@dansumption) has some great photos from <a href="http://www.flickr.com/photos/gulch/sets/72157614465119797/">Flash Camp London up on Flickr</a>. Big thanks to Dan for permission to use his pictures for this blog post.</p>
<p>It makes <a href="http://flickr.com/photos/jmwhittaker/sets/72157614561688118/">mine look quite poor as I only took a measly 7 pics</a>.</p>
<p>Marc Hibbins has done a <a href="http://hibbins.wordpress.com/2009/02/27/yesterday/">sterling writeup of Flash Camp which you can read over on his blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jameswhittaker.com/journal/flashcamp-london-presentation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
