<?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>Five Star Development &#187; Developer</title>
	<atom:link href="http://www.fivestardev.com/feed?cat=23" rel="self" type="application/rss+xml" />
	<link>http://www.fivestardev.com</link>
	<description>Five Star Development Blog</description>
	<lastBuildDate>Fri, 07 May 2010 01:24:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Listen for Event.ENTER_FRAME to Update Screen</title>
		<link>http://www.fivestardev.com/2010/04/05/listen-event-enter_frame-update-screen</link>
		<comments>http://www.fivestardev.com/2010/04/05/listen-event-enter_frame-update-screen#comments</comments>
		<pubDate>Mon, 05 Apr 2010 17:57:17 +0000</pubDate>
		<dc:creator>Nicole Gagliardi</dc:creator>
				<category><![CDATA[Developer]]></category>

		<guid isPermaLink="false">http://www.fivestardev.com/?p=2292</guid>
		<description><![CDATA[For a recent project, I built a Flash asseessment engine as a plug-and-play tool for a client who wanted a simple way to build LMS ready assessments. The assessment engine loads an XML file and graphics to create custom assessments.
During development, I experienced a problem with the display of the dynamically loaded graphics. If a question had a [...]]]></description>
			<content:encoded><![CDATA[<p>For a recent project, I built a Flash asseessment engine as a plug-and-play tool for a client who wanted a simple way to build LMS ready assessments. The assessment engine loads an XML file and graphics to create custom assessments.</p>
<p>During development, I experienced a problem with the display of the dynamically loaded graphics. If a question had a graphic associated with it, the assessment engine;</p>
<ol>
<li>loaded the graphic,</li>
<li>unloaded the previous graphic from the movie clip that holds graphics,</li>
<li>placed the graphic in the movie clip,</li>
<li>positioned the movie clip,</li>
<li>sized and positioned a border around the graphic, and</li>
<li>set the movie clip and border to be visible.</li>
</ol>
<p>When the movie clip was set to be visible the previous picture with the previous position and border size flickered on stage before showing the correct display.</p>
<p>Once I had determined the code was being executed properly, I read more about the screen update process and discovered the importance of scheduling screen updates to happen with Event.ENTER_FRAME when using code to create displays or animate.</p>
<p>Event.ENTER_FRAME is dispatched at regular intervals determined by the frame rate. The key to solving the problem is understanding that when Event.ENTER_FRAME is dispatched, code is executed first, then the screen is rendered.</p>
<p>I added one step to the process (step 6). With the new code, if a question has a graphic associated with it, the assessment engine;</p>
<ol>
<li>loads the graphic,</li>
<li>unloads the previous graphic from the movie clip that holds graphics,</li>
<li>places the graphic in the moviclip,</li>
<li>positions the movie clip,</li>
<li>sizes and positions a border around the graphic,</li>
<li>waits for a screen update, and</li>
<li>sets the movie clip and border to be visible.</li>
</ol>
<p>Steps 1-5 happen during the first Event.ENTER_FRAME dispatch. After Step 5 executes, the screen updates and the display is  set to the correct state. On the next Event.ENTER_FRAME, it is safe to execute the code that makes the display visible.</p>
<p>Below, I&#8217;ve place the code you need to implement a scheduled screen update.</p>
<p>// The listener is attached in the image load callback function<br />
_image.addEventListener(Event.ENTER_FRAME, fShowImage);</p>
<p>// Gets called when the screen updates because that is when it is ok to make the image visible<br />
  public static function fShowImage(e:Event):void<br />
  {<br />
   _image.removeEventListener(Event.ENTER_FRAME, fShowImage);<br />
   Globals.Swf.border_mc.visible = Globals.Swf.graphic_mc.visible = true;<br />
  }</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fivestardev.com/2010/04/05/listen-event-enter_frame-update-screen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workaround for the Video.clear() Bug</title>
		<link>http://www.fivestardev.com/2010/01/26/workaround-video-clear-bug</link>
		<comments>http://www.fivestardev.com/2010/01/26/workaround-video-clear-bug#comments</comments>
		<pubDate>Tue, 26 Jan 2010 13:00:06 +0000</pubDate>
		<dc:creator>Nicole Gagliardi</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Video.clear()]]></category>

		<guid isPermaLink="false">http://www.fivestardev.com/?p=2275</guid>
		<description><![CDATA[While building video templates recently, I had my first run-in with ActionScript 3.o&#8217;s infamous Video.clear() bug. The bug is that calling Video.clear() only removes one pixel of a video, rather than the whole video.
The common workaround for the bug is to simply remove the Video component  from the stage when the movie is complete. This [...]]]></description>
			<content:encoded><![CDATA[<p>While building video templates recently, I had my first run-in with ActionScript 3.o&#8217;s infamous Video.clear() bug. The bug is that calling Video.clear() only removes one pixel of a video, rather than the whole video.</p>
<p>The common workaround for the bug is to simply remove the Video component  from the stage when the movie is complete. This solution is not robust enough for my purposes because I continue to use use the Video instance to play other movies. Also, the video templates will be used by a client to develop screens for courses, and the client might change properties of the component (name, placement, etc.) so a function that always creates a component with predetermined values is not an option either.</p>
<p>Below I have pasted the function I use in a custom VideoHandler class to create a duplicate Video component, clear the original Video component, and place the new on the stage.</p>
<p>private function fClearVideo():void<br />
{<br />
// Stops playing video and deletes the local copy of the video, though it may still exist in cache<br />
_ns.close();</p>
<p>// There is a bug with _video.clear where it only clears 1 pixel of the video<br />
// This bug was noted in 2008, exists in Flash Player 9 and 10, and unfortunately has not been fixed<br />
// Duplicate the Video component<br />
var videoDouble:Video = new Video;<br />
videoDouble.x = _video.x;<br />
videoDouble.y = _video.y;<br />
videoDouble.width = _video.width;<br />
videoDouble.height = _video.height;<br />
videoDouble.name = _video.name;</p>
<p>// Remove Video instance from the stage and add the duplicate instance.<br />
this.removeChild(_video);<br />
_video = this.addChild(videoDouble);<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fivestardev.com/2010/01/26/workaround-video-clear-bug/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converting Fonts to the PostScript Format</title>
		<link>http://www.fivestardev.com/2009/12/16/converting-fonts-postscript-format-2</link>
		<comments>http://www.fivestardev.com/2009/12/16/converting-fonts-postscript-format-2#comments</comments>
		<pubDate>Wed, 16 Dec 2009 15:15:51 +0000</pubDate>
		<dc:creator>Nicole Gagliardi</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Captivate]]></category>
		<category><![CDATA[font]]></category>

		<guid isPermaLink="false">http://www.fivestardev.com/?p=2247</guid>
		<description><![CDATA[I&#8217;m writing this post as a follow-up to the Adobe Captivate Font Rendering post from October because an issue was left unresolved. If the standard font formats are OpenType and TrueType, and even the Adobe Collection of fonts distributed with Adobe programs contains all OpenType fonts, where canyou find the PostScript fonts you need for Captivate projects?
Of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m writing this post as a follow-up to the <a href="http://www.fivestardev.com/2009/10/16/adobe-captivate-font-rendering" target="_blank">Adobe Captivate Font Rendering</a> post from October because an issue was left unresolved. If the standard font formats are OpenType and TrueType, and even the Adobe Collection of fonts distributed with Adobe programs contains all OpenType fonts, where canyou find the PostScript fonts you need for Captivate projects?</p>
<p>Of course you could purchase them, but that&#8217;s not ideal. The price for the PostScript version of one of our client&#8217;s fonts is $500 because it&#8217;s packaged with the TrueType version (which we already have).</p>
<p>So I searched the Web for an open source converter and found <a href="http://fontforge.sourceforge.net/" target="_blank">FontForge</a>. To install FontForge on a Windows OS you must also install cygwin. On a Mac you need to install the X11 server. Cygwin and the X11 server will make your machine look enough like a UNIX machine to run the program. This is a fine solution for a developer or technology-savvy person, but I know our Instructional Designers who use Captivate will certainly be intimidated and deterred by the process.</p>
<p>The best solution I found for converting any type of font to a PostScript format is <a href="http://www.fontlab.com" target="_blank">FontLab</a>&#8217;s product <a href="http://www.fontlab.com/font-converter/transtype/" target="_blank">TransType Pro</a>, which costs $179. Unfortunately the demo download for TransType does not allow you to test the conversion of a font to PostScript. Although FontLab products come with a 60-day money-back guarantee, if you wish to test a conversion before making a purchase, you may use the demo download for <a href="http://www.fontlab.com/font-editor/fontlab-studio/" target="_blank">FontLab Studio</a> to convert 20 characters of your font set. You can then test the font in Captivate using only those 20 characters to see if the conversion will meet your standards.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fivestardev.com/2009/12/16/converting-fonts-postscript-format-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alternative Method to Display HTML Text in Dynamic Textfields</title>
		<link>http://www.fivestardev.com/2009/12/09/alternative-method-display-html-text-dynamic-textfields</link>
		<comments>http://www.fivestardev.com/2009/12/09/alternative-method-display-html-text-dynamic-textfields#comments</comments>
		<pubDate>Wed, 09 Dec 2009 20:19:02 +0000</pubDate>
		<dc:creator>Nicole Gagliardi</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[dynamic textfields]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[font]]></category>

		<guid isPermaLink="false">http://www.fivestardev.com/?p=2221</guid>
		<description><![CDATA[I have been trying to figure out the best way to display HTML text in dynamic text fields for ActionScript 3.0 projects over the past six months. The best solution for Five Star is one that keeps the file size small, is versatile enough to handle different fonts with ease and adapts to different projects with [...]]]></description>
			<content:encoded><![CDATA[<p>I have been trying to figure out the best way to display HTML text in dynamic text fields for ActionScript 3.0 projects over the past six months. The best solution for Five Star is one that keeps the file size small, is versatile enough to handle different fonts with ease and adapts to different projects with little or no customization.</p>
<p>The solution that has evolved is a function named DisplayText, which I have copied below. The comments explain how the function works and an example call is included.</p>
<p>If you try implementing this solution and find it useful, if you need help or would like to enhance it, please leave a comment below.</p>
<pre>/**
 *  Takes a string of text that may have bold and italic tags.
 *  Displays string properly in an HTML TextField by replacing the bold and italic
 *  tags with font tags.
 *  Fonts should be linked in the library.
 *  Each version (regular, bold, italic) should have its own link.
 *  If 2 versions of the font (ex. regular and italic) have the same name
 *  in the Font Symbol Properties dialog Font menu you don't need specify the italic
 *  or bold version.
 *  Example Call:
 *   var s:String = "Hi, and welcome to &lt;b&gt;Lesson 1:&lt;/b&gt;&lt;i&gt;Topic 1&lt;/i&gt;."
 *   DisplayText( display_txt, s, 13, "Franklin Gothic Book", "Franklin Gothic Demi" );
 * @param    tf                TextField to format
 * @param    s                 Text to place.
 * @param    size              Size of text display.
 * @param    defaultFont       Regular font.
 * @param    boldFont          Optional. Bold font.
 * @param    italicFont        Optional. Italic font.
 */
 function DisplayText ( tf:TextField,
                         s:String,
                         size:Number,
                         defaultFont:String,
                         boldFont:String = "",
                         italicFont:String = "") : void
 {
     tf.htmlText = true;              // Set this to allow HTML text to be set
     tf.embedFonts = true;            // Set embed fonts to true
     tf.text = s;                     // Assign text - but not as htmlText yet

     // If a bold font is specified, replace bold tags
     if ( boldFont != "")
     {
         var boldStart:RegExp = /&lt;b&gt;|&lt;B&gt;/gi;            //    Match opening bold tags
         var boldEnd:RegExp = /&lt;\/b&gt;|&lt;\/B&gt;/gi;         //    Match ending bold tags

         tf.text = tf.text.replace( boldStart , "&lt;font face='" + boldFont + "'&gt;" );
        tf.text = tf.text.replace( boldEnd , "&lt;/font&gt;" );
     }

     // If a italic font is specified, replace italic tags
     if ( italicFont != "")
     {
         var italicStart:RegExp = /&lt;i&gt;|&lt;i&gt;/gi;          //    Match opening italic tags
         var italicEnd:RegExp = /&lt;\/i&gt;|&lt;\/I&gt;/gi;        //    Match ending italic tags

         tf.text = tf.text.replace( italicStart , "&lt;font face='" + italicFont + "'&gt;" );
         tf.text = tf.text.replace( italicEnd , "&lt;/font&gt;" );
     }

     // Wrap the text in a tag defining default font face and size
     tf.text = "&lt;FONT FACE='" + defaultFont + "' SIZE='" + size + "'&gt;" +
                tf.text + "&lt;/FONT&gt;";
     // Assign the text
     tf.htmlText = tf.text;
 }</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fivestardev.com/2009/12/09/alternative-method-display-html-text-dynamic-textfields/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Our Favorites From FlashPitt</title>
		<link>http://www.fivestardev.com/2009/10/26/our-favorites-from-flashpitt</link>
		<comments>http://www.fivestardev.com/2009/10/26/our-favorites-from-flashpitt#comments</comments>
		<pubDate>Mon, 26 Oct 2009 20:47:50 +0000</pubDate>
		<dc:creator>Nicole Gagliardi</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[FlashPitt]]></category>

		<guid isPermaLink="false">http://www.fivestardev.com/?p=2133</guid>
		<description><![CDATA[On October 16th four people from our technology department attended FlashPitt 2009, an interactive conference focusing on Flash. Only in its second year the conference is still young and growing quickly. All around, FlashPitt 2009 was very well planned and organized, the speakers were excellent and diverse, and it was a great time.
Each of us [...]]]></description>
			<content:encoded><![CDATA[<p>On October 16<sup>th</sup> four people from our technology department attended FlashPitt 2009, an interactive conference focusing on Flash. Only in its second year the conference is still young and growing quickly. All around, FlashPitt 2009 was very well planned and organized, the speakers were excellent and diverse, and it was a great time.</p>
<p>Each of us has written a summary of our favorite FlashPitt 2009 presentation. You may read them below and hopefully they will convince you to attend the conference next year.</p>
<h3>Ben Rogers (Director, Technology and Solutions)</h3>
<p>Julian Dolce spoke about &#8220;iPhone Development for Flash Developers&#8221; on the heels of <a href="http://www.adobe.com/devnet/logged_in/abansod_iphone.html" target="_blank">Adobe&#8217;s announcement </a>that CS5 would allow developers to compile ActionScript 3 projects to iPhone applications. The announcement came just a few days before FlashPitt, but Julian made his talk relevant by switching gears and researching what it means for Flash developers. Julian and his company <a href="http://fuelindustries.com/" target="_blank">Fuel Industries</a> have already spent considerable time in the iPhone SDK to convert Flash applications to the platform manually, and his research on the new subject was impressive.</p>
<p>Julian&#8217;s best subject was anticipating Apple&#8217;s response. Apple has not officially responded to the CS5 announcement, and if they chose to respond negatively Apple could disrupt plans in several ways. First, the existing SDK signing method has not been available on a Windows platform. It is implied by the CS5 capability that Adobe reverse-engineered the procedure to enable signing on a Windows platform. Would Adobe change their algorithm or policies to thwart that? Second, the Apple team reviewing iPhone application submissions may choose to place CS5 compiled apps at the bottom of their priority list- especially if the market is flooded with new apps from the Adobe community. Finally, Julian&#8217;s own research pointed towards CS5 compiled apps being significantly larger than iPhone SDK equivalents &#8211; a problem that may cause Apple (or even AT&amp;T) to have concerns in distribution. It will be interesting to see how Apple handles the announcement!</p>
<p>Julian also pointed out that developers are mistaken if they think they can open up every old Flash project and successfully get it running on the iPhone without modification. Flash developers will have to consider image and audio files, among other things, because of the differences in how they are processed and interpreted on the iPhone.</p>
<p>The presentation was informative and well put together on such short notice. Julian&#8217;s knowledge and experience on the subject really came through. Find out more about what he&#8217;s up to on his <a href="http://deleteaso.com/" target="_blank">blog</a>.</p>
<h3>Doug DiFilippo (.NET Developer)</h3>
<p>I really enjoyed <a href="http://www.joshsagermedia.com" target="_blank">Josh Sager’s</a> discussion on integrating MIDI information into Flash. Josh had the idea of developing an animated character that would react to input from his keyboard. I think what I appreciated most was how Josh took us step-by-step through his development process. He started with the basics of researching, installing, and learning how to use a <a href="http://osflash.org/red5" target="_self">Red 5 Server</a>. He then moved on to simple examples of receiving MIDI data and creating different visual displays based on pitch. Each example was a little more sophisticated than the next and before you knew it he was able to visually display pitch, pressure changes, and even recognize basic chords. Overall, it was a very unique application of Flash and I am glad to now be exposed to Red 5 Server as well. You can watch  the presentation for yourself <a href="http://joshsagermedia.com/blog/2009/10/16/flashpitt-09-video-of-interactive-experiments/" target="_blank">here</a>. Great job Josh!</p>
<h3>Matt Manzo (Graphic Designer)</h3>
<p>I found the most interesting creative work at the 2009 FlashPitt conference was not in one of the official “design track” sessions, but in<a href="http://www.sebleedelisle.com" target="_blank"> Seb Lee-Delisle’s</a> talk titled “Work/Play.” Seb covered everything from <a href="http://sebleedelisle.com/games/moonlander3d5k/" target="_blank">homemade 3D Flash render engines under 5k</a>, <a href="http://sebleedelisle.com/2008/05/interactive-digital-fireworks-new-video/" target="_blank">interactive projected outdoor particle firework installations</a>, <a href="http://www.bbc.co.uk/cbeebies/bigandsmall/fun/" target="_blank">Papervision driven 3D websites for the BBC</a>, <a href="http://sebleedelisle.com/games/pong3d/" target="_blank">Stereoscopic motion detecting pong</a>, <a href="http://blog.papervision3d.org/2008/07/23/mlb-baseball-3d-visualization/" target="_blank">ball tracking software for Major league Baseball</a>, and more! Seb is constantly pushing the limits of what Flash is capable of, and leading his work in directions that most Flash developers would not think possible. Plus it looks good.  All of this complex code is beautifully wrapped in eye-popping graphics and illustrations, an item that many programmers overlook. The session had my mind reeling at the time, but more importantly has left the gears in my head turning long after the conference has ended.<a href="http://www.flashpitt.com/speakers/www.pluginmedia.net" target="_blank"></a></p>
<h3>Nicole Gagliardi (Multimedia Developer)</h3>
<p>&#8220;Developing MMOs on the ActionScript Platform&#8221; by Max Kaufmann, from <a href="http://www.silvertreemedia.com/" target="_blank">Silver Tree Media</a>, was my favorite presentation. Throughout the presentation Max returned to a common theme of developing for what is and is not acceptable in gaming environments. Long loading times, for example, are not acceptable so users are often allowed to start playing a game before all the assets are loaded. This means clothes and character accessories or weapons might start popping onto a character during the first few seconds of the game, then background elements such as trees or mountains start to load.</p>
<p>Max also explained a scenario where it is acceptable to award a prize to multiple players. Due to the varying connection speeds of the players, one player may grab a prize, but before the information had time to reach the server and update all the other players&#8217; virtual worlds a second player grabs the same prize. If the prize is relatively unimportant it is acceptable to award the prize to both players, rather than disappoint and annoy one player.</p>
<p>Developing MMO&#8217;s is extremely challenging and Max reminded us they do not need to be perfect. The most important thing is handling obstacles in a way that allows players to enjoy an environment they perceive as fun and fair. In fact, it&#8217;s even okay for the game to occasionally fail&#8230;. as long as it fails with humor!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fivestardev.com/2009/10/26/our-favorites-from-flashpitt/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Comparison of Captivate and Flash Audio Output</title>
		<link>http://www.fivestardev.com/2009/10/21/a-comparison-of-captivate-and-flash-audio-output</link>
		<comments>http://www.fivestardev.com/2009/10/21/a-comparison-of-captivate-and-flash-audio-output#comments</comments>
		<pubDate>Wed, 21 Oct 2009 16:48:19 +0000</pubDate>
		<dc:creator>Nicole Gagliardi</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[Captivate]]></category>

		<guid isPermaLink="false">http://www.fivestardev.com/?p=2096</guid>
		<description><![CDATA[The Problem
Recently I was working on a project that required a combination of an animated introduction with music and alternating sections with a video of the host talking and a Captivate movie with the host&#8217;s voice synced to the movie. We had never combined Captivate SWFs with audio and Flash SWFs with audio in the same [...]]]></description>
			<content:encoded><![CDATA[<h3>The Problem</h3>
<p>Recently I was working on a project that required a combination of an animated introduction with music and alternating sections with a video of the host talking and a Captivate movie with the host&#8217;s voice synced to the movie. We had never combined Captivate SWFs with audio and Flash SWFs with audio in the same project, and we found it difficult to match the audio quality of the final SWFs. No matter what compressions we tried, the Captivate files sounded worse. Because we were short on time, we saved the Captivate files as FLAs and exported the final SWFs from Flash so that the sound quality would match.</p>
<p>The solution worked, but I was left wondering if there was a way to match the sound quality of audio output in Flash and Captivate without exporting to Flash.</p>
<h3>The Research</h3>
<p>I searched the web for help answering this question. The first piece of information I found was that a non-critical patch for audio degradation had been released for Captivate 4 in May 2009. Non-critical patches do not get downloaded as an automatic update—you have to go to Help &gt; Updates and download it yourself. I did this immediately because it not only improves the audio, but it fixes a memory leak, compile problems and <a href="http://blogs.adobe.com/captivate/2009/05/captvate_4_patch_update.html" target="_blank">more</a>.</p>
<p>The patch helped but it didn&#8217;t completely solve the quality discrepancies between Captivate and Flash.  My next stop was Mark Siegrist&#8217;s <a href="http://elearninglive.com/" target="_blank">elearninglive.com</a> blog. In July 2008, Siegrist started blogging about Captivate audio output. He tests the effects or the three configurable audio parameters on the audio quality and files sizes. The series is missing the final post summarizing the results and recommending settings to use for the best file size-to-quality ratio, but the existing posts are incredibly informative and contain examples that you can listen to and compare. I have listed the posts below.</p>
<ul>
<li><a href="http://elearninglive.com/wordpress/2008/07/captivate-audio-output-settings-comparison/" target="_blank">Captivate Audio Output Settings Comparison – Part One – Encoding Bitrate</a></li>
<li><a href="http://elearninglive.com/wordpress/2008/07/captivate-audio-output-settings-comparison-part-two-encoding-frequency/" target="_blank">Captivate Audio Output Settings Comparison – Part Two – Encoding Frequency</a></li>
<li><a href="http://elearninglive.com/wordpress/2008/12/captivate-audio-output-settings-comparison-part-three-encoding-speed/" target="_blank">Captivate Audio Output Settings Comparison – Part Three – Encoding Speed</a></li>
</ul>
<p>This series of posts allowed me to begin testing right away. I decided to test whether or not importing different audio formats (WAVs and MP3s) at different qualities would help me find a way to match the audio in Captivate to the audio in Flash.</p>
<h3>The Testing</h3>
<p>I imported a variety of MP3 files into both Captivate and Flash, trying to match the audio quality to the published SWFs. The MP3s included 128kbps/44.10khz,  64kbps/44.10khz, 48kbps/44.10khz and 48kbps/20.50khz 16-bit files (Captivate only accepts 8-bit and 16-bit audio files). Even the 128kbps/44.10khz file in Captivate had slightly more static compared to the 48kbps/44.10khz file in Flash, with publish settings in each program set to match those of the native files.</p>
<p>Although WAVs imported into Captivate get converted to MP3s when you publish to a SWF, I decided to try importing a 128kbps/44.10khz 16-bit WAV file into Captivate to see if I would get better results than the MP3. The results were the same.</p>
<h3>The Solution</h3>
<p>It’s best not to mix Captivate published SWFs in the same project as Flash published SWFs. We are often able to get around this problem by having a Flash wrapper handle all audio for the course, though this creates difficulties when the Captivate and audio need to be synced. In cases where audio needs to be synced, the quickest and easiest solution is to save your Captivate file as an FLA and publish in Flash.</p>
<p>But don’t get the wrong idea—just because these solutions worked for us doesn’t mean that Captivate has poor audio compression. That is not the case at all. As you can hear in Siegrist&#8217;s posts, you can get very good quality audio in Captivate published SWFs.</p>
<h3>The Summary</h3>
<p>I could not find a way to match the audio quality of SWFs published from Captivate and SWFs published from Flash, although I was able to improve the Captivate results by downloading the patch. I also learned from Siegrist&#8217;s posts that the best file size-to-quality ratio can be achieved using 48kbps/44.10khz compression with an encoding speed of 8.</p>
<p>The question remains—is Captivate audio compressed the same way as Flash audio? I could not find documentation from Adobe that would help me answer this question, but my tests lead me to believe that audio compression for the two programs is not the same. If you have any information you can share with me on this topic, please leave a comment below.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fivestardev.com/2009/10/21/a-comparison-of-captivate-and-flash-audio-output/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adobe Captivate Font Rendering</title>
		<link>http://www.fivestardev.com/2009/10/16/adobe-captivate-font-rendering</link>
		<comments>http://www.fivestardev.com/2009/10/16/adobe-captivate-font-rendering#comments</comments>
		<pubDate>Fri, 16 Oct 2009 13:00:57 +0000</pubDate>
		<dc:creator>Nicole Gagliardi</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Captivate]]></category>
		<category><![CDATA[font]]></category>

		<guid isPermaLink="false">http://www.fivestardev.com/?p=2068</guid>
		<description><![CDATA[The Problem
When trying to create a theme for Captivate, I discovered our client&#8217;s preferred font, Whitney set to 12 pts, which was illegible in the program and in the published SWFs. So I did some research on font rendering in Captivate and came across several possible solutions. Below is a summary of my research, test results, and conclusions:
The Research
I started by [...]]]></description>
			<content:encoded><![CDATA[<h3>The Problem</h3>
<p>When trying to create a theme for Captivate, I discovered our client&#8217;s preferred font, Whitney set to 12 pts, which was illegible in the program and in the published SWFs. So I did some research on font rendering in Captivate and came across several possible solutions. Below is a summary of my research, test results, and conclusions:</p>
<h3>The Research</h3>
<p>I started by searching the web for documentation on Captivate&#8217;s font rendering engine and I requested information from RJ Jacquez, the Adobe Evangelist for Captivate. The web search for documentation resulted in one useful article on the <a href="http://www.communitymx.com/" target="_blank">CommunityMX</a> web site: <a href="http://www.communitymx.com/content/article.cfm?cid=3BDD8" target="_blank">Text in Captivate</a>, by Tom Greene. The article does not have a date but the support file for this article was dated 9/12/2005, therefore I assumed it was written about one month after Flash 8 Player was released and the author would have been using Captivate 1. Considering the age of the article I read it with caution.</p>
<p>According to Greene, Captivate turns letters into bitmaps, using Microsoft products such as MS Word as the benchmark for font rendering. The Captivate team chose to do this rather than use the Flash font rendering engine because Flash could not display small point sizes adequately. Greene would have preferred the Captivate team to just inform developers to stop using bitmap fonts. One additional issue with Captivate is that Captivate displays fonts 2-3 points larger than Fireworks, so a 9 pt Arial in Captivate looks like 12 pt Arial in Fireworks.</p>
<p>I requested help from Jacquez through Twitter (<a href="http://www.twitter.com/rjacquez">@rjacquez</a>). At first he replied saying he would look into my problem and get back to me as soon as possible. He later replied that he is &#8220;not in documentation&#8221; but would share my query with the team. A dead end for me&#8230; and so it was time to sit down and do some testing to see if Greene&#8217;s insights would still hold true with the Flash Player 10 and Captivate 4.</p>
<h3>The Testing</h3>
<p>Initially I set up a font test in Captivate and one in Flash using Postscript, TrueType and OpenType fonts. Below is a screen capture of my results. Notice how all the fonts in Captivate have jagged, unaliased edges while the Flash fonts are smooth because they are aliased. The distortion of the Captivate fonts is worse for OpenType and TrueType fonts because Postscript fonts are meant to be rasterized for print, and therefore look better when they are rasterized and turned into bitmaps.</p>
<p><img class="alignnone size-full wp-image-2083" title="font-screenshot" src="http://www.fivestardev.com/wp-content/uploads/2009/10/font-screenshot.jpg" alt="" width="533" height="743" /></p>
<p>Although these were the results I should have expected after reading Greene&#8217;s article I was still surprised. The OpenType format was developed by Microsoft in partnership with Adobe, and Adobe has a <a href="http://www.adobe.com/type/opentype/" target="_blank">set of OpenType fonts</a> they distribute for use with their programs, so I never would have expected one of their products would do such a poor job of displaying those font types.</p>
<p>Lastly, take note of the variation in display size between the Captivate and Flash fonts, despite all fonts being set to 25 pts. I measured the difference between the first letter in the Captivate font and compared it to its Flash partner. For each font the Captivate display was 5-7 pixels larger!</p>
<p>This test reveals that the information in Greene&#8217;s article from 2005 still holds true. The basis of Captivate&#8217;s font rendering engine has not been improved since Captivate 1. The next step was finding a work around.</p>
<h3>The Solutions</h3>
<p>My mind first jumped to embedding the fonts in Captivate. There is no embed option in the program so I thought I might be able to place a Flash SWF embedded with the fonts in the Captivate project. When that didn&#8217;t work I searched the Adobe forums and tried many other potential solutions that involved changing settings in Captivate and on my computer. All I learned is that I&#8217;m not the only frustrated person, and there is no way to embed fonts in Captivate or make the fonts render better without Flash.</p>
<p>If you can use Flash for a project, there are two solutions. The first is to save your Captivate file as a Flash file, open the file in Flash, embed fonts in any dynamic text fields and then publish the SWF. This is the best solution if you need a font to be used throughout a project that does not render well in Captivate.</p>
<p>The second option is best if you plan to use a font that does not render well in Captivate on a limited number of slides. Simply create your slide in Flash, publish the SWF and insert it into Captivate. If you are using dynamic text fields in the SWF, ensure all text is embedded, because Adobe warns that Captivate does not display device fonts. This means that if you don&#8217;t embed your text in Flash, you won&#8217;t see any text at all. I also found you cannot allow dynamic or static text to be selectable because if a user selects it, the text may disappear.</p>
<h3>The Summary</h3>
<p>In summary, if you need to work in Captivate and cannot use Flash for a project, you are limited to carefully choosing your fonts. My general recommendation is to use Postscript fonts since they tend to look best. If you plan to have any dynamic text fields in your project (i.e., text entry fields) you will want to stick to common fonts since Captivate cannot embed fonts, and users who do not have the fonts installed on their computer will not be able to see them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fivestardev.com/2009/10/16/adobe-captivate-font-rendering/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Five Star and AHS Launch André Bluemel Meadow Web Site</title>
		<link>http://www.fivestardev.com/2009/07/20/five-star-and-ahs-launch-andre-bluemel-meadow-web-site</link>
		<comments>http://www.fivestardev.com/2009/07/20/five-star-and-ahs-launch-andre-bluemel-meadow-web-site#comments</comments>
		<pubDate>Mon, 20 Jul 2009 20:07:57 +0000</pubDate>
		<dc:creator>Nicole Gagliardi</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[American Horticultural Society]]></category>
		<category><![CDATA[André Bluemel Meadow]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.fivestardev.com/?p=1861</guid>
		<description><![CDATA[It is UP!
Super Awesome!  I love it, thank you so much,
James
I received the email above last Thursday from James Gagliardi, River Farms Horticulturalist, to inform me that the André Bluemel Meadow web site launched.
River Farms, a 25 acre property in Alexandria, VA, once owned by George Washington, currently serves as the headquarters for the American [...]]]></description>
			<content:encoded><![CDATA[<p><em>It is UP!<br />
Super Awesome!  I love it, thank you so much,<br />
James</em></p>
<p>I received the email above last Thursday from James Gagliardi, River Farms Horticulturalist, to inform me that the <a href="http://www.ahs.org/meadow/" target="_blank">André Bluemel Meadow web site</a> launched.</p>
<p>River Farms, a 25 acre property in Alexandria, VA, once owned by George Washington, currently serves as the headquarters for the <a href="http://www.ahs.org" target="_blank">American Horticultural Society</a>. The André Bluemel Meadow is a 4-acre sustainable meadow planted to replace a vast expanse of lawn.</p>
<p>As the River Farms Horticulturalist, James is primarily responsible for the care of the grounds, including the meadow. A few months ago James called and asked for my help developing an interactive web site for the meadow to promote it, involve the community, and garner support for an initiative to redevelop the entire AHS web site.</p>
<p>Since the current AHS hosting plan did not provide PHP support and there was no budget for the project, Five Star generously offered to host the site and allowed me to donate my time to the project. I built the site using WordPress as a content management system because it offers a solution the AHS can reuse and build upon when redeveloping their site.</p>
<p>To help James create the plant list for the Meadow Plants page more easily, I built a Plant Manager plugin (pictured below) which gives hima wizard to use. To add interactivity, we included a Flickr slideshow so that visitors may upload their own pictures to a Meadow Wildlife page where visitors may leave comments about the wildlife they spot in the meadow. Both interactive pages allow nature lovers to share their experience and help promote the meadows purpose, showing that a meadow can be a beautiful, sustainable alternative to traditional lawns, supporting it&#8217;s own ecosystem.</p>
<div class="mceTemp">
<dl id="attachment_1887" class="wp-caption alignnone" style="width: 510px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-1887" title="plant-list-manager1" src="http://www.fivestardev.com/wp-content/uploads/2009/07/plant-list-manager1.gif" alt="Plant List Manager Screenshot" width="500" height="279" /></dt>
</dl>
</div>
<p>If you are in the Washington D.C. area I recommend visiting River Farms to enjoy a view of the Potomac and a nature walk in the meadow. When you get home make sure to share your photos and tell us what wildlife you saw!</p>
<p>Oh, and one more thing, if you have noticed this developer and James share a last name I&#8217;ll answer your question&#8230; yes we are related; he is my brother. Despite James&#8217; penchant for procrastination and my disposition to work well ahead of deadlines we managed to successfully complete this project together. James and I would like to thank Five Star for the opportunity to work together and create something special for the AHS to help support their mission by relaying the educational message and beauty of the meadow to the 23,000 members of the AHS and the public as a whole.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fivestardev.com/2009/07/20/five-star-and-ahs-launch-andre-bluemel-meadow-web-site/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Porting String.Format to ActionScript</title>
		<link>http://www.fivestardev.com/2009/07/07/porting-stringformat-to-actionscript</link>
		<comments>http://www.fivestardev.com/2009/07/07/porting-stringformat-to-actionscript#comments</comments>
		<pubDate>Tue, 07 Jul 2009 19:06:20 +0000</pubDate>
		<dc:creator>Doug DiFilippo</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[String Format]]></category>
		<category><![CDATA[utility functions]]></category>

		<guid isPermaLink="false">http://www.fivestardev.com/?p=1839</guid>
		<description><![CDATA[One of my favorite methods in the .NET framework is the string class’s Format method. If you are unfamiliar, you can read more about it here: http://msdn.microsoft.com/en-us/library/aa331875.aspx. The .NET implementation contains numerous formatting options; however, I am only interested in the basic idea of replacing format items in a string with actual values passed to [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">One of my favorite methods in the .NET framework is the string class’s Format method. If you are unfamiliar, you can read more about it here:<span style="#008000;"> </span><a title="msdn string.Format" href="http://msdn.microsoft.com/en-us/library/aa331875.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/aa331875.aspx</a>. The .NET implementation contains numerous formatting options; however, I am only interested in the basic idea of replacing format items in a string with actual values passed to the function. This reduces the need for complex concatenations, which makes code more readable.</p>
<p class="MsoNormal">The ActionScript version I’ve implemented works in much the same way as its .NET counterpart. The first argument is a format string containing format items. For example, to display the current date<span class="msoIns"><ins datetime="09" cite="mailto:amccracken">,</ins></span> we may set up the following format string, “Today is {0}.” Then, we pass an array of objects to use as replacements for the format items. In our example, we would pass a new array literal with one item, [ new Date().toDateString() ]. So our entire call would look like the following:</p>
<pre>// display today's date in the text field txtDate
txtDate.Text = StringUtils.Format( "Today is {0}." , [ new  Date().toDateString() ] );</pre>
<p class="MsoNormal">The function will return a new string that has the {0} format item replaced with the evaluated value from the Date object. It is important to note that ALL instances of {0} will be replaced, not just the first occurrence. So the function itself is very simple, but can dramatically improve the readability of code.</p>
<p class="MsoNormal">I have provided the source below and a link to download StringUtils.as, which has the necessary Replace function as well. The only note I would make about the code is the use of toString() on each object in the array passed to the function. This allows calling code to pass arrays containing any type of object and omit calling toString() on each instance (provided the toString() implementation is acceptable). Hopefully you find this as useful as I have!</p>
<p class="MsoNormal">Source:</p>
<pre>public static function Format( formatString:String , args:Array ) : String
{
   var result:String = formatString;</pre>
<pre>   for (var i:int = 0; i &lt; args.length; i++)
   {
      result = Replace(result, "{" + i + "}" , args[i].toString() );
   }
   return result;
}</pre>
<p class="MsoNormal"><a href="http://www.fivestardev.com/wp-content/uploads/2009/07/source.zip" target="_blank">Download Source Files</a><a href="http://www.fivestardev.com/wp-content/uploads/2009/07/source.zip" target="_blank"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fivestardev.com/2009/07/07/porting-stringformat-to-actionscript/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Controlling a Captivate Movie in Flash</title>
		<link>http://www.fivestardev.com/2009/07/01/controlling-a-captivate-movie-in-flash</link>
		<comments>http://www.fivestardev.com/2009/07/01/controlling-a-captivate-movie-in-flash#comments</comments>
		<pubDate>Wed, 01 Jul 2009 19:18:12 +0000</pubDate>
		<dc:creator>Nicole Gagliardi</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Captivate]]></category>

		<guid isPermaLink="false">http://www.fivestardev.com/?p=1831</guid>
		<description><![CDATA[Many of our eLearning projects involve importing Captivate files into another Flash file, which usually serves as a wrapper file for the course that contains navigation. Recently I went looking for a way to better control the Captivate files from our custom Flash file and found a great list of Captivate 3 variables for playback [...]]]></description>
			<content:encoded><![CDATA[<p>Many of our eLearning projects involve importing Captivate files into another Flash file, which usually serves as a wrapper file for the course that contains navigation. Recently I went looking for a way to better control the Captivate files from our custom Flash file and found a great list of Captivate 3 variables for playback control which I&#8217;ve copied below. This list can also be found in the <a href="http://help.adobe.com/en_US/Captivate/3.0/help.html?content=09_timing_11.html" target="_blank">Captivate 3 Live Docs</a>.</p>
<p><strong>rdcmndPrevious = 1</strong>: Go to previous slide.<br />
<strong>rdcmndNextSlide = 1:</strong> Go to next slide.<br />
<strong>rdcmndPause = 1</strong>: Pause the project.<br />
<strong>rdcmndResume = 1</strong>: Resume showing a paused project.<br />
<strong>rdcmndRewindAndStop = 1</strong>: Rewind and stop the project.<br />
<strong>rdcmndRewindAndPlay = 1</strong>: Rewind and play the project.<br />
<strong>rdcmndGotoFrame</strong>: Go to a specific frame.<br />
<strong>rdcmndExit = 1</strong>: Exit.<br />
<strong>rdcmndInfo</strong>: Display the information window (in Captivate 2 this variable is rdcmdInfodisplay).<br />
<strong>rdinfoFrameCount</strong>: Total number of frames in the project (this is not the number of frames in the main Timeline, but the sum of all slide frames)<br />
<strong>rdinfoSlidesInProject</strong>: Number of slides in the project (including hidden slides)<br />
<strong>rdinfoCurrentFrame</strong>: Current frame<br />
<strong>rdinfoCurrentSlide</strong>: Slide currently playing (zero based)<br />
<strong>rdinfoSlideCount</strong>: Number of slides in the project (not including hidden slides)<br />
<strong>rdIsMainMovie</strong>: Can be used to identify whether the SWF corresponds to the main Adobe Captivate project</p>
<p>According to Matt Maxwell&#8217;s blog post <a href="http://mattsflashjournal.blogspot.com/2007/07/controlling-imported-captivate-movie.html">&#8220;Controlling an Imported Captivate Movie&#8221;</a> there are three additional variables not published in the Adobe Captivate Live Docs, and those three are listed below.</p>
<p><strong>rdcmndHidePlaybar</strong>: Used to hide or show the playbar 1= hide 0=show<br />
<strong>rdcmndCC</strong>: Used to show or hide Closed Captions 1= show 0=hide<br />
<strong>rdcmndMute</strong>: Used to mute or unmute the audio 1= mute 0=unmute</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fivestardev.com/2009/07/01/controlling-a-captivate-movie-in-flash/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
