<?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"
	>

<channel>
	<title>Random Etc. &#187; Weblog</title>
	<atom:link href="http://www.tom-carden.co.uk/category/weblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tom-carden.co.uk</link>
	<description>Notes to self. Work, play, and the rest.</description>
	<pubDate>Sun, 30 Nov 2008 21:17:33 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>SFMOMA ArtScope</title>
		<link>http://www.tom-carden.co.uk/2008/11/30/sfmoma-artscope/</link>
		<comments>http://www.tom-carden.co.uk/2008/11/30/sfmoma-artscope/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 21:15:43 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[Art]]></category>

		<category><![CDATA[Design]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[modest-maps]]></category>

		<category><![CDATA[museums]]></category>

		<category><![CDATA[san-francisco]]></category>

		<category><![CDATA[sfmoma]]></category>

		<category><![CDATA[stamen]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=855</guid>
		<description><![CDATA[Once again I've been beaten to the punch by Stamen, infosthetics, Geraldine, Esquire and more. But here it is for posterity: we released SFMOMA ArtScope a couple of weeks ago. This was a fun one, we're really pleased with the lens approach (rather than continuous zooming) and we're loving the serendipitous bouncing from piece to [...]]]></description>
			<content:encoded><![CDATA[<p>Once again I've been beaten to the punch by <a href="http://stamen.com/clients/sfmoma_artscope">Stamen</a>, <a href="http://infosthetics.com/archives/2008/11/sfmoma_artscope_visual_artwork_browsing_tool.html">infosthetics</a>, <a href="http://www.sensescape.com/2008/11/sfmoma-artscope-is-live/">Geraldine</a>, <a href="http://www.flickr.com/photos/stamen/3019951003/">Esquire</a> and <a href="http://delicious.com/search?p=sfmoma+artscope">more</a>. But here it is for posterity: we released <a href="http://sfmoma.org/artscope">SFMOMA ArtScope</a> a couple of weeks ago. This was a fun one, we're really pleased with the lens approach (rather than continuous zooming) and we're loving the serendipitous bouncing from piece to piece when you search.</p>
<p><a href="http://sfmoma.org/artscope"><img src="http://www.tom-carden.co.uk/wp-content/uploads/2008/11/sfmoma-artscope-500x267.jpg" alt="screenshot from sfmoma.org/artscope" title="SFMOMA Artscope" width="500" height="267" class="size-medium wp-image-856" /></a></p>
<p><small>Inside info: the artwork is arranged by acquisition date, earliest acquisitions are top left and latest are bottom right.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2008/11/30/sfmoma-artscope/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Processing 1.0!</title>
		<link>http://www.tom-carden.co.uk/2008/11/24/processing-10/</link>
		<comments>http://www.tom-carden.co.uk/2008/11/24/processing-10/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 06:46:08 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Processing]]></category>

		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[Processing.org]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=852</guid>
		<description><![CDATA[The first and last time I'll cut and paste a press release on this blog. Casey Reas writes:

We've just posted Processing 1.0 at http://processing.org/download. We're so excited about it, we even took time to write a press release.
CAMBRIDGE, Mass. and LOS ANGELES, Calif. - November 24, 2008 - The Processing project today announced the immediate [...]]]></description>
			<content:encoded><![CDATA[<p>The first and last time I'll cut and paste a press release on this blog. Casey Reas writes:</p>
<blockquote>
<p>We've just posted Processing 1.0 at <a href="http://processing.org/download">http://processing.org/download</a>. We're so excited about it, we even took time to write a press release.</p>
<p>CAMBRIDGE, Mass. and LOS ANGELES, Calif. - November 24, 2008 - The Processing project today announced the immediate availability of the Processing 1.0 product family, the highly anticipated release of industry-leading design and development software for virtually every creative workflow. Delivering radical breakthroughs in workflow efficiency - and packed with hundreds of innovative, time-saving features - the new Processing 1.0 product line advances the creative process across print, Web, interactive, film, video and mobile.</p>
<p>Whups! That's not the right one. Here we go:</p>
<p>Today, on November 24, 2008, we launch the 1.0 version of the Processing software. Processing is a programming language, development environment, and online community that since 2001 has promoted software literacy within the visual arts. Initially created to serve as a software sketchbook and to teach fundamentals of computer programming within a visual context, Processing quickly developed into a tool for creating finished professional work as well.</p>
<p>Processing is a free, open source alternative to proprietary software tools with expensive licenses, making it accessible to schools and individual students. Its open source status encourages the community participation and collaboration that is vital to Processing's growth. Contributors share programs, contribute code, answer questions in the discussion forum, and build libraries to extend the possibilities of the software. The Processing community has written over seventy libraries to facilitate computer vision, data visualization, music, networking, and electronics.</p>
<p>Students at hundreds of schools around the world use Processing for classes ranging from middle school math education to undergraduate programming courses to graduate fine arts studios.</p>
<p>+ At New York University's graduate ITP program, Processing is taught alongside its sister project Arduino and PHP as part of the foundation course for 100 incoming students each year.</p>
<p>+ At UCLA, undergraduates in the Design | Media Arts program use Processing to learn the concepts and skills needed to imagine the next generation of web sites and video games.</p>
<p>+ At Lincoln Public Schools in Nebraska and the Phoenix Country Day School in Arizona, middle school teachers are experimenting with Processing to supplement traditional algebra and geometry classes.</p>
<p>Tens of thousands of companies, artists, designers, architects, and researchers use Processing to create an incredibly diverse range of projects.</p>
<p>+ Design firms such as Motion Theory provide motion graphics created with Processing for the TV commercials of companies like Nike, Budweiser, and Hewlett-Packard.</p>
<p>+ Bands such as R.E.M., Radiohead, and Modest Mouse have featured animation created with Processing in their music videos.</p>
<p>+ Publications such as the journal Nature, the New York Times, Seed, and Communications of the ACM have commissioned information graphics created with Processing.</p>
<p>+ The artist group HeHe used Processing to produce their award-winning Nuage Vert installation, a large-scale public visualization of pollution levels in Helsinki.</p>
<p>+ The University of Washington's Applied Physics Lab used Processing to create a visualization of a coastal marine ecosystem as a part of the NSF RISE project.</p>
<p>+ The Armstrong Institute for Interactive Media Studies at Miami University uses Processing to build visualization tools and analyze text for digital humanities research.</p>
<p>The Processing software runs on the Mac, Windows, and GNU/Linux platforms. With the click of a button, it exports applets for the Web or standalone applications for Mac, Windows, and GNU/Linux. Graphics from Processing programs may also be exported as PDF, DXF, or TIFF files and many other file formats. Future Processing releases will focus on faster 3D graphics, better video playback and capture, and enhancing the development environment. Some experimental versions of Processing have been adapted to other languages such as JavaScript, ActionScript, Ruby, Python, and Scala; other adaptations bring Processing to platforms like the OpenMoko, iPhone, and OLPC XO-1.</p>
<p>Processing was founded by Ben Fry and Casey Reas in 2001 while both were John Maeda's students at the MIT Media Lab. Further development has taken place at the Interaction Design Institute Ivrea, Carnegie Mellon University, and the UCLA, where Reas is chair of the Department of Design | Media Arts. Miami University, Oblong Industries, and the Rockefeller Foundation have generously contributed funding to the project.</p>
<p>The Cooper-Hewitt National Design Museum (a Smithsonian Institution) included Processing in its National Design Triennial. Works created with Processing were featured prominently in the Design and the Elastic Mind show at the Museum of Modern Art. Numerous design magazines, including Print, Eye, and Creativity, have highlighted the software.</p>
<p>For their work on Processing, Fry and Reas received the 2008 Muriel Cooper Prize from the Design Management Institute. The Processing community was awarded the 2005 Prix Ars Electronica Golden Nica award and the 2005 Interactive Design Prize from the Tokyo Type Director's Club.</p>
<p>The Processing website (<a href="http://www.processing.org">www.processing.org</a>) includes tutorials, exhibitions, interviews, a complete reference, and hundreds of software examples. The Discourse forum hosts continuous community discussions and dialog with the developers. </p>
</blockquote>
<p>Extremely well done and congratulations to all involved!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2008/11/24/processing-10/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Guest-blogging at infosthetics.com</title>
		<link>http://www.tom-carden.co.uk/2008/11/17/guest-blogging-at-infosthetics/</link>
		<comments>http://www.tom-carden.co.uk/2008/11/17/guest-blogging-at-infosthetics/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 07:36:41 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[infosthetics]]></category>

		<category><![CDATA[Me]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=850</guid>
		<description><![CDATA[I've been guest-blogging recently at infosthetics.com. I started with a post about wikinvest.com and more recently one about a map of European genes that turned into a mini-rant about academic research on the web.
]]></description>
			<content:encoded><![CDATA[<p>I've been guest-blogging recently at <a href="http://infosthetics.com">infosthetics.com</a>. I started with <a href="http://infosthetics.com/archives/2008/10/wikinvest_collaborative_sensemaking_for_financial_data.html">a post about wikinvest.com</a> and more recently <a href="http://infosthetics.com/archives/2008/11/geocoding_genes_for_cartographic_comparisons.html">one about a map of European genes</a> that turned into a mini-rant about academic research on the web.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2008/11/17/guest-blogging-at-infosthetics/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Party Like It&#8217;s 1997</title>
		<link>http://www.tom-carden.co.uk/2008/11/05/party-like-its-1997/</link>
		<comments>http://www.tom-carden.co.uk/2008/11/05/party-like-its-1997/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 18:41:53 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[90s]]></category>

		<category><![CDATA[blair]]></category>

		<category><![CDATA[election]]></category>

		<category><![CDATA[Music]]></category>

		<category><![CDATA[obama]]></category>

		<category><![CDATA[politics]]></category>

		<category><![CDATA[pulp]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=843</guid>
		<description><![CDATA[Awaiting yesterday's election results, I couldn't help but compare to the 1997 UK general election where Tony Blair and his New Labour movement came to power in a convincing landslide.  It was an awesome couple of years we had there, with a government with a proper mandate and a clear ideology – even if [...]]]></description>
			<content:encoded><![CDATA[<p>Awaiting yesterday's election results, I couldn't help but compare to the 1997 UK general election where Tony Blair and his New Labour movement came to power in a convincing landslide.  It was an awesome couple of years we had there, with a government with a proper mandate and a clear ideology – even if they've later disappointed me on many counts (Iraq, ID cards, etc...), I'd still rather have them than the sleazy, obnoxious and complacent Conservatives they displaced.</p>
<p>Anyway, this morning I woke up and for some reason Pulp's <em>Mis-Shapes</em> was going around my head. When it was released, my naive 15-year-old self thought it was all about the rise of britpop/indie music and nerdy guitar bands having their day in the charts. I must have listened to it hundreds of times* without really thinking about it. Thankfully it's bubbled up into my consciousness on a wave of late 90s political memories to remind me that it's all a bit deeper than I first thought. </p>
<p>Listening now, <em>of course</em> this 1995 hit is about meaningful political change, about being sick to death of right-wing politics, about setting things right, about doing things our way:</p>
<blockquote><p>"Brothers, sisters, can't you see?<br />
The future's owned by you and me.<br />
There won't be fighting in the street.<br />
They think that they've got us beat but revenge is going to be so sweet.<br />
We're making a move. We're making it now.<br />
We're coming out of the sidelines.<br />
Just put your hands up – it's a raid.<br />
We want your homes, we want your lives,<br />
we want the things you won't allow us.<br />
We won't use guns, we won't use bombs<br />
We'll use the one thing we've got more of – that's our minds.<br />
And that's our minds. Yeah."</p></blockquote>
<p>Jarvis Cocker's a smart cookie. <a href="http://www.youtube.com/watch?v=eWiilrBq9vw">Go Listen!</a></p>
<p><small>* maybe thousands of times – the double A-side single was one of the only CDs I had, and the fact that you could use any CD as the soundtrack to Ridge Racer on the PlayStation meant that the song was on repeat in my life for most of that year.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2008/11/05/party-like-its-1997/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OpenStreetMap vectors + Flash + Yahoo Maps</title>
		<link>http://www.tom-carden.co.uk/2008/10/01/openstreetmap-vectors-flash-yahoo-maps/</link>
		<comments>http://www.tom-carden.co.uk/2008/10/01/openstreetmap-vectors-flash-yahoo-maps/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 05:23:25 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Maps]]></category>

		<category><![CDATA[OpenStreetMap]]></category>

		<category><![CDATA[vectors]]></category>

		<category><![CDATA[yahoo maps]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=815</guid>
		<description><![CDATA[Teaser time.

]]></description>
			<content:encoded><![CDATA[<p>Teaser time.</p>
<p><a href="http://www.tom-carden.co.uk/wp-content/uploads/2008/10/osm-yahoo-flash.png"><img src="http://www.tom-carden.co.uk/wp-content/uploads/2008/10/osm-yahoo-flash-500x319.png" alt="" title="osm-yahoo-flash" width="500" height="319" class="alignnone size-medium wp-image-814" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2008/10/01/openstreetmap-vectors-flash-yahoo-maps/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Text along a path in Flash</title>
		<link>http://www.tom-carden.co.uk/2008/10/01/text-along-a-path-in-flash/</link>
		<comments>http://www.tom-carden.co.uk/2008/10/01/text-along-a-path-in-flash/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 04:56:44 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[as3]]></category>

		<category><![CDATA[Code]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[paths]]></category>

		<category><![CDATA[text]]></category>

		<category><![CDATA[Typography]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=779</guid>
		<description><![CDATA[Trevor McCauley did the hard part years ago, as is often the case, but it seems like there's no source code out there showing text along a path in Flash using actionscript 3.  I'm not the only one thinking about this – the degrafa folks have got the extremely capable algorithmist Jim Armstrong looking [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.senocular.com">Trevor McCauley</a> did the <a href="http://www.senocular.com/flash/actionscript.php?file=ActionScript_3.0/com/senocular/drawing/Path.as">hard part</a> years ago, as is often the case, but it seems like there's no source code out there showing text along a path in Flash using actionscript 3.  I'm not the only one thinking about this – the <a href="http://www.degrafa.com">degrafa</a> folks have got the extremely capable algorithmist <a href="http://algorithmist.wordpress.com/2008/09/29/degrafa-text-along-a-spline/">Jim Armstrong looking into the problem</a> too.</p>
<p>I don't have time to write a full explanation tonight (packing calls, tomorrow I'm in Montréal for <a href="http://www.designengaged.com">Design Engaged</a>), but I've got a quick solution which might be of use to you if you googled upon this page.  <a href="http://www.tom-carden.co.uk/2008/10/02/text-along-a-path-in-flashtext-along-a-path-in-flash/">Read on for more</a> if you're interested in a quick overview.</p>
<p><span id="more-779"></span></p>
<p>Here's a test showing two stars, one created from the outside-in and one created from the inside-out.</p>

<object	type="application/x-shockwave-flash"
			data="http://www.tom-carden.co.uk/wp-content/uploads/2008/10/pathtests.swf"
			width="500"
			height="400">
	<param name="movie" value="http://www.tom-carden.co.uk/wp-content/uploads/2008/10/pathtests.swf" />
</object>
<p>The source code:</p>
<pre class="actionscript">&nbsp;
&nbsp;
package <span style="color: #66cc66;">&#123;</span>
  <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">senocular</span>.<span style="color: #006600;">drawing</span>.<span style="color: #006600;">Path</span>;
&nbsp;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">filters</span>.<span style="color: #006600;">GlowFilter</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">geom</span>.<span style="color: #006600;">Point</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">TextFormat</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #006600;">TextFormatAlign</span>;
&nbsp;
  <span style="color: #66cc66;">&#91;</span>SWF<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">backgroundColor</span>=<span style="color: #ff0000;">'#ffffff'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> PathTests <span style="color: #0066CC;">extends</span> Sprite
  <span style="color: #66cc66;">&#123;</span>
     <span style="color: #66cc66;">&#91;</span>Embed<span style="color: #66cc66;">&#40;</span>systemFont=<span style="color: #ff0000;">&quot;Helvetica Neue&quot;</span>, fontName=<span style="color: #ff0000;">&quot;Helvetica&quot;</span>, mimeType=<span style="color: #ff0000;">'application/x-font'</span>, unicodeRange=<span style="color: #ff0000;">'U+00A0,U+0020-U+007E,U+00A1-U+00BF,U+02BB-U+02BC,U+2010-U+2015,U+2018-U+201D,U+2024-U+2026'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
    <span style="color: #0066CC;">private</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> _ignoreMe:<span style="color: #0066CC;">String</span>;
&nbsp;
    <span style="color: #66cc66;">&#91;</span>Embed<span style="color: #66cc66;">&#40;</span>systemFont=<span style="color: #ff0000;">&quot;Helvetica Neue&quot;</span>, fontName=<span style="color: #ff0000;">&quot;Helvetica&quot;</span>, fontWeight=<span style="color: #ff0000;">&quot;bold&quot;</span>, mimeType=<span style="color: #ff0000;">'application/x-font'</span>, unicodeRange=<span style="color: #ff0000;">'U+00A0,U+0020-U+007E,U+00A1-U+00BF,U+02BB-U+02BC,U+2010-U+2015,U+2018-U+201D,U+2024-U+2026'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
    <span style="color: #0066CC;">private</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> _ignoreMeToo:<span style="color: #0066CC;">String</span>;
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> PathTests<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
      <span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">align</span> = <span style="color: #ff0000;">'TL'</span>;
      <span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">scaleMode</span> = <span style="color: #ff0000;">'noScale'</span>;
&nbsp;
      drawStar<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Point<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageWidth</span>/<span style="color: #cc66cc;">4</span>, <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageHeight</span>/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
      drawStar<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Point<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span>*<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageWidth</span>/<span style="color: #cc66cc;">4</span>, <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">stageHeight</span>/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> drawStar<span style="color: #66cc66;">&#40;</span>center:Point, inToOut:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
    <span style="color: #66cc66;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">textFormat</span>:<span style="color: #0066CC;">TextFormat</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextFormat</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Helvetica&quot;</span>, <span style="color: #cc66cc;">11</span>, 0x000000, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #0066CC;">textFormat</span>.<span style="color: #006600;">kerning</span> = <span style="color: #000000; font-weight: bold;">true</span>;
      <span style="color: #0066CC;">textFormat</span>.<span style="color: #006600;">letterSpacing</span> = <span style="color: #cc66cc;">0</span>;
      <span style="color: #0066CC;">textFormat</span>.<span style="color: #0066CC;">align</span> = TextFormatAlign.<span style="color: #006600;">CENTER</span>;
&nbsp;
      <span style="color: #000000; font-weight: bold;">var</span> innerRadius:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">50</span>;
      <span style="color: #000000; font-weight: bold;">var</span> outerRadius:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">125</span>;
      <span style="color: #000000; font-weight: bold;">var</span> midRadius:<span style="color: #0066CC;">Number</span> = <span style="color: #66cc66;">&#40;</span>innerRadius + <span style="color: #66cc66;">&#40;</span>outerRadius-innerRadius<span style="color: #66cc66;">&#41;</span>/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>; 
&nbsp;
      <span style="color: #000000; font-weight: bold;">var</span> path:Path;
&nbsp;
      <span style="color: #000000; font-weight: bold;">var</span> paths:<span style="color: #0066CC;">Array</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
      <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> a:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">0</span>; a &lt; <span style="color: #cc66cc;">2</span>*<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span>; a+=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span>/<span style="color: #cc66cc;">18</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        path = <span style="color: #000000; font-weight: bold;">new</span> Path<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
        paths.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>path<span style="color: #66cc66;">&#41;</span>;
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>inToOut<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
          path.<span style="color: #0066CC;">moveTo</span><span style="color: #66cc66;">&#40;</span>center.<span style="color: #006600;">x</span> + innerRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">cos</span><span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span>,
                      center.<span style="color: #006600;">y</span> + innerRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sin</span><span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
          path.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span>center.<span style="color: #006600;">x</span> + midRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">cos</span><span style="color: #66cc66;">&#40;</span>a - <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span>/<span style="color: #cc66cc;">36</span><span style="color: #66cc66;">&#41;</span>,
                      center.<span style="color: #006600;">y</span> + midRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sin</span><span style="color: #66cc66;">&#40;</span>a - <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span>/<span style="color: #cc66cc;">36</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
          path.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span>center.<span style="color: #006600;">x</span> + outerRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">cos</span><span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span>,
                      center.<span style="color: #006600;">y</span> + outerRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sin</span><span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
          path.<span style="color: #0066CC;">moveTo</span><span style="color: #66cc66;">&#40;</span>center.<span style="color: #006600;">x</span> + outerRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">cos</span><span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span>,
                      center.<span style="color: #006600;">y</span> + outerRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sin</span><span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
          path.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span>center.<span style="color: #006600;">x</span> + midRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">cos</span><span style="color: #66cc66;">&#40;</span>a + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span>/<span style="color: #cc66cc;">36</span><span style="color: #66cc66;">&#41;</span>,
                      center.<span style="color: #006600;">y</span> + midRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sin</span><span style="color: #66cc66;">&#40;</span>a + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span>/<span style="color: #cc66cc;">36</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
          path.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span>center.<span style="color: #006600;">x</span> + innerRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">cos</span><span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span>,
                      center.<span style="color: #006600;">y</span> + innerRadius * <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sin</span><span style="color: #66cc66;">&#40;</span>a<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">var</span> pathField:TextPathField = <span style="color: #000000; font-weight: bold;">new</span> TextPathField<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Sample text'</span>, path, <span style="color: #0066CC;">textFormat</span><span style="color: #66cc66;">&#41;</span>;
        pathField.<span style="color: #006600;">filters</span> = <span style="color: #66cc66;">&#91;</span> <span style="color: #000000; font-weight: bold;">new</span> GlowFilter<span style="color: #66cc66;">&#40;</span>0xffffff, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">4</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #000000; font-weight: bold;">false</span>, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#93;</span>
        addChild<span style="color: #66cc66;">&#40;</span>pathField<span style="color: #66cc66;">&#41;</span>;
      <span style="color: #66cc66;">&#125;</span>
&nbsp;
      graphics.<span style="color: #0066CC;">lineStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">13</span>,0xff9900<span style="color: #66cc66;">&#41;</span>;
      <span style="color: #b1b100;">for</span> each <span style="color: #66cc66;">&#40;</span>path <span style="color: #b1b100;">in</span> paths<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        path.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span>graphics<span style="color: #66cc66;">&#41;</span>;
      <span style="color: #66cc66;">&#125;</span>
      graphics.<span style="color: #0066CC;">lineStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">11</span>,0xffff00<span style="color: #66cc66;">&#41;</span>;
      <span style="color: #b1b100;">for</span> each <span style="color: #66cc66;">&#40;</span>path <span style="color: #b1b100;">in</span> paths<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        path.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span>graphics<span style="color: #66cc66;">&#41;</span>;
      <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>And the TextPathField code that powers it:</p>
<pre class="actionscript">&nbsp;
&nbsp;
package
<span style="color: #66cc66;">&#123;</span>
  <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">senocular</span>.<span style="color: #006600;">drawing</span>.<span style="color: #006600;">Path</span>;
&nbsp;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">geom</span>.<span style="color: #006600;">Matrix</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">geom</span>.<span style="color: #006600;">Point</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">geom</span>.<span style="color: #006600;">Rectangle</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #006600;">AntiAliasType</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #006600;">GridFitType</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">TextField</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">TextFormat</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #006600;">TextFormatAlign</span>;
&nbsp;
  <span style="color: #808080; font-style: italic;">/** depends on com.senocular.drawing.Path */</span>
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TextPathField <span style="color: #0066CC;">extends</span> Sprite
  <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const DEFAULT_TEXTFIELD_PARAMS:<span style="color: #0066CC;">Object</span> = <span style="color: #66cc66;">&#123;</span>
      <span style="color: #0066CC;">embedFonts</span>: <span style="color: #000000; font-weight: bold;">true</span>,
      antiAliasType: AntiAliasType.<span style="color: #006600;">ADVANCED</span>,
      gridFitType: GridFitType.<span style="color: #006600;">NONE</span>
    <span style="color: #66cc66;">&#125;</span>;
&nbsp;
    <span style="color: #808080; font-style: italic;">// TODO: getters and setters that call redraw</span>
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">text</span>:<span style="color: #0066CC;">String</span>;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> path:Path;
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">textFormat</span>:<span style="color: #0066CC;">TextFormat</span>;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> textFieldParams:<span style="color: #0066CC;">Object</span>;
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> TextPathField<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">text</span>:<span style="color: #0066CC;">String</span>, path:Path, <span style="color: #0066CC;">textFormat</span>:<span style="color: #0066CC;">TextFormat</span>, textFieldParams:<span style="color: #0066CC;">Object</span>=<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
      mouseEnabled = <span style="color: #000000; font-weight: bold;">false</span>;
      mouseChildren = <span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
      <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">text</span> = <span style="color: #0066CC;">text</span>;
      <span style="color: #0066CC;">this</span>.<span style="color: #006600;">path</span> = path;
      <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">textFormat</span> = <span style="color: #0066CC;">textFormat</span>;
      <span style="color: #0066CC;">this</span>.<span style="color: #006600;">textFieldParams</span> = textFieldParams || DEFAULT_TEXTFIELD_PARAMS;
&nbsp;
      redraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> redraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
    <span style="color: #66cc66;">&#123;</span>
      <span style="color: #808080; font-style: italic;">// clear everything away...</span>
      <span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span>numChildren &gt; <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        removeChildAt<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #66cc66;">&#125;</span>
&nbsp;
      <span style="color: #808080; font-style: italic;">// make a dummy textfield so we can measure its width</span>
      <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">textField</span>:<span style="color: #0066CC;">TextField</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextField</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
      applyParamsToField<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textField</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">defaultTextFormat</span> = <span style="color: #0066CC;">textFormat</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">text</span> = <span style="color: #0066CC;">text</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">width</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">textWidth</span><span style="color: #cc66cc;">+4</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">height</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">textHeight</span><span style="color: #cc66cc;">+4</span>;
&nbsp;
      <span style="color: #808080; font-style: italic;">// bail out if there's no room</span>
      <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>path.<span style="color: #0066CC;">length</span> &lt; <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">width</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">return</span>;
&nbsp;
      <span style="color: #000000; font-weight: bold;">var</span> t1:<span style="color: #0066CC;">Number</span>;
      <span style="color: #000000; font-weight: bold;">var</span> t2:<span style="color: #0066CC;">Number</span>;
&nbsp;
      <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textFormat</span>.<span style="color: #0066CC;">align</span> == TextFormatAlign.<span style="color: #0066CC;">LEFT</span> || <span style="color: #0066CC;">textFormat</span>.<span style="color: #0066CC;">align</span> == <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        t1 = <span style="color: #cc66cc;">0</span>;
        t2 = <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">width</span> / path.<span style="color: #0066CC;">length</span>;
      <span style="color: #66cc66;">&#125;</span>
      <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textFormat</span>.<span style="color: #0066CC;">align</span> == TextFormatAlign.<span style="color: #0066CC;">RIGHT</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        t1 = <span style="color: #cc66cc;">1.0</span> - <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">width</span> / path.<span style="color: #0066CC;">length</span><span style="color: #66cc66;">&#41;</span>;
        t2 = <span style="color: #cc66cc;">1.0</span>;
      <span style="color: #66cc66;">&#125;</span>
      <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textFormat</span>.<span style="color: #0066CC;">align</span> == TextFormatAlign.<span style="color: #006600;">CENTER</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        t1 = <span style="color: #66cc66;">&#40;</span>path.<span style="color: #0066CC;">length</span>/<span style="color: #cc66cc;">2</span> - <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">width</span>/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> / path.<span style="color: #0066CC;">length</span>;
        t2 = <span style="color: #66cc66;">&#40;</span>path.<span style="color: #0066CC;">length</span>/<span style="color: #cc66cc;">2</span> + <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">width</span>/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> / path.<span style="color: #0066CC;">length</span>;
      <span style="color: #66cc66;">&#125;</span>
      <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #808080; font-style: italic;">// throw error?</span>
        <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'justify alignment unsupported in TextPathField'</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #66cc66;">&#125;</span>
&nbsp;
      <span style="color: #000000; font-weight: bold;">var</span> angleOffset:<span style="color: #0066CC;">Number</span>; <span style="color: #808080; font-style: italic;">// so we can do a 180º if we're running backwards</span>
      <span style="color: #000000; font-weight: bold;">var</span> offsetSign:<span style="color: #0066CC;">Number</span>;  <span style="color: #808080; font-style: italic;">// -1 if we're starting at t2</span>
      <span style="color: #000000; font-weight: bold;">var</span> tStart:<span style="color: #0066CC;">Number</span>;      <span style="color: #808080; font-style: italic;">// t1 or t2</span>
&nbsp;
      <span style="color: #808080; font-style: italic;">// TODO: there are probably more than two cases here...?</span>
       <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>path.<span style="color: #006600;">pointAt</span><span style="color: #66cc66;">&#40;</span>t1<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">x</span> &lt; path.<span style="color: #006600;">pointAt</span><span style="color: #66cc66;">&#40;</span>t2<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">x</span> &amp;&amp; path.<span style="color: #006600;">angleAt</span><span style="color: #66cc66;">&#40;</span>t1<span style="color: #66cc66;">&#41;</span> &lt; <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span>/<span style="color: #cc66cc;">2</span> &amp;&amp; path.<span style="color: #006600;">angleAt</span><span style="color: #66cc66;">&#40;</span>t1<span style="color: #66cc66;">&#41;</span> &gt; -<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span>/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        angleOffset = <span style="color: #cc66cc;">0</span>;
        offsetSign = <span style="color: #cc66cc;">1</span>;
        tStart = t1;
      <span style="color: #66cc66;">&#125;</span>
      <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #808080; font-style: italic;">// this catches text that's running right to left or upside down</span>
        angleOffset = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span>;
        offsetSign = <span style="color: #cc66cc;">-1</span>;
        tStart = t2;
      <span style="color: #66cc66;">&#125;</span> 
&nbsp;
      <span style="color: #808080; font-style: italic;">// make a textfield for each char, centered on the line, using getCharBoundaries to rotate it around its center point</span>
      <span style="color: #000000; font-weight: bold;">var</span> chars:<span style="color: #0066CC;">Array</span> = <span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">split</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">''</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">int</span> = <span style="color: #cc66cc;">0</span>; i &lt; chars.<span style="color: #0066CC;">length</span>; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">var</span> rect:Rectangle = <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">getCharBoundaries</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>;
        <span style="color: #000000; font-weight: bold;">var</span> yOffset:<span style="color: #0066CC;">Number</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">height</span>/<span style="color: #cc66cc;">2</span>;
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>rect<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
          <span style="color: #000000; font-weight: bold;">var</span> t:<span style="color: #0066CC;">Number</span> = tStart + offsetSign*<span style="color: #66cc66;">&#40;</span>rect.<span style="color: #0066CC;">left</span>+rect.<span style="color: #0066CC;">width</span>/<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>/path.<span style="color: #0066CC;">length</span>;
          addCharTextField<span style="color: #66cc66;">&#40;</span>chars<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>, path.<span style="color: #006600;">pointAt</span><span style="color: #66cc66;">&#40;</span>t<span style="color: #66cc66;">&#41;</span>, <span style="color: #000000; font-weight: bold;">new</span> Point<span style="color: #66cc66;">&#40;</span>rect.<span style="color: #0066CC;">width</span>/<span style="color: #cc66cc;">2</span>, yOffset<span style="color: #66cc66;">&#41;</span>, angleOffset+path.<span style="color: #006600;">angleAt</span><span style="color: #66cc66;">&#40;</span>t<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
      <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">// place the given character at pt, registered using rpt, and rotated by r radians</span>
    <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> addCharTextField<span style="color: #66cc66;">&#40;</span>char:<span style="color: #0066CC;">String</span>, pt:Point, rpt:Point, r:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
    <span style="color: #66cc66;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">textField</span>:<span style="color: #0066CC;">TextField</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextField</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
      applyParamsToField<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textField</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">defaultTextFormat</span> = <span style="color: #0066CC;">textFormat</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">text</span> = char;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">width</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">textWidth</span><span style="color: #cc66cc;">+4</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">height</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">textHeight</span><span style="color: #cc66cc;">+4</span>;
&nbsp;
      <span style="color: #000000; font-weight: bold;">var</span> matrix:Matrix = <span style="color: #000000; font-weight: bold;">new</span> Matrix<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
      matrix.<span style="color: #006600;">translate</span><span style="color: #66cc66;">&#40;</span>-rpt.<span style="color: #006600;">x</span>, -rpt.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span>;
      matrix.<span style="color: #006600;">rotate</span><span style="color: #66cc66;">&#40;</span>r<span style="color: #66cc66;">&#41;</span>;
      <span style="color: #808080; font-style: italic;">//matrix.translate(rpt.x, rpt.y);</span>
      matrix.<span style="color: #006600;">translate</span><span style="color: #66cc66;">&#40;</span>pt.<span style="color: #006600;">x</span>, pt.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">transform</span>.<span style="color: #006600;">matrix</span> = matrix;
&nbsp;
      addChild<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textField</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<pre class="actionscript">&nbsp;
    <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> applyParamsToField<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textField</span>:<span style="color: #0066CC;">TextField</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
    <span style="color: #66cc66;">&#123;</span>
      <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> param:<span style="color: #0066CC;">String</span> <span style="color: #b1b100;">in</span> textFieldParams<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textField</span><span style="color: #66cc66;">&#91;</span>param<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
          <span style="color: #0066CC;">textField</span><span style="color: #66cc66;">&#91;</span>param<span style="color: #66cc66;">&#93;</span> = textFieldParams<span style="color: #66cc66;">&#91;</span>param<span style="color: #66cc66;">&#93;</span>;
        <span style="color: #66cc66;">&#125;</span>
      <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
  <span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>Hopefully I can post more about how I'm using this class soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2008/10/01/text-along-a-path-in-flash/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Speaking of tiny details</title>
		<link>http://www.tom-carden.co.uk/2008/09/24/speaking-of-tiny-details/</link>
		<comments>http://www.tom-carden.co.uk/2008/09/24/speaking-of-tiny-details/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 07:30:05 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[hurricanes]]></category>

		<category><![CDATA[Maps]]></category>

		<category><![CDATA[msnbc]]></category>

		<category><![CDATA[permalinks]]></category>

		<category><![CDATA[stamen]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=777</guid>
		<description><![CDATA[MSNBC just pushed a small update to our hurricane maps, so that the links to old storms will display the last update if the storm is no longer active. Clearly this is useful for those of us who linked to the Gustav map last month!
You can now view archived advisories for the following storms: Arthur, [...]]]></description>
			<content:encoded><![CDATA[<p>MSNBC just pushed a small update to our <a href="http://www.msnbc.msn.com/id/26295161">hurricane maps</a>, so that the links to old storms will display the last update if the storm is no longer active. Clearly this is useful for those of us who linked to the Gustav map last month!</p>
<p>You can now view archived advisories for the following storms: <a href="http://www.msnbc.msn.com/id/26295161?preferredName=Arthur">Arthur</a>, <a href="http://www.msnbc.msn.com/id/26295161?preferredName=Bertha">Bertha</a>, <a href="http://www.msnbc.msn.com/id/26295161?preferredName=Cristobal">Cristobal</a>, <a href="http://www.msnbc.msn.com/id/26295161?preferredName=Dolly">Dolly</a>, <a href="http://www.msnbc.msn.com/id/26295161?preferredName=Edouard">Edouard</a>, <a href="http://www.msnbc.msn.com/id/26295161?preferredName=Fay">Fay</a>, <a href="http://www.msnbc.msn.com/id/26295161?preferredName=Gustav">Gustav</a>, <a href="http://www.msnbc.msn.com/id/26295161?preferredName=Hanna">Hanna</a>, <a href="http://www.msnbc.msn.com/id/26295161?preferredName=Ike">Ike</a> and <a href="http://www.msnbc.msn.com/id/26295161?preferredName=Josephine">Josephine</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2008/09/24/speaking-of-tiny-details/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fix for buggy Flash TextField selection (on mouse leave)</title>
		<link>http://www.tom-carden.co.uk/2008/09/24/fix-for-buggy-flash-textfield-selection-on-mouse-leave/</link>
		<comments>http://www.tom-carden.co.uk/2008/09/24/fix-for-buggy-flash-textfield-selection-on-mouse-leave/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 00:34:27 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[as3]]></category>

		<category><![CDATA[Bugs]]></category>

		<category><![CDATA[Code]]></category>

		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=770</guid>
		<description><![CDATA[Today's post is about tiny details.
I've noticed a frustrating problem with text in Flash that I've finally managed to find a workaround for. I'm testing in Mac OS X using Firefox 3 and Flash 9, but I've seen it on other systems too, and recently had help reproducing this bug from our client at MSNBC, [...]]]></description>
			<content:encoded><![CDATA[<p>Today's post is about tiny details.</p>
<p>I've noticed a frustrating problem with text in Flash that I've finally managed to find a workaround for. I'm testing in Mac OS X using Firefox 3 and Flash 9, but I've seen it on other systems too, and recently had help reproducing this bug from our client at MSNBC, so I'm pretty sure it's widespread.</p>
<p>Since this is a fairly esoteric issue that will only bother Flash programmers, I'll continue only in <a href="http://www.tom-carden.co.uk/2008/09/24/flash-textfield-selection-on-mouse-leave/flash-textfield-selection-on-mouse-leave">the full version of this post</a>.</p>
<p><span id="more-770"></span></p>
<p>Here's the setup to reproduce the bug:</p>
<ol>
<li>add an editable text field (<tt>flash.display.TextField</tt> or <tt>fl.controls.TextInput</tt>) to the left side of the stage</li>
<li>select the text in one sweep, releasing the mouse outside the browser window</li>
<li>start typing, or move the mouse back over the stage</li>
</ol>
<p>If you start typing in this scenario, then the letters are erased as they are typed, because the text is still being selected as if you hadn't released the mouse.  If you move your mouse back over the stage, then the selecting action is still in progress and doesn't stop until the mouse is clicked.  Two-for-one buggy behaviour, how frustrating!  </p>
<p>Note that the continued selection behaviour is a common problem in Flash that affects any site that uses <a href="http://www.mikeindustries.com/blog/sifr/">SIFR</a> to enhance headlines, for example.</p>
<p>Here's a swf that demonstrates the problem ("offscreen" includes outside of the flash):</p>

<object	type="application/x-shockwave-flash"
			data="http://www.tom-carden.co.uk/wp-content/uploads/2008/09/textinputselectionbad.swf"
			width="500"
			height="50">
	<param name="movie" value="http://www.tom-carden.co.uk/wp-content/uploads/2008/09/textinputselectionbad.swf" />
</object>
<p>And the code for the above swf.</p>
<pre class="actionscript">&nbsp;
package <span style="color: #66cc66;">&#123;</span>
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageAlign</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageScaleMode</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">TextField</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #006600;">TextFieldType</span>;
&nbsp;
  <span style="color: #66cc66;">&#91;</span>SWF<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">backgroundColor</span>=<span style="color: #ff0000;">&quot;#eeeeee&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TextInputSelectionBad <span style="color: #0066CC;">extends</span> Sprite
  <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">textField</span>:<span style="color: #0066CC;">TextField</span>;
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> TextInputSelectionBad<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
      <span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">align</span> = StageAlign.<span style="color: #006600;">TOP_LEFT</span>;
      <span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">scaleMode</span> = StageScaleMode.<span style="color: #006600;">NO_SCALE</span>;
&nbsp;
      <span style="color: #0066CC;">textField</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextField</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">type</span> = TextFieldType.<span style="color: #006600;">INPUT</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;select me and release the mouse off screen&quot;</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">x</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">10</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">width</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">textWidth</span> + <span style="color: #cc66cc;">8</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">height</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">textHeight</span> + <span style="color: #cc66cc;">4</span>;
      addChild<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textField</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">textColor</span> = 0x202020;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">border</span> = <span style="color: #000000; font-weight: bold;">true</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">borderColor</span> = 0xdddddd;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">background</span> = <span style="color: #000000; font-weight: bold;">true</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">backgroundColor</span> = 0xffffee;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p><small>Once more I'm assuming you're familiar with Flex Builder's actionscript projects, if not then similar code should work in the Flash editor, but you're on your own with that I'm afraid.</small></p>
<p><strong>OK OK, what's the fix?</strong></p>
<p>The solution I came up with is to add a listener to the stage for mouse leave, and to temporarily disable selection.  Text entry still works because the field maintains focus, but the text is not deleted on input.  Additionally, the continued selection behaviour disappears.  Clicking anywhere on the stage immediately restores the selectable flag on the field and everything should work as normal.  </p>
<p>Here's an example of a swf with the fix implemented:</p>

<object	type="application/x-shockwave-flash"
			data="http://www.tom-carden.co.uk/wp-content/uploads/2008/09/textinputselection.swf"
			width="500"
			height="50">
	<param name="movie" value="http://www.tom-carden.co.uk/wp-content/uploads/2008/09/textinputselection.swf" />
</object>
<p>Flash focus behaviour works differently in Mac and Windows, on Mac I think you have to click twice but this is normal once the mouse has been released outside an application – I haven't managed to get the caret to go to the clicked point in the field, caretIndex is read-only sadly.</p>
<p>The code for the fixed swf is:</p>
<pre class="actionscript">&nbsp;
&nbsp;
package <span style="color: #66cc66;">&#123;</span>
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageAlign</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageScaleMode</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">MouseEvent</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">TextField</span>;
  <span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #006600;">TextFieldType</span>;
&nbsp;
  <span style="color: #66cc66;">&#91;</span>SWF<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">backgroundColor</span>=<span style="color: #ff0000;">&quot;#eeeeee&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TextInputSelection <span style="color: #0066CC;">extends</span> Sprite
  <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">textField</span>:<span style="color: #0066CC;">TextField</span>;
&nbsp;
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> TextInputSelection<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
      <span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">align</span> = StageAlign.<span style="color: #006600;">TOP_LEFT</span>;
      <span style="color: #0066CC;">stage</span>.<span style="color: #0066CC;">scaleMode</span> = StageScaleMode.<span style="color: #006600;">NO_SCALE</span>;
&nbsp;
      <span style="color: #0066CC;">textField</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextField</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">type</span> = TextFieldType.<span style="color: #006600;">INPUT</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;select me and release the mouse off screen&quot;</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">x</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">10</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">width</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">textWidth</span> + <span style="color: #cc66cc;">8</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">height</span> = <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">textHeight</span> + <span style="color: #cc66cc;">4</span>;
      addChild<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">textField</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">textColor</span> = 0x202020;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">border</span> = <span style="color: #000000; font-weight: bold;">true</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">borderColor</span> = 0xdddddd;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">background</span> = <span style="color: #000000; font-weight: bold;">true</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">backgroundColor</span> = 0xffffee;
&nbsp;
      <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">MOUSE_LEAVE</span>, onStageMouseLeave<span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onStageMouseLeave<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
    <span style="color: #66cc66;">&#123;</span>
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">selectable</span> = <span style="color: #000000; font-weight: bold;">false</span>;
      <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_DOWN</span>, onStageMouseDown, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onStageMouseDown<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
    <span style="color: #66cc66;">&#123;</span>
      <span style="color: #0066CC;">stage</span>.<span style="color: #006600;">removeEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">MOUSE_DOWN</span>, onStageMouseDown, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">selectable</span> = <span style="color: #000000; font-weight: bold;">true</span>;
      <span style="color: #0066CC;">textField</span>.<span style="color: #0066CC;">setSelection</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>I promise that my next post will have prettier pictures.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2008/09/24/fix-for-buggy-flash-textfield-selection-on-mouse-leave/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Work: Hurricane Tracker for MSNBC</title>
		<link>http://www.tom-carden.co.uk/2008/09/02/new-work-hurricane-tracker-for-msnbc/</link>
		<comments>http://www.tom-carden.co.uk/2008/09/02/new-work-hurricane-tracker-for-msnbc/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 21:23:25 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[gustav]]></category>

		<category><![CDATA[hurricane]]></category>

		<category><![CDATA[information-visualisation]]></category>

		<category><![CDATA[Maps]]></category>

		<category><![CDATA[modest-maps]]></category>

		<category><![CDATA[stamen]]></category>

		<category><![CDATA[tracker]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/2008/09/02/new-work-hurricane-tracker-for-msnbc/</guid>
		<description><![CDATA[Thanks to a glorious holiday weekend in Bodega Bay, I've been scooped once again by my esteemed friends and colleagues in announcing our work on MSNBC's Hurricane Tracker, which debuted on Saturday. I jumped on this project as soon as I knew we had a chance to work on it, and despite the inevitable project [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to a glorious holiday weekend in Bodega Bay, I've been <a href="http://twitter.com/moleitau/statuses/903952760">scooped</a> once <a href="http://flowingdata.com/2008/08/31/tracking-hurricane-gustav-how-hard-is-it-going-to-hit/">again</a> by my <a href="http://mike.teczno.com/notes/hurricane-tracker.html">esteemed</a> friends and <a href="http://content.stamen.com/msnbc_hurricane_maps_are_live">colleagues</a> in announcing our work on MSNBC's Hurricane Tracker, which debuted on Saturday. I jumped on this project as soon as I knew we had a chance to work on it, and despite the inevitable project logistics and some awkward travel timing on my part I'm glad to say it made it out before the end of the hurricane season.</p>
<p>There are four storms active in the Atlantic right now:</p>
<p><a href='http://www.msnbc.msn.com/id/26295161' title='MSNBC Hurricane Tracker'><img src='http://www.tom-carden.co.uk/wp-content/uploads/2008/09/hurricane-beta-thumb.jpg' alt='MSNBC Hurricane Tracker' /></a></p>
<p>There's much to say about this, not least the fact that it's the first thing I've ever really worked on that exists in a <a href="http://www.gustavwiki.com/wiki/Interactive_Maps">competitive</a> <a href="http://laughingsquid.com/hurricane-gustav-information-resources/">environment</a> with many <a href="http://www.mcwetboy.net/maproom/2008/08/mapping_hurrica.php">credible</a> <a href="http://clairelight.typepad.com/atlast/2008/08/global-storm-tr.html">alternatives</a>. </p>
<p>However, there's still more to come so it will be a while before there's time to properly reflect. For now, <a href="http://mike.teczno.com/notes/cascadenik.html">let me echo Mike</a> in saying I also think map design for the web continues to be an exciting and vibrant area to be working in, and leave you with a quote from Google's Ed Parsons:</p>
<blockquote><p>That’s not to say the principals of design are not important in the creation of “maps” for screen display, indeed one could argue for the need of a “new” cartography which adopts rather than ignores the capabilities of screen based maps to portray information dynamically.</p></blockquote>
<p>— Ed Parsons, <a href="http://www.edparsons.com/2008/09/cartography-is-dead-long-live-the-map-makers/">"Cartography is dead, long live the map makers"</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2008/09/02/new-work-hurricane-tracker-for-msnbc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Quote From Edward Tufte</title>
		<link>http://www.tom-carden.co.uk/2008/08/17/a-quote-from-edward-tufte/</link>
		<comments>http://www.tom-carden.co.uk/2008/08/17/a-quote-from-edward-tufte/#comments</comments>
		<pubDate>Sun, 17 Aug 2008 18:50:05 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[charts]]></category>

		<category><![CDATA[Design]]></category>

		<category><![CDATA[Graphics]]></category>

		<category><![CDATA[information-visualisation]]></category>

		<category><![CDATA[tufte]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/2008/08/17/a-quote-from-edward-tufte/</guid>
		<description><![CDATA[Edward Tufte, October 27, 2006:
"In choosing templates for workaday graphical productions, it is worthwhile to look for excellent, conventional templates. Conventional templates immediately solve a lot of graphical reading problems for the viewer of the display. But the classics are often classics because they are off-the wall, unconventional, idiosyncratic, one-off, brilliant, historically original performances. Tinkering [...]]]></description>
			<content:encoded><![CDATA[<p>Edward Tufte, October 27, 2006:</p>
<blockquote><p>"In choosing templates for workaday graphical productions, it is worthwhile to look for excellent, conventional templates. Conventional templates immediately solve a lot of graphical reading problems for the viewer of the display. But the classics are often classics because they are off-the wall, unconventional, idiosyncratic, one-off, brilliant, historically original performances. Tinkering with Minard's Napoleon's March is no better than an artist tinkering with Picasso's Guernica."</p></blockquote>
<p>— <a href="http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0002Cw">Ask E.T. Museum Visits</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2008/08/17/a-quote-from-edward-tufte/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
