<?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>Ajar Productions &#187; jsfl</title>
	<atom:link href="http://ajarproductions.com/blog/category/jsfl/feed/" rel="self" type="application/rss+xml" />
	<link>http://ajarproductions.com/blog</link>
	<description>Animation &#124; Design &#124; Development</description>
	<lastBuildDate>Mon, 28 Jun 2010 02:06:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Cool JSFL Post on Talking to Your OS With Flash CS4</title>
		<link>http://ajarproductions.com/blog/2009/03/05/cool-jsfl-post-on-talking-to-your-os-with-flash-cs4/</link>
		<comments>http://ajarproductions.com/blog/2009/03/05/cool-jsfl-post-on-talking-to-your-os-with-flash-cs4/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 01:39:13 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[jsfl]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[applescript]]></category>

		<guid isPermaLink="false">http://ajarproductions.com/blog/?p=387</guid>
		<description><![CDATA[Nuff said. Check it out on the Summit Projects Flash Blog. Share and Enjoy:]]></description>
			<content:encoded><![CDATA[<p>Nuff said. Check it out on the <a href="http://summitprojectsflashblog.wordpress.com/2009/03/04/making-up-for-flash-cs4s-deficiencies-with-jsfl/" target="_blank">Summit Projects Flash Blog</a>.</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F&amp;title=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4&amp;bodytext=Nuff%20said.%20Check%20it%20out%20on%20the%20Summit%20Projects%20Flash%20Blog." title="Digg"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F&amp;title=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4&amp;notes=Nuff%20said.%20Check%20it%20out%20on%20the%20Summit%20Projects%20Flash%20Blog." title="del.icio.us"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4&amp;u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F" title="Fark"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F&amp;title=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4" title="StumbleUpon"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F&amp;t=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4" title="Facebook"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F&amp;title=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4&amp;annotation=Nuff%20said.%20Check%20it%20out%20on%20the%20Summit%20Projects%20Flash%20Blog." title="Google Bookmarks"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F&amp;title=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4&amp;source=Ajar+Productions+Animation+%7C+Design+%7C+Development&amp;summary=Nuff%20said.%20Check%20it%20out%20on%20the%20Summit%20Projects%20Flash%20Blog." title="LinkedIn"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F&amp;title=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4" title="Reddit"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F" title="Technorati"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F&amp;t=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4" title="MySpace"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4&amp;body=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F" title="email"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Cool%20JSFL%20Post%20on%20Talking%20to%20Your%20OS%20With%20Flash%20CS4%20-%20http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F05%2Fcool-jsfl-post-on-talking-to-your-os-with-flash-cs4%2F" title="Twitter"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://ajarproductions.com/blog/2009/03/05/cool-jsfl-post-on-talking-to-your-os-with-flash-cs4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacking the Flash CS4 Motion Model to Create New Extensions</title>
		<link>http://ajarproductions.com/blog/2009/03/04/hacking-the-flash-cs4-motion-model-to-create-extensions/</link>
		<comments>http://ajarproductions.com/blog/2009/03/04/hacking-the-flash-cs4-motion-model-to-create-extensions/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 02:03:43 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[ExtendScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[jsfl]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[cs4]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[motion]]></category>
		<category><![CDATA[tween]]></category>

		<guid isPermaLink="false">http://ajarproductions.com/blog/?p=337</guid>
		<description><![CDATA[This JSFL technique can be used in Flash CS4 in lieu of the non-existent timeline.createMotionObjectTween() command. I refer to this as a "hack" because it's an unsupported method, but given the complexity of what can be created with this new motion model, editing the XML is actually a fairly efficient way to go about creating/editing a tween. I used this technique to create the EaseCaddy, MotionSketch, and MotionBlur extensions.]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a quote from an email I sent to <a href="http://keyframer.com/" target="_blank">Chris Georgenes</a> and <a href="http://quip.net" target="_blank">David Stiller</a> on 9/29/08 about an extension idea that I had using the new motion tweens in Flash CS4 (before I&#8217;d even used the application):</p>
<blockquote><p>Given that the new motion tween creates a bezier path, I&#8217;m guessing that we&#8217;ll have access to creating such a path with JSFL. Which led me to think about creating that path in real-time, similar to the real-time drawing that I&#8217;d seen from <a href="http://www.keyframer.com/index.php/2007/07/05/scribblebot/" target="_blank">ScribbleBot</a> on Chris&#8217;s blog. Instead of scribbling a line in real-time, I&#8217;d be sketching a motion path. There would be a variable to determine &#8220;smoothness&#8221; so that it doesn&#8217;t create an unmananageable amount of new motion keyframes. And it could probably be done with a custom tool rather than a panel, so that the sketching could be done directly on the stage.</p>
<p>That also leads me to wonder if there&#8217;s a way to record the armature animation in real-time and convert it to a motion tween, similar to the feature that already exists in After Effects CS3.</p></blockquote>
<p>I know, I&#8217;m a nerd. The first idea there became <a href="http://ajarproductions.com/blog/2009/02/10/flash-extension-motionsketch/">MotionSketch</a>. I haven&#8217;t yet found a way to accomplish the second idea with the armature, but I have a few ideas.</p>
<p>Prior to the release of Flash CS4, I had gotten a little hooked on creating Flash extensions. It&#8217;s quite easy to create a classic motion tween with JSFL (Flash Javascript), you can simply make the following call: <em>timeline.createMotionTween()</em>. It was likely that <em>createMotionTween() </em>would remain for legacy support even though the name of the tween had changed from &#8220;motion&#8221; to &#8220;classic.&#8221; I&#8217;d seen all of the great <a href="http://flashthusiast.com/2008/09/22/the-new-way-of-tweening-in-flash-cs4-or-new-motion-in-flash-cs4-makes-your-animations-better-faster-stronger/" target="_blank">new motion features</a> demonstrated online, and I expected there might be an equivalent call for a new motion tween.  When Lee Brimelow <a href="http://theflashblog.com/?p=448" target="_blank">linked to the CS4 documentation</a>, I went right to the <a href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/index.html" target="_blank">Extending Flash</a> section to see what had been added. I didn&#8217;t see any additions for the motion features, but I had also previously seen <a href="http://theflashblog.com/?p=445" target="_blank">Lee&#8217;s post</a> on <a href="http://www.flashcamp.org/" target="_blank">Flash Camp</a> in San Francisco. Fortunately, I live close to San Francisco and I decided to head over try out the application early, and maybe get a chance to talk with some of the Flash team about any undocumented features.</p>
<p>While at Flash Camp, I spoke with <a href="http://blogs.adobe.com/rgalvan/" target="_blank">Richard Galvan</a> and he directed me to John Mayhew, the engineer behind the new motion model in Flash. John was very affable and willing to follow up with me, but he didn&#8217;t know of any undocumented features offhand. Unfortunately, adding features to the JSFL API is usually somewhat of an afterthought because so much of the development time is spent on the new features themselves. I had a few ideas to use the new 3D features while at Flash Camp as well, but they were similarly left out of the JSFL API.</p>
<p>So I let those ideas go for awhile and focused on a <a href="http://ajarproductions.com/blog/2008/10/12/flash-extension-combine-textfields/">different extension</a> as my Flash Camp project. A few weeks later, I got a little antsy and I starting digging around in the Flash configuration directory for clues. I noticed two files in the Javascript directory named <em>MotionXML.jsfl</em> and <em>MotionClipboard.xml</em>. I started looking around in the JSFL file for undocumented commands that I could use, but to little avail. I think I even put some trace calls into the JSFL to spit out info when copying motion from the Flash IDE. I noticed that even though copying and pasting a new motion tween appeared to work the same way in the Flash interface as copying and pasting a classic tween, a new motion tween was not triggering the calls in the JSFL file. Looking at the XML file, I found that even though copying a motion tween wasn&#8217;t using the same JSFL calls, it was saving XML to the same file&#8230;just different XML. The classic tweens were generating XML with a root tag of <em>&lt;Motion&gt;</em> and the new tweens were generating a root tag of <em>&lt;AnimationCore&gt;</em>.</p>
<p>Flash seemed to be able to discern which type of motion it was copying or pasting and acting accordingly. So it occurred to me that I could grab the data from the motion clipboard and alter it before pasting it back. Additionally, if I wanted data from an existing tween, I could run a Copy Motion command, available to JSFL as of Flash CS3 thanks to Robert Penner&#8217;s <a href="http://robertpenner.com/flashblog/2007/08/links-for-copy-motion-as-actionscript-3_10.html" target="_blank">Copy Motion feature</a>, then go about altering and pasting. These are the extensions that I&#8217;ve created thus far using that very technique:</p>
<ul>
<li><a href="http://ajarproductions.com/blog/2009/02/26/the-missing-flash-panel-easecaddy/">EaseCaddy</a></li>
<li><a href="http://ajarproductions.com/blog/2009/02/10/flash-extension-motionsketch/">MotionSketch</a></li>
<li><a href="http://ajarproductions.com/blog/2009/03/02/new-flash-extension-motionblur/">MotionBlur</a></li>
</ul>
<p>Below is a rundown of the steps I used in the extensions mentioned above. This technique can be used in lieu of the non-existent <em>timeline.createMotionObjectTween()</em> command. I refer to this as a &#8220;<a href="http://en.wikipedia.org/wiki/Hack_(technology)" target="_blank">hack</a>&#8221; because it&#8217;s an unsupported method, but given the complexity of what can be created with this new motion model, editing the XML is actually a fairly efficient way to go about creating/editing a tween. If the XML is not properly formed, it can cause Flash to crash when you try to paste the motion, or it can create some funky bugs in the Motion Editor. Be sure to test your code thoroughly before releasing anything for public consumption.  The language is <a href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fe8.html" target="_blank">JSFL</a> (used to automate and manipulate the Flash authoring environment). There&#8217;s a link to documentation for the AnimationCore XML listed in step 3.</p>
<p><span id="more-337"></span></p>
<p><strong>Step 1:</strong> Store the motion clipboard so you can restore it when you&#8217;re done. In some cases, I store it as a file. In this example, I store it as a variable.</p>
<p><code>var MOTION_CLIPBOARD = fl.configURI + "Javascript/MotionClipboard.xml";<br />
var tl = fl.getDocumentDOM().getTimeline();<br />
var storedMotion = FLfile.read(MOTION_CLIPBOARD);</code></p>
<p><strong>Step 2(a):</strong> Copy motion to clipboard, retrieve the new clipboard contents and convert to XML. Use this step if you want alter an existing motion tween. The <a href="http://ajarproductions.com/blog/2009/02/28/new-flash-extension-motionblur/">MotionBlur</a> extension uses this step.</p>
<p><code>tl.copyMotion();<br />
var xmlstr = FLfile.read(MOTION_CLIPBOARD);<br />
var motionXML = new XML(xmlstr)</code></p>
<p><strong>Step 2(b)</strong>: Instead of copying the motion, you can create a new tween by loading a more or less blank motion XML template and adding content to it. The <a href="http://ajarproductions.com/blog/2009/02/10/flash-extension-motionsketch/">MotionSketch</a> extension uses this step.<a href="http://ajarproductions.com/blog/2009/02/10/flash-extension-motionsketch/"><br />
</a></p>
<p><strong>Step 3:</strong> The motion XML can then be altered using <a href="http://robertpenner.com/flashblog/2007/08/jsfl-updated-to-javascript-16-gains-e4x.html">E4X</a>. This portion of the code is different for each extension, depending on what the extension is trying to accomplish. Here&#8217;s the <a href="http://flashthusiast.com/2008/11/04/understanding-flash-cs4-motion-xml/" target="_blank">documentation on CS4 Motion XML</a> that Flash engineer John Mayhew graciously put together.</p>
<p><strong>Step 4:</strong> Write the altered XML to the motion clipboard.</p>
<p><code>FLfile.write(MOTION_CLIPBOARD, motionXML.toXMLString());</code></p>
<p><strong>Step 5:</strong> Paste the altered motion.</p>
<p><code>tl.pasteMotion();</code></p>
<p><strong>Step 6:</strong> Restore the motion clipboard for the user.</p>
<p><code>FLfile.write(MOTION_CLIPBOARD, storedMotion);</code></p>
<p>If you want to know if a motion tween has already been applied, you can retrieve the <em>tweenType</em> property from the current frame. A classic tween will return a value of &#8220;<em>motion</em>&#8221; and a new motion tween will return a value of &#8220;<em>motion object</em>&#8220;. If you use Step 2(a), you&#8217;ll want to check and make sure you have a &#8220;motion object&#8221; selected before proceeding.</p>
<p>And there you have it.</p>
<p>There are other ways to go about this process. You could, since motion presets are just motion XML files, run this process through the <a href="http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS6F01C4D8-31E3-4d68-BB08-2E4C116DA70E.html" target="_blank">Motion Presets panel&#8217;s JSFL calls</a>, but this would require more steps than the process laid out above.</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F&amp;title=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions&amp;bodytext=This%20JSFL%20technique%20can%20be%20used%20in%20Flash%20CS4%20in%20lieu%20of%20the%20non-existent%20timeline.createMotionObjectTween%28%29%20command.%20I%20refer%20to%20this%20as%20a%20%22hack%22%20because%20it%27s%20an%20unsupported%20method%2C%20but%20given%20the%20complexity%20of%20what%20can%20be%20created%20with%20this%20new%20motion%20model%2C%20editing%20the%20XML%20is%20actually%20a%20fairly%20efficient%20way%20to%20go%20about%20creating%2Fediting%20a%20tween.%20I%20used%20this%20technique%20to%20create%20the%20EaseCaddy%2C%20MotionSketch%2C%20and%20MotionBlur%20extensions." title="Digg"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F&amp;title=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions&amp;notes=This%20JSFL%20technique%20can%20be%20used%20in%20Flash%20CS4%20in%20lieu%20of%20the%20non-existent%20timeline.createMotionObjectTween%28%29%20command.%20I%20refer%20to%20this%20as%20a%20%22hack%22%20because%20it%27s%20an%20unsupported%20method%2C%20but%20given%20the%20complexity%20of%20what%20can%20be%20created%20with%20this%20new%20motion%20model%2C%20editing%20the%20XML%20is%20actually%20a%20fairly%20efficient%20way%20to%20go%20about%20creating%2Fediting%20a%20tween.%20I%20used%20this%20technique%20to%20create%20the%20EaseCaddy%2C%20MotionSketch%2C%20and%20MotionBlur%20extensions." title="del.icio.us"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions&amp;u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F" title="Fark"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F&amp;title=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions" title="StumbleUpon"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F&amp;t=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions" title="Facebook"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F&amp;title=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions&amp;annotation=This%20JSFL%20technique%20can%20be%20used%20in%20Flash%20CS4%20in%20lieu%20of%20the%20non-existent%20timeline.createMotionObjectTween%28%29%20command.%20I%20refer%20to%20this%20as%20a%20%22hack%22%20because%20it%27s%20an%20unsupported%20method%2C%20but%20given%20the%20complexity%20of%20what%20can%20be%20created%20with%20this%20new%20motion%20model%2C%20editing%20the%20XML%20is%20actually%20a%20fairly%20efficient%20way%20to%20go%20about%20creating%2Fediting%20a%20tween.%20I%20used%20this%20technique%20to%20create%20the%20EaseCaddy%2C%20MotionSketch%2C%20and%20MotionBlur%20extensions." title="Google Bookmarks"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F&amp;title=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions&amp;source=Ajar+Productions+Animation+%7C+Design+%7C+Development&amp;summary=This%20JSFL%20technique%20can%20be%20used%20in%20Flash%20CS4%20in%20lieu%20of%20the%20non-existent%20timeline.createMotionObjectTween%28%29%20command.%20I%20refer%20to%20this%20as%20a%20%22hack%22%20because%20it%27s%20an%20unsupported%20method%2C%20but%20given%20the%20complexity%20of%20what%20can%20be%20created%20with%20this%20new%20motion%20model%2C%20editing%20the%20XML%20is%20actually%20a%20fairly%20efficient%20way%20to%20go%20about%20creating%2Fediting%20a%20tween.%20I%20used%20this%20technique%20to%20create%20the%20EaseCaddy%2C%20MotionSketch%2C%20and%20MotionBlur%20extensions." title="LinkedIn"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F&amp;title=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions" title="Reddit"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F" title="Technorati"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F&amp;t=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions" title="MySpace"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions&amp;body=http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F" title="email"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Hacking%20the%20Flash%20CS4%20Motion%20Model%20to%20Create%20New%20Extensions%20-%20http%3A%2F%2Fajarproductions.com%2Fblog%2F2009%2F03%2F04%2Fhacking-the-flash-cs4-motion-model-to-create-extensions%2F" title="Twitter"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://ajarproductions.com/blog/2009/03/04/hacking-the-flash-cs4-motion-model-to-create-extensions/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Easy (and Readable) Extendscript to JSFL Workflow</title>
		<link>http://ajarproductions.com/blog/2008/12/14/easy-and-readable-extendscript-to-jsfl-workflow/</link>
		<comments>http://ajarproductions.com/blog/2008/12/14/easy-and-readable-extendscript-to-jsfl-workflow/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 01:54:56 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[ExtendScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[jsfl]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://ajarproductions.com/blog/?p=214</guid>
		<description><![CDATA[Even though the original Adobe Creative Suite applications (Photoshop, Illustrator, InDesign) and the original Macromedia Studio applications (Flash, Fireworks, Dreamweaver) don&#8217;t speak the same language, they&#8217;re both versions of javascript. You can send code from Extendscript (used in PS, AI, ID) as a string to another Adobe application&#8217;s native scripting language, like Flash&#8217;s JSFL scripting [...]]]></description>
			<content:encoded><![CDATA[<p>Even though the original Adobe Creative Suite applications (Photoshop, Illustrator, InDesign) and the original Macromedia Studio applications (Flash, Fireworks, Dreamweaver) don&#8217;t speak the same language, they&#8217;re both versions of javascript. You can send code from Extendscript (used in PS, AI, ID) as a string to another Adobe application&#8217;s native scripting language, like Flash&#8217;s JSFL scripting language. The process of creating these strings is much like sending JSFL from Actionscript, long code strings have to be created. String assignments don&#8217;t take kindly to hard returns, so to make this code readable, the string containing the script can be broken into lines by appending using the <em>+=</em> operator, similar to this pseudocode:</p>
<p><code>var codeString = "function myFunction() {";<br />
codeString += "var myVar = 10;";<br />
codeString += "for(var i=0; i &lt; myVar; i++){";<br />
codeString += " var newVar = i;";<br />
codeString += "}";<br />
codeString += "}";<br />
sendStringToOtherLanguage(codeString);</code></p>
<p>While this is more readable than one string of text, it&#8217;s still a pain to edit. All code highlighting is lost. On top of that, you&#8217;re debugging across languages, so it slows testing even more. While working on a script recently I discovered a workflow that allows me to maintain code readability while working across multiple Adobe applications.<br />
<span id="more-214"></span><br />
The solution came to me after discovering the <em>toSource()</em> javascript method.</p>
<p>You can download the example script in its entirety <a href="http://ajarproductions.com/blog/wp-content/uploads/2008/12/extendscript-to-jsfl.jsx">here</a>.</p>
<p>This can be run from any Extendscript-enabled application (Illustrator, InDesign, Photoshop, Soundbooth, After Effects, or Bridge) and sent to any other application available to BridgeTalk (Contribute, Fireworks, Acrobat, Dreamweaver, Flash, Acrobat, <em>etc</em>).</p>
<p>You can set the source application by putting the script in the appropriate directory and running the script directly from the application or use the Extendscript Toolkit and select the application name from the drop-down at the top.</p>
<p>The breakdown is as follows&#8230;</p>
<p>I set the target application. In this case I&#8217;m targeting JSFL in Flash:</p>
<p><code>var targAppName = "Flash";<br />
var sourceApp = BridgeTalk.getDisplayName(BridgeTalk.appName);<br />
var targApp = getTargetAppName(targAppName);<br />
var targAppStatus = BridgeTalk.getStatus(targApp);<br />
var layerName = "layer created from " + sourceApp;</code></p>
<p>The following function is referenced above. It uses the <em>targAppName</em> variable to search for any open version of that application. It checks more recent versions of the application first. So if you have Flash CS4 and Flash CS3 open, it will find and return Flash CS4.</p>
<p><code>function getTargetAppName(nameStr){<br />
//assumes higher versions are listed last<br />
nameStr = nameStr.toLowerCase();<br />
for(var i=apps.length-1; i&gt;0; i--) {<br />
if(apps[i].toLowerCase().indexOf(nameStr) != -1) {<br />
if(BridgeTalk.getStatus(apps[i]) == "IDLE"<br />
|| BridgeTalk.getStatus(apps[i]) == "BUSY"<br />
|| BridgeTalk.getStatus(apps[i]) == "PUMPING"<br />
&amp;&amp; BridgeTalk.getStatus(apps[i]) != "ISNOTRUNNING"){<br />
//this version of the app is open<br />
return apps[i];<br />
}<br />
}<br />
}<br />
return nameStr;<br />
}</code></p>
<p>The <em>stringifyFunction() </em>function below takes a reference to another function, converts that function&#8217;s contents to a string using the <em>toSource()</em> method. The string returned from <em>toSource()</em> is encapsulated in parentheses, so those are removed before the string is returned.</p>
<p><code>function stringifyFunction(func){<br />
var str = func.toSource();<br />
var rStr = str.substring(1, str.length-1) + "\r";<br />
return rStr;<br />
}</code></p>
<p>The <em>runTargetFunction</em> is where I reference my JSFL functions (just one in this example). Instead of typing out each line of the function and appending it to a string I can call my <em>stringifyFunction() </em>method and pass my JSFL function (listed further down). Then I append my call to said function as a string, <em>newLayer()</em> in this case, and send it to my target application (Flash) using BridgeTalk. I also have some error checking with alerts to make sure the application is running and available.</p>
<p><code>function runTargetFunction(layerName){<br />
if(targAppStatus == "IDLE"){<br />
var bt = new BridgeTalk();<br />
bt.target = targApp;<br />
var scriptStr = stringifyFunction(newLayer);<br />
scriptStr += "newLayer('" + layerName + "');";<br />
bt.body = scriptStr;<br />
bt.send();<br />
BridgeTalk.bringToFront(targApp);<br />
}<br />
else if (targAppStatus == "ISNOTRUNNING" || targAppStatus == "ISNOTINSTALLED"){<br />
alert(targAppName + " must be running for this script to work."); }<br />
else if(targAppStatus == "BUSY" ) {<br />
alert(targAppName + " is currently busy. Check the application to make sure no dialog boxes are open."); }<br />
else { alert("There was an error when trying to interface with the " + targAppName + " application."); }</code></p>
<p>}</p>
<p>Next I run the function:</p>
<p><code>runTargetFunction(layerName);</code></p>
<p>Below my Extendscript functions, I list my JSFL functions just as if they were Extendscript. The Extendscript Toolkit is pretty forgiving and doesn&#8217;t mind that I have functions in different javascript dialects, so long as I don&#8217;t call the function directly from Extendscript. This script below is JSFL code that creates a new layer in Flash. If you have Flash open, but don&#8217;t have a document open, the script will open a new Flash document before creating the layer.</p>
<p><code>function newLayer(layerName) {<br />
if(fl.documents.length &lt; 1) fl.createDocument();<br />
var layer = fl.getDocumentDOM().getTimeline().addNewLayer(layerName);<br />
}</code></p>
<p>The layer created in Flash will list the application that sent the code. So if you ran this script from Photoshop CS3, the layer would be titled, &#8220;layer created from Photoshop CS3.&#8221;</p>
<p>I purposely wrote this example so that it would be easy to use with other applications. If you want to target a different application, change the functions at the bottom to work in another application (like Dreamweaver or Fireworks) using the application&#8217;s native JS and update the <em>targAppName</em> at the top. Keep in mind that communicating to most of these applications will only work in CS3 and later (post Adobe and Macromedia merger).</p>
<p>You can then write as many functions as you like for your target application and they&#8217;ll still be readable (just make sure to add them and call them in the string within <em>runTargetFunction</em>).</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F&amp;title=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow&amp;bodytext=Even%20though%20the%20original%20Adobe%20Creative%20Suite%20applications%20%28Photoshop%2C%20Illustrator%2C%20InDesign%29%20and%20the%20original%20Macromedia%20Studio%20applications%20%28Flash%2C%20Fireworks%2C%20Dreamweaver%29%20don%27t%20speak%20the%20same%20language%2C%20they%27re%20both%20versions%20of%20javascript.%20You%20can%20" title="Digg"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F&amp;title=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow&amp;notes=Even%20though%20the%20original%20Adobe%20Creative%20Suite%20applications%20%28Photoshop%2C%20Illustrator%2C%20InDesign%29%20and%20the%20original%20Macromedia%20Studio%20applications%20%28Flash%2C%20Fireworks%2C%20Dreamweaver%29%20don%27t%20speak%20the%20same%20language%2C%20they%27re%20both%20versions%20of%20javascript.%20You%20can%20" title="del.icio.us"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow&amp;u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F" title="Fark"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F&amp;title=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow" title="StumbleUpon"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F&amp;t=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow" title="Facebook"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F&amp;title=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow&amp;annotation=Even%20though%20the%20original%20Adobe%20Creative%20Suite%20applications%20%28Photoshop%2C%20Illustrator%2C%20InDesign%29%20and%20the%20original%20Macromedia%20Studio%20applications%20%28Flash%2C%20Fireworks%2C%20Dreamweaver%29%20don%27t%20speak%20the%20same%20language%2C%20they%27re%20both%20versions%20of%20javascript.%20You%20can%20" title="Google Bookmarks"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F&amp;title=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow&amp;source=Ajar+Productions+Animation+%7C+Design+%7C+Development&amp;summary=Even%20though%20the%20original%20Adobe%20Creative%20Suite%20applications%20%28Photoshop%2C%20Illustrator%2C%20InDesign%29%20and%20the%20original%20Macromedia%20Studio%20applications%20%28Flash%2C%20Fireworks%2C%20Dreamweaver%29%20don%27t%20speak%20the%20same%20language%2C%20they%27re%20both%20versions%20of%20javascript.%20You%20can%20" title="LinkedIn"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F&amp;title=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow" title="Reddit"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F" title="Technorati"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F&amp;t=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow" title="MySpace"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow&amp;body=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F" title="email"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Easy%20%28and%20Readable%29%20Extendscript%20to%20JSFL%20Workflow%20-%20http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F12%2F14%2Feasy-and-readable-extendscript-to-jsfl-workflow%2F" title="Twitter"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://ajarproductions.com/blog/2008/12/14/easy-and-readable-extendscript-to-jsfl-workflow/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Flash Extension and JSFL resource</title>
		<link>http://ajarproductions.com/blog/2008/10/23/flash-extension-and-jsfl-resource/</link>
		<comments>http://ajarproductions.com/blog/2008/10/23/flash-extension-and-jsfl-resource/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 16:01:53 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[jsfl]]></category>
		<category><![CDATA[links]]></category>

		<guid isPermaLink="false">http://ajarproductions.com/blog/?p=108</guid>
		<description><![CDATA[I was doing some research/wandering and I found this great list of Flash extension sites and JSFL resources on the 5 1/2 blog. Share and Enjoy:]]></description>
			<content:encoded><![CDATA[<p>I was doing some research/wandering and I found this great list of <a href="http://www.5etdemi.com/blog/archives/2005/01/toolsextensions-for-flash-mx-2004/" target="_blank">Flash extension sites and JSFL resources</a> on the <a href="http://www.5etdemi.com/blog/" target="_blank">5 1/2 blog</a>.</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F&amp;title=Flash%20Extension%20and%20JSFL%20resource&amp;bodytext=I%20was%20doing%20some%20research%2Fwandering%20and%20I%20found%20this%20great%20list%20of%20Flash%20extension%20sites%20and%20JSFL%20resources%20on%20the%205%201%2F2%20blog." title="Digg"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F&amp;title=Flash%20Extension%20and%20JSFL%20resource&amp;notes=I%20was%20doing%20some%20research%2Fwandering%20and%20I%20found%20this%20great%20list%20of%20Flash%20extension%20sites%20and%20JSFL%20resources%20on%20the%205%201%2F2%20blog." title="del.icio.us"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Flash%20Extension%20and%20JSFL%20resource&amp;u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F" title="Fark"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F&amp;title=Flash%20Extension%20and%20JSFL%20resource" title="StumbleUpon"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F&amp;t=Flash%20Extension%20and%20JSFL%20resource" title="Facebook"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F&amp;title=Flash%20Extension%20and%20JSFL%20resource&amp;annotation=I%20was%20doing%20some%20research%2Fwandering%20and%20I%20found%20this%20great%20list%20of%20Flash%20extension%20sites%20and%20JSFL%20resources%20on%20the%205%201%2F2%20blog." title="Google Bookmarks"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F&amp;title=Flash%20Extension%20and%20JSFL%20resource&amp;source=Ajar+Productions+Animation+%7C+Design+%7C+Development&amp;summary=I%20was%20doing%20some%20research%2Fwandering%20and%20I%20found%20this%20great%20list%20of%20Flash%20extension%20sites%20and%20JSFL%20resources%20on%20the%205%201%2F2%20blog." title="LinkedIn"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F&amp;title=Flash%20Extension%20and%20JSFL%20resource" title="Reddit"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F" title="Technorati"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F&amp;t=Flash%20Extension%20and%20JSFL%20resource" title="MySpace"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Flash%20Extension%20and%20JSFL%20resource&amp;body=http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F" title="email"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Flash%20Extension%20and%20JSFL%20resource%20-%20http%3A%2F%2Fajarproductions.com%2Fblog%2F2008%2F10%2F23%2Fflash-extension-and-jsfl-resource%2F" title="Twitter"><img src="http://ajarproductions.com/blog/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://ajarproductions.com/blog/2008/10/23/flash-extension-and-jsfl-resource/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
