<?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>Boxes and Arrows &#187; Alexa Andrzejewski</title>
	<atom:link href="http://boxesandarrows.com/author/andrzejewski/feed/" rel="self" type="application/rss+xml" />
	<link>http://boxesandarrows.com</link>
	<description>Boxes and Arrows is devoted to the practice, innovation, and discussion of design; including graphic design, interaction design, information architecture and the design of business.</description>
	<lastBuildDate>Tue, 21 May 2013 13:57:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Quick and Easy Flash Prototypes</title>
		<link>http://boxesandarrows.com/quick-and-easy-flash-prototypes/</link>
		<comments>http://boxesandarrows.com/quick-and-easy-flash-prototypes/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 08:35:49 +0000</pubDate>
		<dc:creator>Alexa Andrzejewski</dc:creator>
				<category><![CDATA[Deliverables]]></category>
		<category><![CDATA[Discovery, Research, and Testing]]></category>
		<category><![CDATA[Interactivity]]></category>
		<category><![CDATA[Special topic: Prototyping]]></category>

		<guid isPermaLink="false">http://boxesandarrows.com/quick-and-easy-flash-prototypes/</guid>
		<description><![CDATA[Alexa Andrzejewski shares her quick yet powerful way for translating static screen designs (from wireframes to visual comps) into interactive prototypes using Flash. Only fairly basic ActionScript knowledge required.
]]></description>
				<content:encoded><![CDATA[<div style="margin: 12pt 0in;">
<p><font size="2"><i>To tackle the classic &ldquo;how to prototype rich interactions&rdquo; problem, I developed a process for translating static screen designs (from wireframes to visual comps) into interactive experiences using Flash. Requiring some fairly basic ActionScript knowledge, these prototypes proved to be a quick yet powerful way to bring interaction designs to life.</i></font></p>
<p><font size="2">When asked if I could find a quick and easy way to prototype a web application my project team had wireframed in Visio, I first turned to <span class="caps">PDF</span> prototyping. Using a <span class="caps">PDF</span> of the wireframes as the base, I overlaid clickable elements and some interactive data entry fields. Everything was wonderful&mdash;until the client asked us to add color to the wireframes. The Visio document was updated, a new <span class="caps">PDF</span> had to be made&hellip; and all that interactivity had to be reapplied. (It is <u><a href="http://www.boxesandarrows.com/view/pdf-prototypes#content_12666">tedious and time-consuming</a></u> </font><font size="2">to replace page content in a <span class="caps">PDF</span>.)</font></p>
<p><font size="2">Not wanting to repeat this tedious process again and again, I turned to Flash. I was excited to find that Flash not only felt more streamlined and intuitive when creating basic click-throughs, but it also offered almost limitless potential for prototyping rich interactions. With some basic ActionScript (a scripting language used in Flash to define interactions) knowledge and a bit of resourcefulness, I was able to create functional combo box navigations, type-ahead mechanisms, and eventually a complex, drag-and-drop scheduling application similar to Google Calendar. And whenever the screen designs changed, all I had to do was import the new background images, while the interactivity layers stayed happily in place, requiring only minimal tweaking. </font></p>
</div>
<h2>Quick and easy yet powerful and flexible</h2>
<div><font size="2">The idea of working with Flash may seem daunting, but the effort required to create a basic click-through is comparable to that required by other applications, while the flexibility and potential for extending the prototype is far greater. (After all, Flash was designed for creating interactive applications, not presentations [like PowerPoint], diagrams [like Visio] or portable documents [like Acrobat].) Considering the additional benefits it offers, Flash prototyping is well-worth adding to your interaction design toolkit:</p>
<ul type="disc">
<li>Flash prototyping allows you to add interactivity to screen designs and wireframes you&rsquo;ve already created. You don&rsquo;t have to recreate the layouts in another application.</li>
<li><font size="2">Flash allows screen images to be updated without losing your interactive layers, which is much more difficult in <span class="caps"><span class="caps">PDF</span></span> prototyping, as I described above.</font></li>
<li><font size="2">Flash includes a robust library of customizable user interface components that can be dropped into your prototype and used as they are to add realism (e.g., a text field you can actually type in) or programmed using ActionScript to serve as fully-functional interface controls.</font></li>
<li><font size="2">You can export prototypes as stand-alone applications (suitable for running from a thumb-drive at an on-site usability test where the Flash plugin may be blocked) or as <span class="caps"><span class="caps">HTML</span></span> pages with embedded Flash (in which the browser can be used to scroll up and down through tall prototypes).</font></li>
<li><font size="2">You don&rsquo;t have to hire a professional Flash developer to achieve all of this. (I&rsquo;m certainly not a Flash expert.) You can create simple, yet believable, prototypes with very little knowledge of ActionScript. All it takes is resourcefulness, creativity, and experimentation.</font></li>
</ul>
<p></font></div>
<h2>A valuable tool and impressive deliverable</h2>
<div><font size="2">Flash prototypes can be both a valuable tool for project teams and an impressive deliverable for clients. At the consultancy where I first employed Flash prototyping, these prototypes quickly became an invaluable part of the design, testing and buy-in process for many projects, and clients loved them. Here&rsquo;s why:</font></div>
<div style="margin: 0 0 0 3em"><font size="2">By <i>experiencing the interactions we were proposing</i>, we were able to quickly sense when something that seemed good on paper didn&rsquo;t feel right in reality.</font></div>
<div style="margin: 6pt 0 0 3em"><font size="2">By <i>testing realistic prototypes,</i> which users perceived to fully-functional, we were able to collect accurate user feedback about how novel interactions (such as a type-ahead search) felt and functioned in a real context.</font></div>
<div style="margin: 6pt 0 0 3em"><font size="2">By <i>providing clients with functional demos</i>, we were able to see our concepts move towards reality as clients enthusiastically used them to rally organizational support for concepts. </font></div>
<div><font size="2">Having learned a lot through trial and error in creating these prototypes, I&rsquo;d now like to share the process I developed through a step-by-step tutorial.</font></div>
<h2>How to use this tutorial</h2>
<div><font size="2">In this tutorial, you&rsquo;ll be creating a practice prototype using static screen images from Facebook that I&rsquo;ve annotated using Visio. You should be able to complete it in 1 hour or less. To see what you&rsquo;ll be creating, you can try out the final prototype files:</font></div>
<div style="margin-left: 3em"><font size="2"><u><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/Andrzejewski_Prototype_Mac.app.zip">Download Flash Prototype for Mac (Andrzejewski_Prototype_Mac.app)</a><br />
<a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/Andrzejewski_Prototype_PC.exe"> Download Flash Prototype for Windows (Andrzejewski_Prototype_Windows.exe)</a></u></font></div>
<div style="margin: 3pt 0in 0pt;"><font size="2">You&rsquo;ll also want to download the files needed to complete this tutorial:</font></div>
<div style="margin: 3pt 0in; text-indent: 0.25in;"><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/Andrzejewski_SourceFiles.zip"><font size="2"><u>Download Source Files (Andrzejewski_SourceFiles.zip)</u></font></a></div>
<div style="margin: 3pt 0in;"><font size="2">If you don&rsquo;t have <strong>Flash CS3 or higher</strong>, you can download a 30-day, fully-functional trial from:</font></div>
<div style="margin: 0pt 0in 3pt; text-indent: 0.25in;"><a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash"><font size="2"><u>https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash</u></font></a></div>
<div style="margin: 3pt 0in 12pt;"><font size="2">The major steps of this tutorial are in bold. If you have some Flash experience, you may be able to complete the tutorial using the bold steps and the annotations on the screens. For those who are new to Flash, I&rsquo;ve provided detailed sub-steps and definitions.</font></div>
<h2>Table of Tutorial Steps</h2>
<div style="margin: 3pt 0in 12pt 40px;"><a href="#1"><u>1. Create a new prototype template</u></a><br />
<a href="#2"><u>2. Import images</u></a><br />
<a href="#3"><u>3. Label layers</u></a><br />
<a href="#4"><u>4. Create new layer</u></a><br />
<a href="#5"><u>5. Create reusable button</u></a><br />
<a href="#6"><u>6. Create layer for interactive elements</u></a><br />
<a href="#7"><u>7. Create basic click-through</u></a><br />
<a href="#8"><u>8. Add a conditional button</u></a><br />
<a href="#9"><u>9. Create an invisible button</u></a><br />
<a href="#10"><u>10. Test your prototype</u></a><br />
<a href="#11"><u>11-17. Export your prototype</u></a></div>
<h2>Preparing screen designs for prototyping</h2>
<div style="margin: 0pt 0in 6pt;"><font size="2"></p>
<p>To prepare for Flash prototyping, you&rsquo;ll need to have images showing each possible screen and state in the scenarios you want to demonstrate. Often, you&rsquo;ll have already created many of these screen designs in the wireframing phase of your project. The fidelity of these images may range from wireframes to visual design comps, depending on your prototyping needs. It doesn&rsquo;t matter what software you use to create your images (e.g., Visio, Illustrator, Photoshop, etc.), as long as you can export them as raster images (e.g., <span class="caps">GIF</span>, <span class="caps">PNG</span>, <span class="caps">JPG</span>).</p>
<p>While images have already been prepared for you in this tutorial, here are some helpful tips for creating and exporting screen designs for use in Flash:</p>
<p></font></div>
<h3><strong>Creating the screens</strong></h3>
<div style="margin: 0pt 0in 6pt;"><font size="2"></p>
<p><strong>Create neat layouts</strong> using grids and guides to keep items aligned from page to page to prevent inappropriate jumpiness (if only part of a page is supposed to be changing, such as when a menu appears, and the entire page shifts a little, it will detract from the prototype&rsquo;s realism). Test page-to-page alignment by viewing images full-screen.</p>
<p><b>Ensure that images are all the exact same size</b> by using a common background image or canvas size for all screens. In Visio and other page layout applications, you must be sure to remove or hide anything that protrudes outside of this background before exporting. Placing annotations that don&rsquo;t belong in the prototype and anything else that will exist outside of the content area (page titles, footers) on a separate layer allows them to hidden before exporting the images.</p>
<p></font></div>
<h3><strong>Planning interactivity</strong></h3>
<div style="margin: 0pt 0in 12pt;"><font size="2"></p>
<p><strong>Add a unique identifier</strong> to each screen or page that, unlike the page numbering (if you&rsquo;re using a page layout program), will not change. You&rsquo;ll be saving each screen as a file named after this identifier (e.g., &ldquo;W05.png&rdquo;). Using these identifiers, if your page ordering changes or you add or delete pages, you&rsquo;ll still know which page corresponds with which exported image later.</p>
<p><b>Mark up the screens with callouts</b> explaining everything that should be interactive and what should happen when elements are interacted with. For a basic click-through, most of these callouts will point to an element and read, &ldquo;Go to X&rdquo; (where X is the target page identifier). Make sure these callouts don&rsquo;t extend outside of the image area. These callouts will make the Flash work much easier, and the callout version of the prototype makes a useful &ldquo;practice prototype&rdquo; that can help future users learn how to navigate the prototype. You&rsquo;ll re-export the images and create a version of the prototype without callouts later.</p>
<p></font></div>
<h3><strong>Saving or exporting images</strong></h3>
<div style="margin: 6pt 0in 12pt;"><font size="2"><strong>Save or export each screen as an image that will fit on a screen without scaling </strong>(preferably a lossless file such as <span class="caps"><span class="caps">GIF</span></span> or <span class="caps"><span class="caps">PNG</span></span>) using the page identifier as the filename. If you&rsquo;re using vector-based software (like Visio), make sure the resolution of the exported files is set so that the resulting images will fit on the screen without scaling or scrolling. If your screen dimensions are 1024&times;768 points, for example, and you want the resulting images to be 1024&times;768 pixels, you would need to set the export resolution to 72&times;72 pixels/in.</font></div>
<h2><font size="5">Welcome to Flash</font></h2>
<div style="margin: 12pt 0in 6pt; text-align: center;"><font size="2"><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img001.png"><img width="500" height="313" title="" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img001.gif" /></a> </font></div>
<div style="margin: 0pt 0in;"><font size="2"><i>Note: If you don&rsquo;t see some of these panels, use the Window menu to locate and turn them on.</i></font></div>
<div style="margin: 6pt 0in;"><font size="2">You&rsquo;ll be introduced to each of these elements and to key principles of ActionScript as you work through this tutorial. In the Appendices at the end of this document, you&rsquo;ll find a handy reference guide and summary of everything you&rsquo;ll have learned about Flash and ActionScript.</font></div>
<h2>Setting up the Flash document</h2>
<div style="margin: 0pt 0in;"><font size="2">The images needed to complete this tutorial from scratch can be found in the SourceImagesAnnotated folder of this zip file:</font></div>
<div style="margin: 0pt 0in 0pt 0.25in;"><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/Andrzejewski_SourceFiles.zip"><u><font size="2">Download Source Files (Andrzejewski_SourceFiles.zip)</font></u></a></div>
<div style="margin-top: 0pt; margin-right: 0in; margin-bottom: 0pt;">While setting up the Flash document may feel tedious, what&rsquo;s exciting about Flash prototyping is that after you&rsquo;ve set up a document once, you can save your work as a template for future prototypes so that you don&rsquo;t have to start from scratch. All you&rsquo;d have to do to start a new prototype is import a new set of images with the same filenames and add or remove keyframes as needed depending on the number of screens.</div>
<div style="margin-top: 0pt; margin-right: 0in; margin-bottom: 0pt;"><b>If you&rsquo;re already familiar with Flash basics and would like to skip to creating interactions</b>, you can download an already-set-up template and begin working through the tutorial from the &ldquo;Basic principles of interaction&rdquo; section.</div>
<div style="margin: 0pt 0in 12px;"><font size="2"> </font></div>
<h3><strong>Creating a new prototype template</strong></h3>
<div style="margin: 12pt 0in 0pt; text-indent: 0in;"><strong><font size="2"><span>1<a name="1">. </a></span>Create a new Flash document that uses ActionScript 2.0 and has a 1024px by 768px stage.</font></strong></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2">1.1.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Open Flash and create a new Flash File (ActionScript 2.0).</font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><b><font size="2"></p>
<p><em>ActionScript 2.0 vs. ActionScript 3.0 </em></p>
<p></font></b></p>
<p><em>The latest version of ActionScript is ActionScript 3.0, a much more sophisticated but unfortunately a little harder to comprehend rendition of the language. Because <span class="caps">AS 2</span>.0 is a little more direct and intuitive (you can add scripts directly to buttons and objects), I recommend starting there. In fact, if you&rsquo;re only using Flash for simple applications (like most prototypes will be), <span class="caps">AS 2</span>.0 is all you really need. If you eventually want to catch up with the <span class="caps">AS 3</span>.0 trend, understanding <span class="caps">AS 2</span>.0 first can help you make the conceptual leap to <span class="caps">AS 3</span>.0.</em></p>
<p><em>When working in ActionScript 2.0, you&rsquo;ll want to make sure that tutorials and scripts you find online and in books are compatible. Look for tutorials written for Flash <span class="caps">MX 2004</span>, Flash 8, or Flash <span class="caps">CS3</span> using ActionScript 2.0.</em></p>
</div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2">1.2.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">To define the size of the stage, in the Properties Panel, click the button next to &quot;Size&quot; that shows its current dimensions. Change the dimensions to the size, in pixels, of your exported screen designs&mdash;1024px by 768px in this tutorial. Press &quot;OK.&rdquo;</font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><b>The Stage </b>is your visual workspace or canvas. This is where you&rsquo;ll specify <b>where</b> objects appear. Objects in the grey area outside the stage will not be visible when the exported flash movie is viewed at the correct size.</font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img002.png"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img002.gif" alt="" title="" /></font></a></div>
<div style="margin: 12pt 0in; text-indent: 0in;"><strong><font size="2"><span>2<a name="2">. </a></span>Import the images to keyframes by using Import to Stage and selecting the first file in the sequence. Flash will automatically prompt you to import the rest of the files and place each image on its own keyframe.</font></strong></div>
<div style="margin: 6pt 0in 6pt 0.75in;"><span><font size="2">2.1.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">From the File menu, go to File &gt; Import &gt; Import to Stage. Browse to the folder where your images are located and select only the first image in the series&mdash;&ldquo;W01.png.&rdquo; Click &quot;Import.&quot;</font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img003.png"><font size="2"><img width="500" height="313" title="" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img003.gif" /></font></a></div>
<div style="margin: 6pt 0in 6pt 0.75in;"><span><font size="2">2.2.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">A dialog will appear asking if you want to import all of the images in the sequence. Click &ldquo;Yes.&rdquo; All of the images will be imported to your Library and automatically placed on separate keyframes in the timeline.</font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img005.png"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img005.gif" alt="" title="" /></font></a></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in 12pt;">
<p><font size="2"><em><b>The Timeline</b> is where you define <b>when</b> objects appear or disappear from the stage. The timeline contains <b>frames</b> and <b>keyframes</b> which can be on multiple, independent <b>layers</b>. The layers in Flash work in an identical fashion to layers in Photoshop.</em></font></p>
<p><font size="2"><em><em><b>Frames</b> are displayed as blocks. They are grey when they contain content and white when they are empty. </em></em></font></p>
<p><font size="2"><em><em><b>Keyframes</b> are frames marked with circles or dots. A keyframe is a frame where a change can occur without affecting the previous frames. Changes made on keyframes persist until the next keyframe unless &ldquo;tweening&rdquo; is used to fill in the blanks. You can also add commands (ActionScript) to keyframes, which will be executed when the player reaches that frame.</em></em></font></p>
</div>
</div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2">2.3.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Note that when you click to select one of the screen images, you&rsquo;ll notice that the properties of this image are shown in the Properties Panel, including its X and Y position on the stage (measured from the upper-left corner by default). The X and Y positions should both be &ldquo;0&rdquo; by default. If you ever move one of the images out of place accidentally, you can use the Properties Panel to place it back in the upper-right corner by re-entering &ldquo;0,0&rdquo; as its position.</font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><b>The Properties Panel</b> is context-sensitive&mdash;it shows/allows you to set properties for the last frame or instance that you selected. It is shown at the bottom of the Flash interface.</font></em></div>
</div>
<div style="margin: 12pt 0in; text-indent: 0in;"><strong><font size="2"><span>3<a name="3">. </a></span>Name the current layer, &ldquo;Wireframes.&rdquo; Label each keyframe using the image&rsquo;s identifier. Insert four frames between every keyframe to make these labels visible.</font></strong></div>
<div style="margin: 6pt 0in 6pt 0.75in;"><span><font size="2">3.1.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">In the Layers area at the top of the workspace, double-click on the words, &quot;Layer 1&quot; and type &quot;Wireframes.&quot; Press Enter to commit the change.</font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img006.png"><font size="2"><img width="500" height="313" title="" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img006.gif" /></font></a></em></div>
<div style="margin: 6pt 0in 6pt 0.75in;"><span><font size="2">3.2.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Click on the first keyframe to highlight it.</font></div>
<div style="margin: 0pt 0in 6pt 0.75in;"><span><font size="2">3.3.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Press F5 four times to insert four frames after this keyframe.</font></div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2">3.4.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">With the first keyframe still selected, in the Properties Panel, change &ldquo;&rdquo; to the image&rsquo;s identifier, &ldquo;W01&rdquo; (remember, ActionScript is case sensitive).</font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 6pt 0in;"><em><font size="2"><b>Frame Labels</b> can be assigned to keyframes so that they can be referred to using ActionScript. It is generally better to refer to frame <b>labels</b> in ActionScript than to frame <b>numbers</b> because frame numbers are subject to change as you add or remove frames.</font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img007.png"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img007.gif" alt="" title="" /></font></a></em></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2">3.5.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Click on the second keyframe to highlight it. Insert four frames after it and label it &ldquo;W02.&rdquo; Repeat for the remaining keyframes, including the final one. This part may seem a little tedious, but you should not have to repeat it again unless you insert additional screens. You&rsquo;ll be able to update these images without recreating the keyframes and labels in the future.</font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><b>The Properties Panel</b> is where you can assign frame labels to frames and instance names to instances.</font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img008.png"><font size="2"><img width="500" height="313" title="" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img008.gif" /></font></a></em></div>
<div style="margin: 6pt 0in; text-indent: 0in;"><strong><font size="2"><span>4<a name="4">. </a></span>Create a new layer called, &ldquo;Frame Actions.&rdquo; Make sure the Flash movie does not automatically play by adding a &ldquo;stop();&rdquo; action to the first frame. </font></strong></div>
<div style="margin: 0pt 0in 0pt 0.75in;"><span><font size="2">4.1.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Right-click or Ctrl+click (Mac) on the first layer&rsquo;s name and choose &ldquo;Insert Layer.&rdquo;</font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img009.png"><font size="2"><img width="500" height="313" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img009.gif" /></font></a></em></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2">4.2.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Rename the new layer, &ldquo;Frame Actions.&rdquo;</font></div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2">4.3.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Select the first keyframe in this new layer.</font></div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2">4.4.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Go to Window &gt; Actions to turn on the Actions Panel.</font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><b>The Actions Panel</b> is context-sensitive&mdash;it shows/allows you to add scripts to the last frame or instance that you selected. Look at the tab name near the bottom of the Actions Panel to verify what you are adding actions to.</font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2">4.5.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">With the first keyframe selected, type the following in the Actions Panel:<br />
<span style="color: rgb(255, 102, 0);">stop();</span> <br />
Notice that a small &ldquo;a&quot; appears in the middle of the keyframe to indicate that actions will be triggered when that frame plays.</font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img010.png"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img010.gif" alt="" title="" /></font></a></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in 12pt;"><font size="2"></p>
<p><em><b>ActionScript</b> is case sensitive.</em></p>
<p><em><b>Semicolons </b>should be used at the end of every statement (generally every line).</em></p>
<p><em><b>Frame Actions </b>are attached to keyframes and are triggered when that frame is reached. </em></p>
<p><em><b>Functions</b> are built-in actions that you can call on using keywords. These commands are keywords followed by parentheses in which specific details can be added if necessary.</em></p>
<p></font></div>
</div>
<h3><strong>Creating a reusable button</strong></h3>
<div style="margin: 6pt 0in; text-indent: 0in;"><strong><font size="2"><span>5<a name="5">. </a></span>Create a button symbol. Make the button invisible&mdash;an invisible button is clickable but does not display anything on the stage when the Flash file is compiled: It has a clickable area (a &ldquo;Hit&rdquo; state) but no visible states (Up, Over, and Down are all blank). This button should be a rectangle and the size of an average clickable area in your prototype. You&rsquo;ll be able to resize instances of this button as needed. You will be using this button overlay to simulate most interactions.</font></strong></div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2">5.1.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Go to &ldquo;Insert &gt; New Symbol&hellip;&rdquo;</font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 12pt 0in;"><em><em><font size="2"><b>Symbols</b> are objects that can be used and reused. They are similar to Shapes in Visio and Stencils in Omnigraffle. Symbols include imported content, <b>Movie Clips</b> (objects that can have their own, independent timelines), <b>Buttons</b> (special movie clips with four frames in which four possible button states can be created), and <b>Graphics</b> (objects that may contain drawings and/or imported images).</font></em></em></div>
</div>
<div style="margin: 12pt 0in 0pt 0.75in;"><span><font size="2">5.2.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">In the dialog that appears, name it &quot;invisibleButton&quot; and choose the type &quot;Button.&quot;</font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img022.png"><font size="2"><img width="500" height="313" title="" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img022.gif" /></font></a></em></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2">5.3.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Notice in the Edit Bar that you are now editing &ldquo;invisibleButton.&rdquo; This button&rsquo;s &ldquo;timeline&rdquo; consists of four labeled frames. Each frame represents a unique button state. Typically, you would draw what the button looks like normally in the &ldquo;Up&rdquo; frame, you&rsquo;d draw the rollover state in the &ldquo;Over&rdquo; frame, and you&rsquo;d draw the pressed state in the &ldquo;Down&rdquo; frame. &ldquo;Hit&rdquo; is an invisible state used to designate the clickable area of a button. Since you want your button to be invisible, you will only be creating the &ldquo;Hit&rdquo; state. Right-click or Ctrl+click (Mac) on the frame labeled, &ldquo;Hit&rdquo; and choose &ldquo;Insert Keyframe.&rdquo;</font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 12pt 0in;"><em><em><font size="2"><b>The Edit Bar (Navigation Area)</b> indicates which timeline you are currently viewing. In this tutorial, you will generally be working on the main timeline, labeled &ldquo;Scene 1&rdquo; by default, but you will eventually be creating objects that have their own, independent timelines. These objects can be nested inside of each other. When you are inside an object&rsquo;s timeline, a breadcrumb trail will indicate where you are in the grand scheme of things, e.g., Scene 1 &gt; CarObject &gt; WheelObject.</font></em></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img011.png"><font size="2"><img width="500" height="313" title="" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img011.gif" /></font></a></em></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2">5.4.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></span><font size="2">Using the Rectangle Tool and Fill Color picker if necessary, draw a solid-colored box on this keyframe. The color does not matter, as it will not be visible. It also doesn&rsquo;t matter exactly what shape and size it is&mdash;you&rsquo;ll be resizing each instance as needed. Just make it the size of a typical button in your prototype.</font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><em><font size="2"><b>The Tools Bar</b> contains tools you can use to create and manipulate graphics and objects on the stage.</font></em></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><font size="2"><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img012a.png"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img012a.gif" alt="" title="" /></a><br />
</font></em></div>
<div style="margin: 6pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">5.5.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">In the Edit Bar, click the Back Arrow or &quot;Scene 1&quot; to go back to the main movie.</font></font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img013.png"><font size="2"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img013.gif" alt="" title="" /></font></font></a></em></div>
<div style="margin: 6pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">5.6.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Your &quot;invisibleButton&quot; symbol should appear in the Library Panel.</font></font></div>
<h3><strong>Creating a layer for interactive elements</strong></h3>
<div style="margin: 12pt 0in 0pt; text-indent: 0in;"><font size="2"><strong><font size="2"><span>6<a name="6">. </a></span>Add another layer to your movie, called &ldquo;Interaction,&rdquo; for buttons and controls. In this layer, insert one keyframe per screen.</font></strong></font></div>
<div style="margin: 0pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">6.1.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Right-click or Ctrl+click (Mac) on the &ldquo;Wireframes&rdquo; layer&rsquo;s name and choose &ldquo;Insert Layer.&rdquo;</font></font></div>
<div style="margin: 0pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">6.2.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Rename the new layer, &ldquo;Interaction.&rdquo;</font></font></div>
<div style="margin: 0pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">6.3.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Lock the &ldquo;Wireframes&rdquo; layer by clicking in the padlock icon column to prevent accidental changes.</font></font></div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">6.4.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Right-click or Ctrl+click (MAC) on the frame above the keyframe labeled, &ldquo;W02&rdquo; and choose &ldquo;Insert Keyframe.&rdquo; Repeat, inserting a keyframe in this layer above every labeled keyframe.</font></font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img014.png"><font size="2"><font size="2"><img width="500" height="313" title="" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img014.gif" /></font></font></a></em></div>
<h2>Basic principles of interactivity</h2>
<div style="margin: 0pt 0in;"><font size="2"><font size="2">I&rsquo;ve provided a Flash file in which all the steps to this point have been completed so that you can experiment with the more interesting aspects of Flash prototyping. If you&rsquo;d like to start the tutorial from this point, open the file called FlashPrototype_Template.fla from this zip file:</font></font></div>
<div style="margin: 0pt 0in 12pt 0.25in;"><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/Andrzejewski_SourceFiles.zip"><font size="2"><font size="2"><u>Download Source Files (Andrzejewski_SourceFiles.zip)</u></font></font></a></div>
<h3><font size="2"><strong>Creating a basic click-through</strong></font></h3>
<div style="margin: 0pt 0in; text-indent: 0in;"><font size="2"><font size="2"><span style="font-weight: normal;">7<a name="7">. </a></span><strong>Place invisible buttons over all the &ldquo;go to X&rdquo; elements in the images (the ones specified using green callouts). Add gotoAndStop(&ldquo;frameLabel); actions to each button, telling Flash to go to the frame label specified in the annotations when that button is released.</strong></font></font></div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">7.1.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Click on the first keyframe of the Interaction layer.</font></font></div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">7.2.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Drag an instance of the invisibleButton onto the stage and drop it over the &ldquo;Edit&rdquo; button in the screen design. It should appear to be a transparent, blue area. You can use the Free Transform Tool (which you can find in the Tools bar) to make it cover just the area that should be clickable.</font></font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img015a.png"><font size="2"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img015a.gif" alt="" title="" /></font></font></a></em></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img015b.png"><font size="2"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img015b.gif" alt="" title="" /></font></font></a></em></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><em><font size="2"><b>Instances</b> are unique occurrences of symbols in your Flash movie. You can drag as many instances of a symbol into your movie as you like. If you update the symbol, all of its instances will be updated as well, however, certain properties (such as scaling and positioning) can be customized on an instance-by-instance basis. Later you&rsquo;ll learn how to name instances so you can refer to them specifically using ActionScript.</font></em></font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">7.3.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Next you are going to make the button interactive. When you add an action to an object (vs. to a keyframe, as you did earlier), it must be contained within an &ldquo;Event Handler&rdquo; so that Flash knows when to execute the action. With the button selected, type this Event Handler in the Actions Panel: </font><span style="color: rgb(255, 102, 0);"><br />
<font size="2">on(release) { <br />
}</font></span></font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><em><font size="2"><b>Event Handlers</b> are used to specify behaviors that trigger actions. Actions contained within an event handler&rsquo;s curly braces will be triggered only when the event preceding them occurs (e.g., when an button is pressed and when it&rsquo;s released). </font></em></font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">7.4.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">All of the actions that should happen when the button is clicked and then released should go within the two curly braces. You&rsquo;re going to use the gotoAndStop(&ldquo;frameLabel&rdquo;) function to tell the prototype to go to the frame labeled &ldquo;W02&rdquo; when the button is clicked and released. <br />
on(release) {                        // When this event occurs&hellip;<br />
</font><font size="2"><span style="color: rgb(255, 102, 0);">           gotoAndStop(&ldquo;W02&rdquo;);     // these actions should be triggered.<br />
</span>}</font></font></div>
<div style="border: 1pt solid silver; padding: 1pt 2pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"></p>
<p><b>Curly braces </b>can be used to group statements.</p>
<p><b>Comments</b> that don&rsquo;t affect the code can be added by preceding comment text with two forward slashes.</p>
<p></font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">7.5.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">To ensure that the main timeline is controlled (vs. the timeline of the button the script is attached to), you can precede gotoAndStop with the name of the timeline you&rsquo;re targeting. The main timeline is referred to as the &ldquo;_root&rdquo; in ActionScript. The final script should read: <br />
on(release) {<br />
<span style="color: rgb(255, 102, 0);">           _root.</span>gotoAndStop(&ldquo;W02&rdquo;);<br />
}</font></font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img016.png"><font size="2"><font size="2"><img width="500" height="313" title="" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img016.gif" /></font></font></a></em></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;">
<p><font size="2"><em><b>Actions are context-sensitive.</b> They act on whichever movie or timeline they are attached to. If actions are placed in the main timeline, they&rsquo;ll act on the main movie. If they&rsquo;re placed on a timeline within an object, they&rsquo;ll only act on that object unless otherwise specified.</em></font></p>
<p><font size="2"><em><b>To target specific timelines and objects</b>, refer explicitly to the main movie as &ldquo;_root&rdquo; and other objects by their assigned &ldquo;Instance Names.&rdquo; If you&rsquo;re unsure which object an action applies to, use explicit targets to ensure your actions will work as intended. You&rsquo;ll learn more about Target Paths later.</em></font></p>
</div>
</div>
<div style="margin: 6pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">7.6.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">If you go to Control &gt; Test Movie (Ctrl+Enter on PC, Apple+Enter on Mac), you should see that the button symbol is invisible, but that you can still click on it to go to frame &ldquo;W02.&rdquo; It gives you the impression that the &ldquo;Edit&rdquo; link is working&mdash;your pointer should change to a hand cursor, and clicking the link should take you to frame &ldquo;W02.&rdquo;</font></font></div>
<div style="margin: 0pt 0in 0pt 0.75in;"><span><font size="2"><font size="2">7.7.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">On keyframes <span class="caps"><span class="caps">W02</span></span> through <span class="caps"><span class="caps">W04</span></span>, wherever you see a green, &ldquo;go to X&rdquo; callout, add an invisible button with the appropriate script. The easiest way to do this is to copy and paste the button you&rsquo;ve already created. This creates a new instance of the button while preserving the script you&rsquo;ve added to it. All you have to do is change the destination frame label.</font></font></div>
<div style="margin: 6pt 0in 0pt 0.75in;"><span><font size="2"><font size="2">7.8.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Test your prototype (Ctrl+Enter on PC, Apple+Enter on Mac). You should be able to follow the trail of green callouts through the first five frames.</font></font></div>
<div style="margin: 0pt 0in 12pt;"><font size="2"></p>
<p>That&rsquo;s all there is to creating a basic click-through using Flash. The prototype at this point should be comparable to what you could create in Visio, PowerPoint or Acrobat.</p>
<p>What makes Flash a worthwhile prototyping tool, however, is that it makes it easy to add realism and &ldquo;smarts&rdquo; to your prototypes. Flash&rsquo;s &ldquo;Components Library&rdquo; offers a robust collection of customizable user interface components that can be dropped into your prototype and used as they are to add realism (e.g., a text field you can actually type in) or programmed using ActionScript to serve as fully-functional interface controls. Using one of these components and some simple ActionScript, you&rsquo;ll next learn how to add basic logic to your prototype.</p>
<p></font></div>
<h3><strong>Adding a conditional button</strong></h3>
<div style="margin: 12pt 0in; text-indent: 0in;"><font size="2"><font size="2">There are many applications for conditional buttons in prototypes, including demonstrating error handling.</font></font></div>
<div style="margin: 0pt 0in 6pt; text-indent: 0in;"><font size="2"><strong><font size="2"><span>8<a name="8">. </a></span>Add a CheckBox component named &ldquo;termsBox&rdquo; to frame &ldquo;W05&rdquo; of the &ldquo;Interaction&rdquo; layer.</font></strong></font></div>
<div style="margin: 0pt 0in 0pt 0.75in;"><span><font size="2"><font size="2">8.1.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Select the keyframe in the &ldquo;Interaction&rdquo; layer above the frame labeled &ldquo;W05.&rdquo;</font></font></div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">8.2.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Open the Components library (Window &gt; Components).</font></font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><em><font size="2"><b>The Components</b> <b>Panel</b> contains a special library of user interface objects, such as radio buttons and combo boxes, and have customizable properties. These properties can be edited in the Parameters tab of the Properties Panel and/or changed using ActionScript.</font></em></font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">8.3.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">In the &ldquo;User Interface&rdquo; folder, you&rsquo;ll find the CheckBox component. Drag it onto the screen and place it over top of the check box in the image.</font></font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img017.png"><font size="2"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img017.gif" alt="" /></font></font></a></em></div>
<div style="margin: 6pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">8.4.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">In the Properties tab, give the Instance Name, &ldquo;termsBox&rdquo; to this checkbox.</font></font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img018.png"><font size="2"><font size="2"><img width="500" height="313" title="" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img018.gif" /></font></font></a></em></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><em><font size="2"><b>An Instance Name</b> can be assigned by selecting an instance and entering a unique name in the Instance Name field in the Properties Panel. Since a symbol in your library can be used in your Flash movie multiple times, each occurrence needs to have a unique name if you want to address it using ActionScript.</font></em></font></em></div>
</div>
<div style="margin: 12pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">8.5.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">With the check box selected, in the Properties Panel, click the Parameters Tab. Select the</font></font><em><font size="2"><font size="2"> </font></font></em><font size="2"><font size="2">&ldquo;Label&rdquo; field in the Parameters Tab and delete the label text.</font></font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img019.png"><font size="2"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img019.gif" alt="" title="" /></font></font></a></em></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><em><font size="2"><b>The Parameters</b> tab of the Properties Panel is where you can edit the special properties of <b>components</b>. Each property is listed on a separate line.</font></em></font></em></div>
</div>
<div style="margin: 12pt 0in; text-indent: 0in;"><font size="2"><strong><font size="2"><span>9<a name="9">. </a></span>Create an invisible button that determines whether the check box is selected or not and sends the prototype to the appropriate screen.</font></strong></font></div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">9.1.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Drag an invisible button over the &quot;Upload Picture&quot; button on frame &ldquo;W05.&rdquo;</font></font></div>
<div style="margin: 0pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">9.2.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2">Select this button, and in the Actions Panel, add an event handler:</font></div>
<div style="margin: 0pt 0in 0pt 0.75in; text-indent: 0in;"><span style="color: rgb(255, 102, 0);"><font size="2"><font size="2">on(release) { <br />
}</font></font></span></div>
<div style="margin: 6pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">9.3.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Within this event handler, you&rsquo;re going to add a conditional statement, an &ldquo;if Statement,&rdquo; to check whether &ldquo;termsBox&rdquo; is selected. The condition contained within the &ldquo;if statement&rdquo; will be tested when the event (on release) occurs. It is constructed as follows:</font></font></div>
<div style="margin: 0pt 0in 0pt 0.75in; text-indent: 0in;"><font size="2"><font size="2">on(release) {</font><span style="color: rgb(255, 102, 0);"><br />
<font size="2">       if(CONDITION) {          // If this condition is met&hellip;<br />
// perform all actions contained within these curly braces.<br />
}<br />
else {                          // Otherwise&hellip;<br />
// do these actions.<br />
}<br />
</font></span><font size="2">}</font></font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><em><font size="2"><b>The If Statement</b> describes a condition that must be met for certain action(s) to be performed. It can optionally be followed by an &ldquo;else&rdquo; statement specifies what to do otherwise. </font></em></font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">9.4.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2">The condition that you&rsquo;re checking for is whether the &ldquo;selected&rdquo; property of &ldquo;termsBox&rdquo; is &ldquo;true.&rdquo; To refer to properties of objects, use the object&rsquo;s target path, followed by the name of the property (for example, _root.termsBox.selected).</font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 0pt 0in;"><em><font size="2"><font size="2"><em><b>Target Paths </b>are like web URLs or file paths, only they use dots (.) instead of slashes to indicate hierarchy. Eventually you&rsquo;ll be using ActionScript to address movies inside of other movies. An easy way to do so is using &ldquo;absolute paths,&rdquo; which indicate the location of an object relative to the main movie (the &ldquo;root&rdquo;) using objects&rsquo; instance names. (For example, to address an object with the instance name &ldquo;spokes,&rdquo; you might write: _root.car.wheels.spokes) You can also use &ldquo;relative paths,&rdquo; which you can learn more about in Flash&rsquo;s documentation.</em></font></font></em></div>
<div style="margin: 0pt 0in;"><em><font size="2"><em><font size="2"><b>Properties</b> of an object are special keywords that Flash recognizes. You can evaluate or change properties of an object using ActionScript. Components, movie clips and other types of objects all have unique properties. You can look up a particular object type&rsquo;s properties and their possible values in Flash&rsquo;s documentation.</font></em></font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">9.5.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">To test whether something is equal to something else, you&rsquo;ll use the &ldquo;equals&rdquo; operator, which consists of two equals signs. Your condition will read:</font></font></div>
<div style="margin: 0pt 0in 0pt 0.75in; text-indent: 0in;"><font size="2"><font size="2">on(release) {<br />
if(<span style="color: rgb(255, 102, 0);">_root.termsBox.selected == true</span>) {  <br />
}<br />
else { <br />
}</font><span style="color: rgb(255, 102, 0);"><br />
</span><font size="2">}</font></font></div>
<div style="border: 1pt solid silver; padding: 1pt 4pt; margin-left: 0.75in; margin-right: 0in;">
<div style="margin: 12pt 0in;"><em><font size="2"><em><font size="2"><b>Operators</b> are used in If Statements to compare one value to another in the format, &ldquo;if(x <span class="caps"><span class="caps">OPERATOR</span></span> y).&rdquo; The most common operators are: <br />
</font></em></font></em><em><font size="2"><em><font size="2">== equals<br />
&gt; is greater than<br />
&lt; is less than<br />
!= is not equal to<br />
&lt;= is less than or equal to<br />
&gt;= is greater than or equal to</font></em></font></em></div>
</div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">9.6.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">The complete script that will be placed on the button, which includes the actions that should happen when the condition is met or not met, is: <br />
on(release) {<br />
if(_root.termsBox.selected  true) {<br />
<span style="color: rgb(255, 102, 0);">            _root.gotoAndStop(&quot;W07&quot;);</span><br />
}<br />
else {<br />
<span style="color: rgb(255, 102, 0);">            _root.gotoAndStop(&quot;W06&quot;);</span><br />
}<br />
}</font></font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img020.png"><font size="2"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img020.gif" alt="" title="" /></font></font></a></em></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><span><font size="2"><font size="2">9.7.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">         </span></font></span><font size="2"><font size="2">Repeat steps 8 and 9 on the next keyframe, &ldquo;W06,&rdquo; only name the checkbox &ldquo;termsBox2&rdquo; and add this script to the button: <br />
</font><font size="2"><span style="color: rgb(255, 102, 0);">on(release) {<br />
if(_root.termsBox2.selected == true) {<br />
_root.gotoAndStop(&quot;W07&quot;);<br />
}<br />
}</span></font></font></div>
<div style="margin: 12pt 0in 12pt 0.75in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img021.png"><font size="2"><font size="2"><img width="500" height="313" title="" alt="" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img021.gif" /></font></font></a></em></div>
<div style="margin: 12pt 0in; text-indent: 0in;"><font size="2"><strong><font size="2"><span>10<a name="10">. </a></span>Test your prototype (Ctrl+Enter on PC, Apple+Enter on Mac). Try selecting the checkbox and clicking the button. Test it again and see what happens when it is not selected. You should be able to complete the entire first part of the prototype.</font></strong></font></div>
<div style="margin: 0pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">10.1.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></font></span><font size="2"><font size="2">If it doesn&rsquo;t seem to work, you may want to: </font></font></div>
<div style="margin: 0pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">10.2.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></font></span><font size="2"><font size="2">Make sure your scripts were attached to the button, <span class="caps"><span class="caps">NOT</span></span> to the checkbox or to the keyframe. </font></font></div>
<div style="margin: 0pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">10.3.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></font></span><font size="2"><font size="2">Check that your syntax is correct (don&rsquo;t forget your {,}, and <img src='http://www-boxesandarrows-com.zippykid.netdna-cdn.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . </font></font></div>
<div style="margin: 0pt 0in 6pt 0.75in;"><span><font size="2"><font size="2">10.4.</font><span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">       </span></font></span><font size="2"><font size="2">Ensure that your buttons point to the correct frame labels. </font></font></div>
<h2>Exporting your prototype</h2>
<div style="margin: 0pt 0in;"><font size="2"><font size="2">If you made it this far, good job! You&rsquo;ve learned some of the fundamentals of Flash and ActionScript and have created a simple, yet smart prototype. All that&rsquo;s left is exporting the prototype as a stand-alone file that can be shared with clients and usability testers. To do this:</font></font></div>
<div style="margin: 0pt 0in; text-indent: 0in;"><font size="2"><strong><font size="2"><span>11<a name="11">. </a></span>Go to File &gt; Publish Settings. Choose &ldquo;Windows Projector&rdquo; or &ldquo;Macintosh Projector&rdquo; (or both), enter a file name, and press &ldquo;Publish&rdquo; to create a standalone, self-executing file of your prototype. It will be created in whatever folder the Flash file is in.</font></strong></font></div>
<div style="margin: 12pt 0in;"><font size="2"><font size="2">While the annotations make the prototype easy to test and navigate, it wouldn&rsquo;t be very challenging for test participants! To make a version of the prototype that is not annotated:</font></font></div>
<div style="margin: 0pt 0in; text-indent: 0in;"><font size="2"><font size="2"><strong><span>12. </span>Remove or hide the annotations in the software you used to create the screens.</strong></font></font></div>
<div style="margin: 12pt 0in; text-indent: 0in;"><font size="2"><font size="2"><strong><span>13. </span>Export or save each of the screens to a new folder using the same file names that you used before. Flash doesn&rsquo;t care what folder an image comes from, if it has the same name, it considers it to be the same image.</strong></font></font></div>
<div style="margin: 0pt 0in; text-indent: 0in;"><font size="2"><font size="2"><strong><span>14. </span>In Flash, use &ldquo;Save As&hellip;&rdquo; to create a new copy of the prototype.</strong></font></font></div>
<div style="margin: 12pt 0in; text-indent: 0in;"><font size="2"><font size="2"><strong><span>15. </span>Go to &ldquo;File &gt; Import &gt; Import to Library&rdquo; and import all of the final images at once (use Ctrl+A or Apple+A to select all). Since the names of these images match the names of the images you imported previously, Flash will ask you whether you want to replace the existing items. Since this is exactly what you want, select &ldquo;Replace existing items&rdquo; and press &ldquo;OK.&rdquo;</strong></font></font></div>
<div style="margin: 0pt 0in; text-indent: 0in;"><font size="2"><font size="2"><strong><span>16. </span>Click through each keyframe to make sure the prototype looks right (the buttons are aligned properly and the screens are updated).</strong></font></font></div>
<div style="margin: 12pt 0in; text-indent: 0in;"><font size="2"><strong><font size="2"><span>17. </span>You can now publish another copy of the prototype without the annotations by going to &ldquo;File &gt; Publish Settings&rdquo; and giving the files new names.</font></strong></font></div>
<div style="margin: 0pt 0in 12pt;"><font size="2"><font size="2">Open <a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/Andrzejewski_Prototype_Mac.app.zip"><u>Andrzejewski_Prototype_Mac.app</u></a> or <a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/Andrzejewski_Prototype_PC.exe"><u>Andrzejewski_Prototype_Windows.exe</u></a> to see the final prototype. You can also open FlashPrototype_Completed.fla from <a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/Andrzejewski_SourceFiles.zip"><u>Andrzejewski_SourceFiles.zip</u></a> to see what the final Flash file should look like.</font></font></div>
<h2>Resourcefulness, creativity, and experimentation</h2>
<div style="margin: 0pt 0in;"><font size="2"></p>
<p>Using only the principles learned in this tutorial and a little resourcefulness, creativity, and experimentation, you can create quite robust prototypes. In fact, using just what you&rsquo;ve already learned, you could conceivably simulate rich interactions ranging from fly-out menus to type-ahead search.</p>
<p>Look for a follow-up article that will show you more examples of what&rsquo;s possible.</p>
<p>The wonderful thing about Flash is that Flash prototypes can be as simple or as complex as they need to be. Start building your click-through prototypes in Flash. Once you&rsquo;ve built a few of those, try a scenario that involves a little logic. When a more complex situation arises (&ldquo;Could you make this area turn yellow when you drag that icon over it?&rdquo;), do some research on sites like <u>ActionScript.org</u> to see if you can find an easy way to show it or at least fake it.</p>
<p>While you may not be able to take full advantage of Flash&rsquo;s prototyping potential immediately, the benefits of using Flash, even when creating simple prototypes, make it a worthwhile addition to any interaction designer&rsquo;s toolkit.</p>
<p></font></div>
<h2><font size="2"><strong><font size="5">Appendix A: The Flash Interface</font></strong></font></h2>
<div style="margin: 0pt 0in;"><em><a href="http://www.boxesandarrows.com/files/banda/quick-and-easy-flash/andrzejewski_img0011.png"><font size="2"><font size="2"><img width="500" height="313" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/andrzejewski_img0011.gif" alt="" title="" /></font></font></a></em></div>
<div style="margin: 0pt 0in;"><font size="2"><font size="2">Note: If you don&rsquo;t see some of these panels, use the Window menu to locate and turn them on.</font></font></div>
<div style="margin: 12pt 0in;"><font size="2"><font size="2"><b>The Stage </b>is your visual workspace or canvas. This is where you&rsquo;ll specify <b>where</b> objects appear. Objects in the grey area outside the stage will not be visible when the exported flash movie is viewed at the correct size.</font></font></div>
<div style="margin: 0pt 0in;"><font size="2"><font size="2"><b>The Timeline</b> is where you define <b>when</b> objects appear or disappear from the stage. The timeline contains <b>frames</b> and <b>keyframes</b> which can be on multiple, independent <b>layers</b>.</font></font></div>
<div style="margin: 0pt 0in 0pt 0.5in;"><font size="2"><font size="2"><b>Frames</b> are displayed as blocks. They are grey when they contain content and white when they are empty. </font></font></div>
<div style="margin: 0pt 0in 0pt 0.5in;"><font size="2"><font size="2"><b>Keyframes</b> are frames marked with circles or dots. A keyframe is a frame where a change can occur without affecting the previous frames. Changes made on keyframes persist until the next keyframe unless &ldquo;tweening&rdquo; is used to fill in the blanks. You can also add commands (ActionScript) to keyframes, which will be executed when the player reaches that frame.</font></font></div>
<div style="margin: 0pt 0in 0pt 0.5in;"><font size="2"><font size="2"><b>Frame Labels</b> can be assigned to keyframes so that they can be referred to using ActionScript. It is generally better to refer to frame <b>labels</b> in ActionScript than to frame <b>numbers</b> because frame numbers are subject to change as you add or remove frames.</font></font></div>
<div style="margin: 3pt 0in;"><font size="2"><font size="2"><b>The Edit Bar (Navigation Area)</b> indicates which timeline you are currently viewing. In this tutorial, you will generally be working on the main timeline, labeled &ldquo;Scene 1&rdquo; by default, but you will eventually be creating objects that have their own, independent timelines. These objects can be nested inside of each other. When you are inside an object&rsquo;s timeline, a breadcrumb trail will indicate where you are in the grand scheme of things, e.g., Scene 1 &gt; CarObject &gt; WheelObject.</font></font></div>
<div style="margin: 3pt 0in;"><font size="2"><font size="2"><b>The Library</b> contains <b>symbols</b>&mdash;the &ldquo;actors&rdquo; that appear on the stage. <b>Symbols</b> are objects that can be used and reused. They are similar to Shapes in Visio and Stencils in Omnigraffle. Symbols include imported content, <b>Movie Clips</b> (objects that can have their own, independent timelines), <b>Buttons</b> (special movie clips with four frames in which four possible button states can be created), and <b>Graphics</b> (objects that may contain drawings and/or imported images).</font></font></div>
<div style="margin: 3pt 0in;"><font size="2"><font size="2"><b>Instances</b> are unique occurrences of symbols in your Flash movie. You can drag as many instances of a symbol into your movie as you like. If you update the symbol, all of its instances will be updated as well, however, certain properties (such as scaling and positioning) can be customized on an instance-by-instance basis. Later you&rsquo;ll learn how to name instances so you can refer to them specifically using ActionScript.</font></font></div>
<div style="margin: 3pt 0in;"><font size="2"><font size="2"><b>The Components</b> <b>Panel</b> contains a special library of user interface objects, such as radio buttons and combo boxes, that have customizable properties. These properties can be edited in the Parameters tab of the Properties Panel and/or changed using ActionScript.</font></font></div>
<div style="margin: 3pt 0in;"><font size="2"><font size="2"><b>The Actions Panel</b> is context-sensitive&mdash;it shows/allows you to add scripts to the last <b>frame</b> or <b>instance</b> that you selected. Look at the tab name near the bottom of the Actions Panel to verify what you are adding actions to.</font></font></div>
<div style="margin: 3pt 0in;"><font size="2"><font size="2"><b>The Properties Panel</b> is also context-sensitive&mdash;it shows/allows you to set properties for the last frame or instance that you selected. This is where you can assign <b>frame labels</b> to frames and <b>instance names</b> to instances. <b>The Parameters Tab</b> of this panel is where you can edit the special properties of <b>components</b>. Each property is listed on a separate line.</font></font></div>
<div style="margin: 3pt 0in;"><font size="2"><font size="2"><b>The Tool Bar</b> contains tools you can use to create and manipulate graphics and objects on the stage.</font></font></div>
<h2><font size="2"><strong><font size="5">Appendix B: ActionScript Recap</font></strong></font></h2>
<div style="margin: 3pt 0in;"><font size="2"><font size="2">You don&rsquo;t need a deep understanding of ActionScript to create convincing prototypes. Simply understanding the following principles, all of which you&rsquo;ve already put into practice in this tutorial, can take you a long way.</font></font></div>
<h3><font size="2"><strong>ActionScript 2.0 vs. ActionScript 3.0</strong></font><em><font size="2"><strong> </strong></font></em></h3>
<div style="margin: 0pt 0in;"><font size="2"><font size="2"></p>
<p>The latest version of ActionScript is ActionScript 3.0, a much more sophisticated but unfortunately a little harder to comprehend rendition of the language. Because <span class="caps"><span class="caps">AS 2</span></span>.0 is a little more direct and intuitive (you can add scripts directly to buttons and objects), I recommend starting there. In fact, if you&rsquo;re only using Flash for simple applications (like most prototypes will be), <span class="caps"><span class="caps">AS 2</span></span>.0 is all you really need. If you eventually want to catch up with the <span class="caps"><span class="caps">AS 3</span></span>.0 trend, understanding <span class="caps"><span class="caps">AS 2</span></span>.0 first can help you make the conceptual leap to <span class="caps"><span class="caps">AS 3</span></span>.0.</p>
<p>When working in ActionScript 2.0, you&rsquo;ll want to make sure that tutorials and scripts you find online and in books are compatible. Look for tutorials written for Flash <span class="caps"><span class="caps">MX 2004</span></span>, Flash 8, or Flash <span class="caps"><span class="caps">CS3</span></span> using ActionScript 2.0.</p>
<p></font></font></div>
<h3><font size="2"><strong>ActionScript Grammar</strong></font></h3>
<div style="margin: 0pt 0in;"><font size="2"><font size="2"><strong>ActionScript</strong> is case sensitive. <b>Semicolons</b> should be used at the end of every statement (generally every line). <b>Curly braces</b> can be used to group statements. <b>Comments</b> that don&rsquo;t affect the code can be added by preceding comment text with two forward slashes.</font></font></div>
<h3><font size="2"><strong>Making something happen using ActionScript</strong></font></h3>
<div style="margin: 0pt 0in;"><font size="2"><font size="2">First, <b>when</b> do you want it to happen?</font></font></div>
<ul type="disc" style="margin-top: 0in;"> <font size="2"></p>
<li style="margin: 0pt 0in;"><font size="2"><b>When a particular frame is reached: </b>Frame Actions are attached to keyframes and are triggered when that frame is reached. For example, you might select the last keyframe in a movie and add a &ldquo;stop();&rdquo; action so that the movie will not loop when it reaches the end.</font></li>
<li style="margin: 12pt 0in;"><font size="2"><b>When a specific event occurs: </b>When you add actions to objects on the stage, you must use one or more event handlers to specify exactly when they should be executed. Event Handlersare used to specify behaviors that trigger actions. Actions contained within an event handler&rsquo;s curly braces will be triggered only when the event preceding them occurs (e.g., when an button is pressed and when it&rsquo;s released). Useful event handlers include:     <br />
    on(press) { }       on(release) { }       on(rollOver) { }       on(rollOut) { }</font></li>
<li style="margin: 12pt 0in;"><font size="2"><b>The above, but only when a particular condition is met: </b>Within Frame Actions and Event Handlers, you can add additional conditions that must be met for an action to be performed. Note that the condition will be evaluated only when the frame is reached or event occurs. The If Statement describes a condition that must be met for certain action(s) to be performed. Its form is: &ldquo;if(CONDITION) {ACTIONS}&rdquo;It can optionally be followed by an &ldquo;else&rdquo; statement specifies what to do otherwise. Operators are used in If Statements to create conditions by comparing one value to another in the format, &ldquo;if(x [operator] y).&rdquo; The most common operators are:
<p>    == equals<br />
    &gt; is greater than<br />
    &lt; is less than<br />
    != is not equal to<br />
    Multiple conditions can be combined using the operators:     <br />
    &amp;&amp; and<br />
    || or<br />
    For example, if(x  false &amp;&amp; y  false) means &ldquo;if x is false <span class="caps"><span class="caps">AND</span></span> y is false.&rdquo;</font></li>
<p>    </font></ul>
<div style="margin: 0pt 0in;"><font size="2"><font size="2">Next, <b>which</b> object or timeline are you commanding?</font></font></div>
<ul>
<li><font size="2"><b>Actions are context-sensitive.</b> They act on whichever movie or timeline they are attached to. If actions are placed in the main timeline, they&rsquo;ll act on the main movie. If they&rsquo;re placed on a timeline within an object, they&rsquo;ll only act on that object unless otherwise specified.</font></li>
<li><font size="2"><b>To target specific timelines and objects, </b>refer explicitly to the main movie as &ldquo;_root&rdquo; and other objects by their assigned &ldquo;Instance Names.&rdquo; An Instance Name can be assigned by selecting an instance and entering a unique name in the Instance Name field in the Properties Panel. Since a symbol in your library can be used in your Flash movie multiple times, each occurrence needs to have a unique name if you want to address it using ActionScript. If you&rsquo;re unsure which object an action applies to, use explicit targets to ensure your actions will work as intended.</font></li>
<li><font size="2"><b>When objects are nested inside each other (every object is technically nested inside the main movie, or the _root), address them using their complete &ldquo;target paths.&rdquo;</b> Target Paths are like web URLs or file paths, only they use dots (.) instead of slashes to indicate hierarchy. Eventually you&rsquo;ll be using ActionScript to address movies inside of other movies. An easy way to do so is using &ldquo;absolute paths,&rdquo; which indicate the location of an object relative to the main movie (the &ldquo;root&rdquo;) using objects&rsquo; instance names. (For example, to address an object with the instance name &ldquo;spokes,&rdquo; you might write: root.car.wheels.spokes) It doesn&rsquo;t hurt to get in the habit of always referring to the main movie as &ldquo;_root&rdquo;&mdash;as this becomes important when using embedded movie clips.You can also use &ldquo;relative paths,&rdquo; which you can learn more about in Flash&rsquo;s documentation. </font></li>
</ul>
<div style="margin: 0pt 0in;"><font size="2"><font size="2">Finally, <b>what</b> do you want to happen?</font></font></div>
<ul type="disc" style="margin-top: 0in;"> <font size="2"></p>
<li style="margin: 0pt 0in;"><font size="2"><b>You can use Flash&rsquo;s many built-in functions to perform all kinds of actions.</b> Functions are built-in actions that you can call on using keywords. These commands are keywords followed by parentheses in which specific details can be added if necessary. Some useful functions for prototyping include:</font></li>
<p>        </font></ul>
<p><img width="605" height="367" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/flashtable1.jpg" alt="appendix_table1" title="appendix_table1" /></p>
<ul>
<li><b>You can also change properties of an object using ActionScript.</b> <i>Properties</i> of an object are special keywords that Flash recognizes. You can evaluate or change properties of an object using ActionScript. Components, movie clips and other types of objects all have unique properties. You can look up a particular object type&rsquo;s properties and their possible values in Flash&rsquo;s documentation. You can use the &ldquo;equals&rdquo; sign to change a property of an object. For example, to change the text of a text box called &ldquo;welcomeMessage&rdquo; you might write:</li>
</ul>
<p style="margin-left: 80px;"><font size="2">welcomeMessage.text = &quot;Hello!&quot;</font></p>
<p>&nbsp;</p>
<p><font size="2">Some useful properties include:</font></p>
<p><img width="597" height="353" src="http://www-boxesandarrows-com.zippykid.netdna-cdn.com/files/banda/quick-and-easy-flash/flashtable2.jpg" alt="appendix_table2" title="appendix_table2" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>Flash workshop at UX Week</h3>
<div>Alexa will be leading a workshop on Flash Prototyping (<a href="http://www.uxweek.com/workshops/prototyping-with-flash" target="_blank">http://www.uxweek.com/workshops<wbr></wbr>/prototyping-with-flash</a>) at UX Week (August 12- 15,  2008) in San Francisco. This workshop offers the impetus, skills and inspiration you need to get started with Flash prototyping. Come and learn how to bring your wireframes to life!</div>
<div>Use discount code FOAA for 15% off.</div>
]]></content:encoded>
			<wfw:commentRss>http://boxesandarrows.com/quick-and-easy-flash-prototypes/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
	</channel>
</rss>
