<?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>untoldentertainment.com &#187; Tutorials</title>
	<atom:link href="http://www.untoldentertainment.com/blog/tag/tutorials/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.untoldentertainment.com/blog</link>
	<description>We Make Flash Games</description>
	<lastBuildDate>Wed, 08 Sep 2010 18:57:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Toronto Fan Expo 2010: State of the Toronto Game Industry Panel</title>
		<link>http://www.untoldentertainment.com/blog/2010/08/30/toronto-fan-expo-2010-state-of-the-toronto-game-industry-panel/</link>
		<comments>http://www.untoldentertainment.com/blog/2010/08/30/toronto-fan-expo-2010-state-of-the-toronto-game-industry-panel/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 12:55:52 +0000</pubDate>
		<dc:creator>Ryan Henson Creighton</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Awesomazing]]></category>
		<category><![CDATA[Canadian Media News]]></category>
		<category><![CDATA[Company News]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Toronto]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Unity3D]]></category>
		<category><![CDATA[Video Games]]></category>

		<guid isPermaLink="false">http://www.untoldentertainment.com/blog/?p=2840</guid>
		<description><![CDATA[i felt really honoured to be invited to speak on a panel at the Toronto Fan Expo this weekend alongside a number  of other local industry pros.  i couldn&#8217;t attend the event as a non-cosplayer, so my wife Cheryl whipped up a little something to satisfy my desperate desire for attention, and my [...]]]></description>
			<content:encoded><![CDATA[<p>i felt really honoured to be invited to speak on a panel at the Toronto Fan Expo this weekend alongside a number  of other local industry pros.  i couldn&#8217;t attend the event as a <a href="http://www.untoldentertainment.com/blog/2010/08/28/toronto-fan-expo-2010-non-cosplayers-gallery/">non-cosplayer</a>, so my wife Cheryl whipped up a little something to satisfy my desperate desire for attention, and my business need to extend the Untold Entertainment brand in ridiculous ways:</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_08_30/ryanHensonCreighton.jpg" alt="Ryan Creighton's red monster hat"></p>
</div>
<p>The panel was moderated by Jason MacIsaac of Electric Playground fame, late himself of a small Ontario game studio from the Niagara region called Cerebral Vortex Games.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_08_30/panel.jpg" alt="Fan Expo State of the Game Industry Panel"></p>
</div>
<p>My fellow guests on the panel were (from right):</p>
<ul>
<li>Ian Kelso, head of <a href="http://interactiveontario.com/">interactiveontario</a>
<li>Leslie Phord-Toy, a producer at <a href="http://en.wikipedia.org/wiki/Horsez">UbiSoft&#8217;s</a> new Toronto Studio
<li>Ryan MacLean, formerly of Pseudo Interactive and a founder of <a href="http://www.drinkboxstudios.com/main/news.php">Drinkbox Studios</a> (also both the second Mac and the second Ryan on the panel)
<li>Philippe McNally, from <a href="http://www.longbowgames.com/">Longbow Digital Arts</a>, who recently released their PC RTS Hegemony: Philip of Macedon
</ul>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_08_30/line.jpg" alt="Fan Expo Line-up"></p>
</div>
<p>i was thrilled to see that the line-up for the talk was substantial. A Fan Expo staff member asked us if we were okay with people sitting on the floor when we ran out of seats. Of course, Ubi Soft was the big draw, as many of the audience members wanted to know how to get a job there working on their favourite triple-A console franchises. i made a point to mention that UbiSoft also developed the Nintendo DS Babiez/Petz/Horsez games, as well as a number of cash-in movie licenses that have failed to pull in the same acclaim as their more well-known blockbusters.</p>
<p>i&#8217;m doing my best to end this (apparently prevalent) notion that working in the video game industry is the ultimate fulfillment of this masturbatory <em>Tom Hanks in BIG</em> fantasy everyone has.  Bills gotta get paid, and you may be asked to (gasp!) work on something you don&#8217;t like, such as a (shock!) video-heavy bank website instructing visitors on the various retirement products available to them (as we did last year).</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_08_30/ian.jpg" alt="Ian Kelso"></p>
<p>Most people were delighted to see Ian, who they mistakenly thought was cosplaying as either Lex Luthor, Professor Xavier, Kratos, Captain Jean-Luc Picard, John Locke from LOST, or as a member of the Blue Man Group after a bath.
</p></div>
<h2>Half-Remembered Q &#038; A</h2>
<p>i admit, i&#8217;m having a hard time remembering what went on at the panel.  There was a girl in the second row wearing an incredibly distracting Slave Leia costume, so i think most of what i had to say was along the lines of &#8220;hummina hummina hummina.&#8221;  (Slave Leia costumes don&#8217;t usually do it for me, but this one was worth strangling your hutt over.)</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_08_30/slaveLeia.jpg" alt="Toronto Fan Expo 2010 Slave Leia"></p>
<p>Alternate Star Wars masturbation euphemism: HAND SOLO.
</p></div>
<p>So the pro reporters will definitely cover the panel better, but here are a few questions and answers that i <em>can</em> recall:</p>
<p><b>Q:</b>Why develop games in Toronto?<br />
<b>A:</b>Lesley&#8217;s answer was no secret &#8211; Ubi was attracted by the tax credits and government funding.  Ian hinted that interactiveontario and the government are trying to secure at least one more &#8220;whale&#8221; to move into the province.  For the three small developers, the answer was &#8220;intertia&#8221;.  Our families are here, we live here, and for folks like me who have young kids and ties to grandparents, it&#8217;s very difficult to seek our fortunes elsewhere.  Ian added that the work they&#8217;re doing to attract big companies helps heal the brain drain; if Lesley were to leave UbiSoft (for example), he wants enough studio muscle here to retain top talent in the province.</p>
<p><b>Q:</b>Does your choice of school make you more or less employable?<br />
<b>A:</b>Ryan M seemed to be more impressed by educational pedigree, saying that it was not the only thing he looks for, but that it is an indicator of a qualified applicant.  The only &#8220;good&#8221; Ontario schools mentioned were Waterloo, Sheridan, and University of Toronto.  There are many, many schools that aren&#8217;t on that short top-of-mind list, including yours. Reflect on that.</p>
<p>i took a few digs at the International Academy of Design and Technology, saying that nearly everyone i&#8217;ve known from that school &#8211; both students <em>and</em> faculty &#8211; bad-mouthed the place (and forgetting that the moderator had been an instructor there &#8211; oops).  Despite the school&#8217;s rock-bottom reputation, i&#8217;ve hired two programmers in my stint as a studio owner, and they&#8217;ve both been IADT grads.  For me, individual excellence beats a school&#8217;s bad rep.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_08_30/fire-eater.jpg" alt="flaming torch juggler"></p>
<p>i&#8217;m not bothered that this guy is an IADT grad. The moment we need a flaming torch juggler, he&#8217;s hired.
</p></div>
<p><b>Q:</b> Why aren&#8217;t more studios embedding themselves in schools to cherry-pick the best talent?<br />
<b>A:</b>(no one really weighed in on this, but i gave it a shot at a local community college this year with <a href="http://www.untoldentertainment.com/blog/2010/02/18/whats-wrong-with-ontario-colleges-part-1/">disastrous</a> <a href="http://www.untoldentertainment.com/blog/2010/02/23/whats-wrong-with-ontario-colleges-part-2/">results</a>)</p>
<p><b>Q:</b>How do you get a job in the industry?<br />
<b>A:</b>The panel agreed that portfolios were really important.  Ryan M said that demonstrated capability trumps a fancy CV.  Philippe liked to see evidence of problem-solving ability.  i said i&#8217;d much prefer a candidate with a portfolio of a few finished games he&#8217;d created himself, rather than a student project he completed with a number of classmates.</p>
<p><b>Q:</b>Why don&#8217;t more companies take interns?<br />
<b>A:</b>The three indies &#8211; Philippe, Ryan M and myself &#8211; said that interns were a risky proposition for small studios, due to the resources they demand. Leslie said that Ubi takes interns (theirs was in the front row taking pictures), but that the intern would have to have something valuable to commit to the organization.</p>
<p>One thing i didn&#8217;t get a chance to say was that people should be very wary of schools that offer internships.  Picture it: you&#8217;re a college program head, and your school has guaranteed this placement program.  You&#8217;ve got a few great students, a handful of middling ones, and two or three absolute morons who have barely managed to squeak by.  Do you really want your school&#8217;s reputation stymied by those guys?  Do you really want to risk damaging your relationship with industry by sending them out on a placement?  No, you don&#8217;t.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_08_30/moron.jpg" alt="duh"></p>
<p>Uh &#8230; hello, UbiSoft? We have a student who&#8217;d like to complete his placement in your shop.
</p></div>
<p>Add to that the fact that there are very few shops in town, compared with the number of schools cranking out game-trained grads (Humber, Waterloo, George Brown, Durham, U of T, UOIT, Ryerson, Trios, Sheridan, Seneca, York, and Max the Mutt off the top of my head).  Some schools churn grads as often as every six months. There&#8217;s a clear internship supply-and-demand problem here.</p>
<p>That&#8217;s why in my personal experience (and from what i&#8217;ve heard anecdotally from others), when you enroll at a school that promises a great placement program, they&#8217;re lying.  It&#8217;s often a marketing ploy to get you in the door.  You&#8217;ll certainly have to complete a placement to earn class marks, but you&#8217;ll have to hunt down the placement yourself.  When i was a student at Seneca College here in Ontario, the school had two or three placements in industry for their favourite sons, and the rest of us scrambled.  One girl got a job at her uncle&#8217;s trucking plant.  i found an internship on my own at the Durham Board of Education, working in the computer lab with students in junior kindergarten.  This was the final program requirement for 3D computer art and animation students.</p>
<p>The type of school you really want to attend is one that has high entrance standards, and that fails students early and often.  There are very few that do this, but i heard an apocryphal tale that Sheriden will refuse to graduate a 4th-year student with a weak portfolio/art thesis presentation.  (Note that Sheridan was on the panel&#8217;s very short list of prestigious schools.)</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_08_30/panel2.jpg" alt="Fan Expo State of the Video Game Industry panel"></p>
<p>Ryan M covers his mouth in horror as Ryan C tells Lesley a particularly upsetting fart joke.
</p></div>
<p><b>Q:</b>How do you choose the right school?<br />
<b>A:</b>Most of the panelists were too political to answer frankly.  i don&#8217;t toe the same line, because i feel that many of the schools in this province &#8211; particularly the community colleges &#8211; are doing the industry and their customers a great disservice, and should be held accountable.  i warned against schools with very new programs (which is most of them), because they often work out the kinks at the expense of their initial student intakes.  i also took issue with schools whose teachers have very tenuous connections to industry.  i was speaking to a colleague of mine not long ago, who suggested that every two years, the colleges should kick their instructors back out into industry to ensure they&#8217;re keeping their skills up to date.</p>
<p>Ian mentioned that organizations like io in other countries have partnered with (bullied?) schools into an arrangement where the trade association has to approve its course offering in order for the school to earn a passing grade from industry. As a prospective student, you just look up which schools the association recommends, and apply there.  i like that idea, but i worry it&#8217;s prone to abuse in the name of politics and playing nice.</p>
<h2>Party On and Be Excellent to Each Other</h2>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_08_30/billTed.jpg" alt="Bill &#038; Ted"></p>
</div>
<p>If there was one main takeaway from the conversation, it was to focus on personal excellence.  The very best stand out, while everyone else falls to the wayside, as in all things.  You wanna make games?  Then the barrier to entry is so low, as Jason said and as Ian reminded us, that you <em>should already be making games</em>.  Don&#8217;t wait on UbiSoft or some small indie shop to give you your big break.  There&#8217;s a golden opportunity for you right here, right now that didn&#8217;t exist when the rest of us were getting our start.</p>
<p>The panelists spoke about a number of groups, technologies and resources.  Here&#8217;s a non-exhaustive list:</p>
<p><b>Groups</b></p>
<ul>
<li><a href="http://handeyesociety.com/">Hand Eye Society</a> Where Toronto&#8217;s indie developers meet.
<li><a href="http://www.igda.org/toronto">IGDA Toronto Chapter</a> This group places more emphasis on professional development than the HES.
<li><a href="http://nomediakings.org/artsygames/">Artsy Games Incubator</a> Artists who want to make games, but have no programming ability, get together to &#8230; make games!  Closely tied to Jim Munroe&#8217;s efforts at the HES.
<li><a href="http://www.tojam.ca/home/default.asp">TOJam</a> The Toronto Indie Game Jam, an annual event where the city&#8217;s pros and hopefuls get together over one weekend to make games. A fantastic event.
<li><a href="http://www.flashinto.com/">FlashInTO</a> The Toronto Flash user group.
</ul>
<p><b>Technologies</b></p>
<ul>
<li><a href="http://unity3d.com/">Unity 3D</a> Create 3D video games in the browser, with a (comparatively) low learning curve.
<li><a href="http://www.adobe.com/products/flash/">Adobe Flash</a> A relatively inexpensive program for creating 2D and quasi-3D browser games.  Lots of books and tutorials &#8211; join our ranks of over two million developers!
<li><a href="http://www.yoyogames.com/gamemaker/">Game Maker</a> A free game creation tool, and the favourite of many indies.
<li><a href="http://scratch.mit.edu/">Scratch</a> An easy-to-grasp game creation tool from MIT
<li><a href="http://www.udk.com/">UDK</a> The consumer version of the Unreal Engine.  i don&#8217;t recommend this one because of its eventual high cost (despite an initially free download)
</ul>
<p><b>Resources</b></p>
<ul>
<li><b>Unity by Example</b>, a book written by me that is coming out very shortly.  It&#8217;s a great resource for new game developers that teaches you how to make small, simple games, and how to approach your game dev career so that you don&#8217;t give up on it. Send an email to info [the at symbol] untoldentertainment.com and i&#8217;ll send you a note once it&#8217;s available.
<li><a href="http://en.mochimedia.com/">MochiMedia</a>, <a href="http://www.kongregate.com/">Kongregate</a>, <a href="http://www.flashgamelicense.com/">FlashGameLicense</a>, <a href="http://www.heyzap.com/">HeyZap</a> Four places (of MANY) to distribute and monetize games you create with Flash.
<li><a href="http://www.wooglie.com/">Wooglie</a> A unity game portal.
<li><a href="http://www.tigsource.com/">TIGSource</a> The de facto site for indies.
<li><a href="http://www.untoldentertainment.com/blog/feature-articles/pimp-my-game/">Pimp My Game</a> Our own series on making money (or not) with Flash games. Includes tons of sites that spill the beans about the financials on their games.
</ul>
<p>Were you at the panel?  Do you have anything to add?  Was there anything you wanted to ask that you didn&#8217;t get a chance to ask?  Leave me a comment and we&#8217;ll have a great discussion. </p>
<p>Thanks to <a href="http://dendritejungle.livejournal.com/">dendritejungle</a> and <a href="http://jason.con.ca">Jason MacIsaac</a> for the pics!</p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://www.untoldentertainment.com/blog/2010/08/30/toronto-fan-expo-2010-state-of-the-toronto-game-industry-panel/" /></p><img src="http://www.untoldentertainment.com/blog/?ak_action=api_record_view&id=2840&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.untoldentertainment.com/blog/2010/08/30/toronto-fan-expo-2010-state-of-the-toronto-game-industry-panel/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Cooking with Flash: Learning the Timeline</title>
		<link>http://www.untoldentertainment.com/blog/2010/06/08/cooking-with-flash-learning-the-timeline/</link>
		<comments>http://www.untoldentertainment.com/blog/2010/06/08/cooking-with-flash-learning-the-timeline/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 20:00:23 +0000</pubDate>
		<dc:creator>Ryan Henson Creighton</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cooking With Flash]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.untoldentertainment.com/blog/?p=2602</guid>
		<description><![CDATA[Prerequisites:

Basic Flash Project Setup
Drawing with Strokes and Fills
Groups and Layers

Begin
Flash wasn&#8217;t always this difficult to get your head around.  Before it was hijacked by codemonkeys, the software was a very capable animation program.  The focal point of Flash animation is the Timeline, and all the wonderful things it can do.  This lesson [...]]]></description>
			<content:encoded><![CDATA[<p><b>Prerequisites:</b></p>
<ul>
<li><a href="http://www.untoldentertainment.com/blog/2010/05/06/cooking-with-flash-basic-flash-project-setup/">Basic Flash Project Setup</a>
<li><a href="http://www.untoldentertainment.com/blog/2010/05/12/cooking-with-flash-drawing-with-strokes-and-fills/">Drawing with Strokes and Fills</a>
<li><a href="http://www.untoldentertainment.com/blog/2010/05/21/cooking-with-flash-groups-and-layers/">Groups and Layers</a>
</ul>
<h2>Begin</h2>
<p>Flash wasn&#8217;t always this difficult to get your head around.  Before it was hijacked by codemonkeys, the software was a very capable animation program.  The focal point of Flash animation is the Timeline, and all the wonderful things it can do.  This lesson is a primer on how to move around the timeline and to figure out how it works.  In a future lesson, we&#8217;ll delve into different animation styles you can pull off using the Timeline.</p>
<p>Start a project as described in Basic Flash Project Setup, or continue from an existing project.  Make sure that you can see the Timeline in your screen setup.  In the menus, click Window > Timeline.</p>
<h2>1. Time moves from left to right.</h2>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_06_08/timeline.jpg" alt="Flash timeline"></p>
</div>
<p>This is an obvious point if you&#8217;ve used any other timeline-based software like Premiere, Audacity, or Director.  Those numbers stretching off into the distance are <em>frame numbers</em>.  A frame is a single picture in your movie.  Play the pictures one after another quickly enough, and our persistence of vision creates the illusion of motion.   </p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_06_08/flipbook.jpg" alt="Flipbook"></p>
<p>Flipbooks use sequential images to trick the eye into seeing motion. The Flash Timeline is an elaborate flipbook.
</p></div>
<h2>2. FPS Determines how fast your frames play.</h2>
<p>Your default .fla file makes frames whizz by at 30 frames per second. </p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_06_08/fps.jpg" alt="Flash Properties frames per second setting"></p>
</div>
<p>To change the frame rate of your Flash movie, type a different number into the FPS: field in the Properties panel (Window > Properties). </p>
<p><b>note:</b> The Properties panel is context-sensitive, which means that it shows different options depending on what you&#8217;ve selected. To see the FPS setting, click on any blank area of the stage.</p>
<p>30 FPS is standard for most video.  Classical animators used to work at 24 frames per second for feature films, and 12 frames per second for television and lower-quality animation.  12 fps is sometimes called working &#8220;on twos&#8221;, because the camera man would photograph each drawing twice to bring it up to 24 fps.  The fewer the drawings you use in your animation, the choppier your animation will look.</p>
<h2>3. Understanding keyframes</h2>
<p>The word &#8220;keyframe&#8221; is inherited from animation. A common technique for animating a scene &#8211; especially involving a character &#8211; is to draw the <em>key frames</em> in the action.  If you&#8217;re animating a bouncing ball, you might have three key frames: the ball at the top of its drop, the ball at the bottom as it squishes against the ground, and the ball at the top again.  Keys are the most crucial drawings in the action.  A person should be able to completely understand what&#8217;s going on just by looking at the keys.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_06_08/keys.jpg" alt="Animation key frames"></p>
</div>
<p>Once you&#8217;ve drawn the keys &#8211; the most important drawings &#8211; you draw the in-betweens.  Without these drawings, we can&#8217;t create the illusion of motion.  They are the pictures that &#8220;move&#8221; us from one key to the next.</p>
<p>Computer animation packages like Flash enable us to set up key frames, and to draw our own in-betweens. Flash can also draw in-betweens <em>for</em> us using a process called <em>interpolation</em>.   We&#8217;ll look at interpolation, or <em>tweening</em>, in another tutorial.</p>
<h2>4. Understanding frame symbols</h2>
<p>There are important symbols that appear on frames.  Understanding them is the key to understanding the Timeline, like learning to read music.</p>
<ol>
<li>Blank keyframe
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_06_08/emptyKeyframe.jpg" alt="Flash blank keyframe"></p>
</div>
<p>An empty circle indicates a blank keyframe. There is nothing on the stage on this layer on this frame.  </p>
<li>Keyframe
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_06_08/keyframe.jpg" alt="Flash keyframe"></p>
</div>
<p>A black circle with a grey background indicates a filled keyframe.  There is something on the stage on this layer on this frame.</p>
<li>Empty frame
<p>A blank white frame means that our animation will play to at least this point.  The animation continues to play until it reaches the latest keyframe, blank keyframe, blank frame or filled frame in the Timeline. </p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_06_08/blankFrame.jpg" alt="Flash blank frame"></p>
<p>Even though the stage is empty, this animation will play past frame 30 because the blank frames stretch at least that far.
</p></div>
<li>Filled frame
<p>A frame with a grey background means that the contents of the preceding keyframe appear on stage to at least this point.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_06_08/frame.jpg" alt="Flash filled frame"></p>
<p>The contents of frame 1 stay on stage well past frame 30.
</p></div>
<li>Terminal frame
<p>This white rectangle marks the point after which the contents of the preceding keyframe stop appearing on-stage.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_06_08/terminalFrame.jpg" alt="Flash filled frame"></p>
<p>The contents of frame 1 persist on stage from frame 1 to frame 20.  After frame 20, they stop showing up.
</p></div>
</ol>
<h2>5. The function keys insert frames.</h2>
<p>The F5, F6 and F7 keyboard keys are crucial when using the Timeline.  Used on their own, they insert various frame types. Hold down the SHIFT key and press one of these function keys to delete that frame type.</p>
<p>F5 &#8211; Add a frame.  They will be either blank or filled depending on whether they&#8217;re preceded by a blank or filled keyframe.<br />
SHIFT+F5 &#8211; Delete a frame.</p>
<p>F6 &#8211; Add a keyframe.  <b>note:</b> If you add a keyframe to a blank range of frames, you&#8217;ll drop in a blank keyframe.<br />
SHIFT+F6 &#8211; Remove a keyframe.</p>
<p>F7 &#8211; Add a blank keyframe.<br />
SHIFT+F7 &#8211; Remove a blank keyframe.</p>
<p><b>Sample usage:</b> If you have something on stage, and you want it to disappear at frame 25, add a blank keyframe to frame 25.</p>
<p>You can click and drag to range-select a chunk of frames to delete them, or to convert them to empty or filled keyframes.</p>
<p><b>note:</b> If you insert frames, they don&#8217;t overwrite your existing frames. Rather, the end of your Timeline on that layer gets pushed out farther.</p>
<h2>6. The Playhead controls frames on all layers.</h2>
<p>If you want to add or remove different frame types through all layers of the timeline simultaneously, first click on the pink rectangular Playhead.   Then when you add or remove frames, they&#8217;ll be added to or removed from all layers at once.</p>
<h2>7. Scrub or play your animation. </h2>
<p>Click and hold the mouse button on a frame and move the mouse around to preview your animation.  This is called &#8220;timeline scrubbing&#8221;. </p>
<p>To scrub the Timeline without fear of moving your keyframes around, click and drag the pink Playhead back and forth.</p>
<p>To play your animation within the Flash IDE, press the ENTER key on your keyboard.</p>
<p>To compile your movie to a swf, hold CTRL and press ENTER (Command+Enter on the Mac).  Notice that Flash automatically loops when the Playhead reaches the end of the timeline.</p>
<p><b>note:</b> In order to drag your empty and filled keyframes around, first click on the keyframe to select it, <em>then</em> click and drag to move it around.</p>
<h2>Finish</h2>
<p>This basic Timeline lays the foundation for the actual animation exercises we&#8217;ll be doing.  We&#8217;ll learn how to do &#8220;straight-ahead&#8221; or &#8220;frame-by-frame&#8221; animation, as well as how to get Flash to draw the in-betweens for us.</p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://www.untoldentertainment.com/blog/2010/06/08/cooking-with-flash-learning-the-timeline/" /></p><img src="http://www.untoldentertainment.com/blog/?ak_action=api_record_view&id=2602&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.untoldentertainment.com/blog/2010/06/08/cooking-with-flash-learning-the-timeline/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cooking with Flash: Drawing with Strokes and Fills</title>
		<link>http://www.untoldentertainment.com/blog/2010/05/12/cooking-with-flash-drawing-with-strokes-and-fills/</link>
		<comments>http://www.untoldentertainment.com/blog/2010/05/12/cooking-with-flash-drawing-with-strokes-and-fills/#comments</comments>
		<pubDate>Wed, 12 May 2010 15:49:24 +0000</pubDate>
		<dc:creator>Ryan Henson Creighton</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cooking With Flash]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.untoldentertainment.com/blog/?p=2515</guid>
		<description><![CDATA[Prerequisites:

Basic Flash Project Setup

Begin
Let&#8217;s learn to draw with Flash! 
Flash is not the most feature-rich vector drawing package available. During its development lifecycle, the creators of Flash listened more closely to programmers than artists. As a result, many new features for artists fell by the wayside, while Flash developed a (near) fully-featured programming language in [...]]]></description>
			<content:encoded><![CDATA[<p><b>Prerequisites:</b></p>
<ul>
<li><a href="http://www.untoldentertainment.com/blog/2010/05/06/cooking-with-flash-basic-flash-project-setup/">Basic Flash Project Setup</a>
</ul>
<h2>Begin</h2>
<p>Let&#8217;s learn to draw with Flash! </p>
<p>Flash is not the most feature-rich vector drawing package available. During its development lifecycle, the creators of Flash listened more closely to programmers than artists. As a result, many new features for artists fell by the wayside, while Flash developed a (near) fully-featured programming language in its own right, ActionScript 3.0.  Meanwhile, other software developers came along and ate Flash&#8217;s lunch &#8211; most notably <a href="http://en.wikipedia.org/wiki/Toon_Boom_Animation">Toon Boom Animation</a> with its Harmony product, which is used in feature film production by Disney and other animation studios.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/harmony.png" alt="Toon Boom Harmony"></p>
<p>Because Toon Boom listened to animators while bulding the product, Harmony embarrasses Flash as an animation production tool.
</p></div>
<p>Still, Flash contains a great set of vector drawing tools, with some decent animation capabilities.  In this tutorial, we&#8217;ll cover the unique way in which Flash handles vector drawing.</p>
<h2>Vector vs. Raster</h2>
<p>Before we begin, we should just cover off what the word &#8220;vector&#8221; means as it pertains to drawing software.  Let&#8217;s take two images: a vector image on the left, and a raster image on the right:</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/bunnies.jpg" alt="A vector and a raster bunny"></p>
</div>
<p>Now we&#8217;ll zoom into both images:</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/bunnies_zoomed.jpg" alt="A vector and a raster bunny zoomed"></p>
</div>
<p>Notice that the vector image remains smooth, while we can see the individual pixels (short for &#8220;picture elements&#8221;) that make up the raster image.</p>
<p>This happens is because the computer draws each image differently.  Raster drawing is like painting on a canvas, while vector drawing is like describing shapes with math.  The computer retains the <em>mathematical calculations</em> it needs to redraw a vector image at any size.  But when you blow up a raster image, there&#8217;s only <em>so much</em> picture information the computer knows about the image. It can try filling in the blanks, but the results are usually mediocre.</p>
<p>The other big difference between the two comes when you want to move elements around.  In a vector image, elements are separate, like fridge magnets.  You can move them around, and put them in front of or behind each other, and all is fine and dandy. But when you move a piece of a raster image, it&#8217;s like you&#8217;re taking a pair of scissors to a canvas and cutting a chunk out of it &#8211; you wind up with a gaping hole.  Modern raster programs often have a Layers feature that keeps elements separated, but this is just essentially like working with multiple flat images composited on top of each other. The problem remains.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/monaLisa.jpg" alt="Mona Lisa raster image"></p>
<p>I&#8217;m sorry, Sir &#8211; we&#8217;re going to have to ask you to kindly leave the Louvre.
</p></div>
<p>Some examples of raster image software include Photoshop, GIMP, and MS Paint.</p>
<p>Some examples of vector image software include Fireworks, Illustrator, Flash, and any 3D software (3D Studio Max, Maya, Blender, etc.)</p>
<p>Tricksy falseness occurs when you realize that many vector packages can <em>import</em> raster images.  Many times, i&#8217;ve requested a vector logo from a client so that i can blow it up to a certain size without it looking pixellated.  When i ask for the corporate logo &#8220;in Illustator&#8221;, i usually get an Illustrator file with an imorted raster image. Thees, of course, ees <em>boolchit</em>.  It makes more sense to ask for a <em>vector</em> image instead of an Illustrator file, but not everyone knows what exactly a vector image is.  Now <em>you</em> know!  Spread the word, and share this tutorial.</p>
<h2>1. Strokes vs. Fills</h2>
<p>In Flash, the things you draw are called <b>shapes</b>. The outline of a shape (the &#8220;stroke&#8221;) is separate from the colour inside a shape (the &#8220;fill&#8221;).  Witness:</p>
<ol>
<li>Open Flash.
<li>Click the Rectangle tool in the Tools palette, or press the R key on your keyboard. (If you can&#8217;t see the Tools palette, click Window > Tools in the menus, or hit CTRL/Command + F2 on your keyboard)
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/rectangleTool.jpg" alt="Flash Rectangle tool"></p>
</div>
<li>Click and drag the mouse on the Stage (the rectangular white area in the middle of the screen) to make a rectangle shape. By default, you should see a white rectangle with a black stroke.  You can change the stroke and fill colours before drawing by clicking the stroke and fill colour swatches in the Tools palette, and choosing different colours.
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/colourSwatches.jpg" alt="Flash colour swatches"></p>
</div>
<li>Click the black Selection tool at the top of the Tools palette.
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/selectionTool.jpg" alt="Flash selection tool"></p>
</div>
<li>Click once inside the rectangle to select the white filled area.  It goes &#8220;fuzzy&#8221;, indicating that it&#8217;s selected.
<li>Click on any blank area on the Stage to deselect the fill.
<li>Double-click on the black stroke around the edge of the rectangle. The stroke goes fuzzy too, indicating that it&#8217;s selected. (you may notice that you can also single-click the stroke to select one of the four edges individually)
<li>Click and drag to move the stroke away from the fill, independently.
</ol>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/selectedFill.jpg" alt="Flash selected fill"></p>
<p>A white rectangle on the stage with a selected fill &#8230;
</p></div>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/selectedStroke.jpg" alt="Flash selected fill"></p>
<p>&#8230; and a selected stroke.
</p></div>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/separated.jpg" alt="Separated stroke and fill"></p>
<p>You can pick up and move the stroke independently of the fill. (i&#8217;ve selected the white fill area so that you can see it against the white Stage)
</p></div>
<p>The stroke and fill are two separate things!  If at any time you want to select the fill and the stroke together, double-click the fill, and the stroke will be selected along with it.</p>
<h2>2. Strokes Cut Fills</h2>
<p>Strokes can behave like cut lines in sewing, or hot wires in clay modeling. They slice fills.  Let&#8217;s see that in action.</p>
<ol>
<li>Press CTRL/Command+A to select everything on the stage, and then press delete to get rid of your last shapes.
<li>Click the fill colour swatch in the Tools palette.  Click to select a non-white colour.  i like yellow, because it reminds me of delicious snow.
<li>Click the Rectangle tool, then click and drag to draw a rectangle on the Stage.
<li>Click the Selection tool (the black arrow)
<li>As before, double-click to select the stroke around the rectangle.
<li>Click and drag the stroke so that it intersects the fill.
<li>Click the part of the fill on the inside of the stroke. Now click the part of the fill on the outside of the stroke. Click and drag to move either of these fills to another part of the Stage.
</ol>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/strokesCutFills.jpg" alt="Flash strokes cut fills"></p>
<p>Strokes cut fills.
</p></div>
<p>The stroke cut the fill in half, and made it into separate shapes.  For further exploration of this, try drawing a large rectangle, and draw wiggly strokes through it with the Pencil tool.  Note that your wiggly lines split the fills up into separate pieces too, because the Pencil tool creates fill-cutting strokes.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/pencilToolCut.jpg" alt="Flash strokes cut fills"></p>
<p>Here, i&#8217;ve used the Pencil tool to draw a wiggly stroke. It cuts the fill, so i can click and drag a wiggly-cut piece away as its own separate shape.
</p></div>
<h2>3. Working Without Strokes or Fills</h2>
<p>How do you get a rectangle without a stroke, or one without a fill?  In the colour palette fly-out, there is a small swatch with a red slash through it.  Use this to cancel the fill or stroke colour for your next shape.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/noStroke.jpg" alt="Flash no-colour button"></p>
<p>You can find the no-colour button in the top-right corner of the colour palette for both the stroke and fill swatches.
</p></div>
<h2>4. Same Colours Meld</h2>
<p>Two shapes of the same colour automatically fuse together.  Try it:</p>
<ol>
<li>Clear the stage of old artwork.  (CTRL/Command + A, Delete)
<li>Draw a red rectangle with no stroke (see above)
<li>Draw another red rectangle with no stroke overlapping the first.
<li>Click the Selection tool.
<li>Click on one of the two rectangles.  Both rectangles are selected.
</ol>
<p>There actually aren&#8217;t two rectangles any more &#8211; there&#8217;s only one.  Because they are the same colour, they melded together into the same shape.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/sameColoursUnite.jpg" alt="Flash same colours meld"></p>
<p>Two rectangles of the same colour meld together to form one shape.
</p></div>
<p>You can meld two shapes of the same colour even without drawing them on top of each other. Draw one red rectangle over here, then draw another one over there.  Using the Selection tool, drag one rectangle on top of the other. As long as the rectangle is selected, the two rectangles haven&#8217;t had colour sex yet &#8211; you can move the selected rectangle away without any fusion.  If instead you click the Stage to deselect the overlapping rectangle, then BOWM-CHIKKA!  What Flash has joined together, let no man put asunder.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/tooHot.jpg" alt="Flash same colours meld"></p>
<p>Order the VHS box set for $19.99.
</p></div>
<h2>5. Different Colours Cut</h2>
<p>As with strokes, two shapes of different colours will cut each other when they overlap.  Regard:</p>
<ol>
<li>Clear your old artwork (CTRL/Command + A, Delete)
<li>Draw a red rectangle on the Stage.
<li>Choose a new colour for the fill swatch.  i chose green, because it&#8217;s the colour i turned after i ate that delicious snow.
<li>Draw your differently-coloured rectangle on the Stage, overlapping the first rectangle.
<li>Click and drag either of the two rectangles away from each other.
</ol>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/differentColoursCut.jpg" alt="Different colours cut"></p>
<p>Different colours cut each other, like the Jets and the Sharks.
</p></div>
<p>Two differently-coloured rectangles automatically slice each other, in what i can only assume is Flash&#8217;s way of warning us about racially-motivated violence.  Just as before, the two shapes don&#8217;t have to be drawn on top of each other for them to slice each other up.  Try drawing two shapes at opposite ends of the stage. Then drag one on top of the other.  Click on the Stage to deselect it &#8211; WHIPPOW!! That&#8217;s where the shanking happens.  Now drag one shape away from the other to view the carnage.</p>
<h2>6. Differently-Coloured Strokes are Distinct. Similarly-Coloured Strokes Become Fused.</h2>
<p>Finally, we&#8217;ll see how strokes behave with each other depending on their colours.</p>
<ol>
<li>Clear your old artwork (CTRL/Command + A, Delete)
<li>Choose the no-fill option for the stroke colour swatch.
<li>Choose a colour for your stroke.  i choose black, to reflect the rage and despair in my soul.
<li>Draw a rectangle on the Stage.
<li>Draw another black-stroked rectangle, overlapping the first one.
<li>Choose a different colour for your next stroke, like brown, which is the colour of chocolate when you poop it out.
<li>Draw another overlapping rectangle on the first one.
<li>Using the Selection tool, double-click the black stroke.  The two black rectangle strokes get highlighted together, indicating that they are one shape.
<li>Double-click the differently-coloured stroke. It highlights independently, indicating that it cannot be part of the black rectangles&#8217; undying love for each other.  Two days later, the brown rectangle was found at the bottom of Lake Billingsly with a cinder block tied around its ankles.
</ol>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/strokeBoolean.jpg" alt="Flash stroke boolean"></p>
<p>The two black strokes band together, while the poor brown stroke is odd man out.
</p></div>
<p>Notice, also, that strokes cut other strokes.  Click on an individual line segment anywhere in your tri-rectangle shape.  Any of these pieces can be moved away from the larger shape as a separate piece.</p>
<h2>Finish</h2>
<p>i prize the Flash drawing tools for their speed.  You can draw all of the assets for your game right inside Flash, without having to buy other drawing programs to create your assets.  And this cutting/joining stuff speeds up my drawing immensely.  While it may seem unforgiving and awful at first, know that you can keep shapes away from each other by using layers and groups, which we&#8217;ll see in another tutorial.  But when it comes down to it, the process for creating similar joins and cuts in a competing program like Illustrator is slow as molasses and unwieldy.  The automatic cuts and joins in Flash, not to mention the stroke and point manipulation, are blazingly fast compared to Illustrator&#8217;s compound paths palette, and its finicky bezier handle-pulling.  Once i adopted the drawing tools in Flash, i wondered how i ever got anything done in Illustrator.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_07/illustrator.jpg" alt="Illustrator sucks for drawing"></p>
<p>Each of those bezier handles and their control points are 4 pixels square. Heck of a job, boys.  Heck of a job.
</p></div>
<p class="fbconnect_share"><fb:share-button class="url" href="http://www.untoldentertainment.com/blog/2010/05/12/cooking-with-flash-drawing-with-strokes-and-fills/" /></p><img src="http://www.untoldentertainment.com/blog/?ak_action=api_record_view&id=2515&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.untoldentertainment.com/blog/2010/05/12/cooking-with-flash-drawing-with-strokes-and-fills/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Cooking With Flash: Basic Flash Project Setup</title>
		<link>http://www.untoldentertainment.com/blog/2010/05/06/cooking-with-flash-basic-flash-project-setup/</link>
		<comments>http://www.untoldentertainment.com/blog/2010/05/06/cooking-with-flash-basic-flash-project-setup/#comments</comments>
		<pubDate>Thu, 06 May 2010 18:36:44 +0000</pubDate>
		<dc:creator>Ryan Henson Creighton</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Cooking With Flash]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video Games]]></category>

		<guid isPermaLink="false">http://www.untoldentertainment.com/blog/?p=2504</guid>
		<description><![CDATA[Prerequisites:

none.

Begin
So you want to start creating games with Adobe Flash?  Here&#8217;s the very first step.
You&#8217;ll need two pieces of software: Adobe Flash, and a program to in which to write your code.  (Code is a list of instructions you give to the computer to make it bend to your steely will.)  You [...]]]></description>
			<content:encoded><![CDATA[<p><b>Prerequisites:</b></p>
<ul>
<li>none.
</ul>
<h2>Begin</h2>
<p>So you want to start creating games with Adobe Flash?  Here&#8217;s the very first step.</p>
<p>You&#8217;ll need two pieces of software: Adobe Flash, and a program to in which to write your code.  (Code is a list of instructions you give to the computer to make it bend to your steely will.)  You can write your code inside the Flash program, but Flash is always playing catch-up with the great features available in other programs that make coding easier.  And i like easy.</p>
<h2>1. Download the Software</h2>
<p>You can download a number of programs to help you code.  The one we recommend (and use here at Untold Entertainment to create all our games) is called FlashDevelop.  It&#8217;s free, but if you like it, consider tossing a few clams to the creators.</p>
<ul>
<li><a href="http://www.adobe.com/products/flash/">Download a free 30-day trial of Adobe Flash</a>
<li><a href="http://www.flashdevelop.org/wikidocs/index.php?title=Main_Page">Download your free copy of FlashDevelop</a> (PC-only)
</ul>
<p>note: other popular programs that professionals use to create their code include <a href="http://www.fdt.powerflasher.com/developer-tools/fdt-3/">FDT</a>, <a href="http://www.adobe.com/products/flashbuilder/">Flash Builder</a> (formerly known as Flex Builder), and even a fancy text editor like <a href="http://notepad-plus.sourceforge.net/uk/download.php">Notepad++</a>.  (i&#8217;m told that if you use a Mac, you&#8217;re iShitOutOfLuck on this front, but perhaps the commenters can recommend something?)</p>
<p>Once you&#8217;re finished downloading the two pieces of software you need, install them into the default directories, and we&#8217;ll get started setting up a project.</p>
<h2>What <em>is</em> Flash?</h2>
<p>The term &#8220;Flash&#8221; is confusing.  You may have heard that some online video &#8220;<em>is</em> Flash&#8221;, that some games you play in the browser &#8220;<em>are</em> Flash&#8221;, that some websites &#8220;<em>use</em> Flash&#8221;, and more recently that Flash <em>runs</em> or <em>doesn&#8217;t run</em> on this device or that device.  The word &#8220;Flash&#8221; is used interchangeably for both the authoring tool, the content that you create with it, and the plugin that displays that content to the end user.</p>
<p>The Adobe Flash software is also called an authoring <em>tool</em>, like a paintbrush or a table saw.  With it, you produce Flash content (games, video players, websites, etc), which a person usually views in a web browser using a plugin called the Flash <em>Player</em>.  Most often, when someone says you need to &#8220;download Flash&#8221;, he means you need to download the Flash Player <em>plugin</em> so that you can view Flash <em>content</em> that was created with the Flash <em>tool</em>.   What you&#8217;re downloading in the link above is the tool, which is sometimes called the Flash IDE (Integrated Development Environment).  i prefer &#8220;tool&#8221;, because it&#8217;s only one syllable, and &#8220;eye dee yee&#8221; is not kind to the ear.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_06/manyUsesOfFlash.jpg" alt="The Many Uses of the Term 'Flash'"></p>
<p>The term &#8220;Flash&#8221; has multiple uses.
</p></div>
<h2>2. Create and Save a New Actionscript 3 .fla File</h2>
<p>When you open the Flash authoring tool for the first time, you&#8217;ll likely see a splash screen.  To create a new file, etiher click &#8220;Create New Flash File (Actionscript 3.0)&#8221;, or go to File > New and choose Flash File (Actionscript 3.0) from the list, and click OK.</p>
<p>Your Flash file opens up and is displayed in all its glory &#8211; tons of interesting buttons and panels all over the screen.  Don&#8217;t be intimidated. We&#8217;ll explore them in future lessons.</p>
<p>Click File>Save As in the menus.  Flash files have the extension .fla.  Change the name of your Flash working file to myFirstGame.fla (or whatever you like), and save it to a folder somewhere on your computer.  Remember where you saved it!  i recommend against saving it to the desktop &#8211; if you want it there, first create a folder on the desktop called MyFirstGame, and save your .fla file in there.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_06/flashIDE.jpg" alt="Adobe Flash IDE"></p>
<p>Look at all this great STUFF to mess around with!  (note: Flash supports all kinds of different layouts &#8211; you may see something different on your screen depending on the version and layout you&#8217;re using)
</p></div>
<h2>3. Create a New FlashDevelop Project</h2>
<ol>
<li>Open FlashDevelop.
<li>In the menus, go to Project > New Project.
<li>Choose a name for your project in the Name field. (You can call it MyFirstGame.  Seems logical.)
<li>Use the Browse button to point to the MyFirstGame folder you created, where saved your .fla file in the last step.
<li>Click OK.
<li>If you get a message saying &#8220;The directory is not empty &#8230;&#8221;, click OK to confirm.
<li>If FlashDevelop asks you the Author name, type your own name or a suitable pseudonym, like &#8220;Cap&#8217;n CrackyPants&#8221;.  All of the code you write will be signed with this name.
<li>Click OK.
</ol>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_06/saveFlashDevelopProject.jpg" alt="Creating a new project in FlashDevelop"></p>
<p>Creating a new project in FlashDevelop
</p></div>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_06/flashDevelopAuthor.jpg" alt="FlashDevelop author prompt"></p>
<p>Señor Taco-Taker is like the Mexican Hamburglar
</p></div>
<p>When you&#8217;re finished, check out the Project Panel, at the right side of the screen. (If you can&#8217;t see it, click View > Project Manager in the menus.)  You&#8217;ll see your Project name, MyFirstGame.  Then you&#8217;ll see the .fla file you created in Flash, called myFirstGame.fla.  All of the code files you write to make your game will be listed here, along with any other files you place in the MyFirstGame folder.</p>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_06/flashDevelopProjectPanel.jpg" alt="FlashDevelop project panel"></p>
<p>FlashDevelop Project panel
</p></div>
<p>Behind the scenes, FlashDevelop creates an .as3proj file in the folder, which is a metadata file that keeps track of what goes into the folder.  Once you create your Project file, you never have to save it like you would most other files &#8211; you can just open and close different Project files, and they&#8217;ll list the stuff that&#8217;s in the folder with them.</p>
<h2>4. Link FlashDevelop to Flash</h2>
<p>The last thing to do is to make FlashDevelop aware of the Flash authoring tool so that the two can play nicely together.  </p>
<ol>
<li>In the menus, click Tools>Program Settings or press F10.
<li>Click ASCompletion in the sidebar list.
<li>Click in the field labeled &#8220;Path to Flash IDE&#8221;, and navigate to wherever you installed the Flash tool on your computer.  On my Windows system, it&#8217;s here:
<p>C:\Program Files\Adobe\Adobe Flash CS4</p>
<li>Click the Close button.
</ol>
<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2010_05_06/flashDevelopSettings.jpg" alt="FlashDevelop Settings"></p>
<p>FlashDevelop Settings
</p></div>
<h2>Finish</h2>
<p>That&#8217;s it &#8211; you&#8217;re done!  Now you&#8217;re ready to create Flash content using the one-two punch combo of Flash and FlashDevelop.</p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://www.untoldentertainment.com/blog/2010/05/06/cooking-with-flash-basic-flash-project-setup/" /></p><img src="http://www.untoldentertainment.com/blog/?ak_action=api_record_view&id=2504&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.untoldentertainment.com/blog/2010/05/06/cooking-with-flash-basic-flash-project-setup/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Tutorial: Clickify Your Twitter Feed in Flash</title>
		<link>http://www.untoldentertainment.com/blog/2010/02/24/tutorial-clickify-your-twitter-feed-in-flash/</link>
		<comments>http://www.untoldentertainment.com/blog/2010/02/24/tutorial-clickify-your-twitter-feed-in-flash/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 13:44:03 +0000</pubDate>
		<dc:creator>Ryan Henson Creighton</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.untoldentertainment.com/blog/?p=2230</guid>
		<description><![CDATA[


&#8220;Fwitter&#8221;.  Deal with it.

Our Pull Twitter Updates Into Flash tutorials (Part 1 and Part 2) continue to be popular! A few folks were asking how i had taken my Twitter feed and rigged it so that people&#8217;s Twitter names and links were clickable.  i promised to write tutorials on demand, so here we [...]]]></description>
			<content:encoded><![CDATA[<div class="displayed">
<p><img src="http://www.untoldentertainment.com/blog/img/2009_04_02/fwitter.jpg" alt="Fwitter">
</p>
<p>&#8220;Fwitter&#8221;.  Deal with it.
</p></div>
<p>Our <b>Pull Twitter Updates Into Flash</b> tutorials (<a href="http://www.untoldentertainment.com/blog/2009/04/02/tutorial-pull-twitter-updates-into-flash/">Part 1</a> and <a href="http://www.untoldentertainment.com/blog/2009/05/14/tutorial-twitter-updates-in-flash-part-2/">Part 2</a>) continue to be popular! A few folks were asking how i had taken my Twitter feed and rigged it so that people&#8217;s Twitter names and links were clickable.  i promised to write tutorials on demand, so here we go.</p>
<h2>Clickify Your Twitter Feed in Flash</h2>
<p>Here&#8217;s the process in pseudo-code:</p>
<ol>
<li>Take the chunk of text and split it up into individual words
<li>With each word, figure out if it starts with &#8220;@&#8221; or &#8220;http:&#8221;
<li>If it does, wrap it in html tags
<li>Re-assemble the string
<li>Set the re-constituted string as your dynamic text field&#8217;s htmlText property
</ol>
<p>So, let&#8217;s start with a simple chunk of Tweet text:</p>
<p>&#8220;Hey everyone &#8211; @untoldent&#8217;s blog is INCREDIBLE!  http://bit.ly/cXX06r&#8221;</p>
<blockquote><p>
Note: this is just a tweet i pulled at random from the Twittersphere.  It could have been anything.  But my blog is usually a trending topic at any given time of the day.</p></blockquote>
<p>We&#8217;ve got two things we want to make clickable: <a href="http://www.twitter.com/untoldent">@untoldent</a>, which should link to untoldent&#8217;s Twitter user page, and <a href="http://bit.ly/cXX06r">http://bit.ly/cXX06r</a>, which should take us to that webpage.</p>
<h2>Splitting the String</h2>
<p>The String class has a built-in method called split.  It takes an argument that lets us carve a string up, and the resulting fragments are put into an array.</p>
<p>So, for example, if we have a comma-delimited string:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> fraggles:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Gobo,Mokey,Wimbley,Boober,Red&quot;</span>;</pre></div></div>

<p>we can split it using the comma as a separator.  The resulting fragments are returned as an array.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> fraggles:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Gobo,Mokey,Wimbley,Boober,Red&quot;</span>;
<span style="color: #000000; font-weight: bold;">var</span> aFraggles:<span style="color: #0066CC;">Array</span> = fraggles.<span style="color: #0066CC;">split</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;,&quot;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// use the comma to split up the string</span>
&nbsp;
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>aFraggles.<span style="color: #0066CC;">length</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">// 5</span>
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>aFraggles<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// Wimbley</span>
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>aFraggles<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// Red</span></pre></div></div>

<p>So in the case of our Twitter string, we want to split it up into individual words. The thing that separates one word from another is the space character. So let&#8217;s use space as an argument to split up that string:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> aWords:<span style="color: #0066CC;">Array</span> = twitterString.<span style="color: #0066CC;">split</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; &quot;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// use the space character to split up the string</span></pre></div></div>

<blockquote><p>Note: the split method is slow, so use it sparingly.  There&#8217;s not a lot going on in our Twitter reader, so we can get away with it.</p></blockquote>
<p>Now let&#8217;s loop through each element in the aWords array &#8211; each word in the Twitter post &#8211; and determine if it&#8217;s a Twitter username (which starts with &#8220;@&#8221;), or a URL (which starts with &#8220;http:&#8221;).  We&#8217;ll create an empty string to hold our final output, and run each word through a separate method.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> finalString:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;&quot;</span>; <span style="color: #808080; font-style: italic;">// Create a new string to hold our final output</span>
<span style="color: #000000; font-weight: bold;">var</span> len:<span style="color: #0066CC;">int</span> = aWords.<span style="color: #0066CC;">length</span>; <span style="color: #808080; font-style: italic;">// store the length of the aWords array to speed up our loop</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// Loop through all of the words in our tweet:</span>
<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">int</span> = 0; i<span style="color: #66cc66;">&lt;</span>len; i++<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">var</span> word:<span style="color: #0066CC;">String</span> = aWords<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>; <span style="color: #808080; font-style: italic;">// Store an individual word in a variable</span>
    finalString += <span style="color: #ff0000;">&quot; &quot;</span> + checkWord<span style="color: #66cc66;">&#40;</span>word<span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// Run the word through a checkWord method, and tack the </span>
    <span style="color: #808080; font-style: italic;">// return value onto the end of our finalString (along with a space character, to space the words out)</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<blockquote><p>Note: We&#8217;re storing the length of aWords in a variable, instead of saying i<aWords.length.  This is because the Flash Player has to do more work to look up the length property of aWords every single time we loop.  You can speed up your loops a tiny bit by using this trick. </p></blockquote>
<p>Obviously, what&#8217;s missing is the all-important checkWord() method.  Let&#8217;s build that next.</p>
<h2>The checkWord() Method</h2>
<p>Our checkWord() method is going to do this, in pseudo-code:</p>
<ol>
<li>Accept a word
<li>If the word starts with &#8220;@&#8221; or &#8220;http:&#8221;, wrap it in href tags and return the string
<li>Otherwise, just return exactly what was passed in
</ol>
<p>To check if a string contains a certain other string, use the String.indexOf() method.  indexOf() will return the place in the string where the other string first appears.</p>
<p>For example, let&#8217;s find the indexOf the capital letter &#8220;W&#8221; in the string &#8220;NSFW&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> str:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;NSFW&quot;</span>;
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>str.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;W&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// 3</span></pre></div></div>

<p>The answer is 3, because &#8220;W&#8221; is at index 3 in the string.  (Remember that strings and arrays are 0-based &#8211; the first element is at index 0, the second element is at index 1, and so on.)</p>
<p>If the thing you&#8217;re looking for can&#8217;t be found anywhere in the string, the indexOf() method will return an index of -1:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> str:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;NSFW&quot;</span>;
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>str.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;pictures of adorable kittens&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// -1</span></pre></div></div>

<h2>Substring</h2>
<p>The last thing you need to know how to do is to grab just a piece of a string.  This is because the twitter name comes through with an @ symbol at the front, for example @untoldent.  But we need to link to http://www.twitter.com/untoldent.  Notice there&#8217;s no &#8220;@&#8221; in that URL.</p>
<p>We need to extract just the username from the string, without the &#8220;@&#8221;.  We can use the String.substr (substring) method to do that.</p>
<p>The way String.substr() works is that you pass it a start point and an end point, and it rips that section out of the string and returns it.</p>
<p>So, check it out:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> str:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;manboobs&quot;</span>;
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>str.<span style="color: #0066CC;">substr</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">7</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// boobs</span></pre></div></div>

<p>The letter at index 3 of &#8220;manboobs&#8221; is &#8220;b&#8221;.  (Remember &#8211; we start counting at zero.)  We rip the section out up to index 7, which is that last letter, &#8220;s&#8221;.  So what&#8217;s returned are the letters from index 3 to index 7 &#8211; &#8220;boobs&#8221;.</p>
<p>If you want to rip out a chunk of your string from a certain index point to the last letter in the string, you can use the String.length property.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> str:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;manboobs&quot;</span>;
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>str.<span style="color: #0066CC;">substr</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span>,str.<span style="color: #0066CC;">length</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// boobs</span></pre></div></div>

<p>If you&#8217;re on high alert and paying really close attention, you&#8217;ll notice that str.length takes us one index point past the end of our string.  (&#8220;manboobs&#8221; is 8 characters long, and there IS no letter at index 8.)  Flash just ignores us if we try to grab more of the string than actually exists.  So technically, this is also valid:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> str:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;manboobs&quot;</span>;
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>str.<span style="color: #0066CC;">substr</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">5000</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// boobs</span></pre></div></div>

<p>Armed with this knowledge, we can build our checkWord() method.</p>
<h2>Let&#8217;s Do This Thing</h2>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> checkWord<span style="color: #66cc66;">&#40;</span>word:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">String</span>
<span style="color: #66cc66;">&#123;</span>
&nbsp;
   <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>word.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;http:&quot;</span><span style="color: #66cc66;">&#41;</span> == 0<span style="color: #66cc66;">&#41;</span>
   <span style="color: #66cc66;">&#123;</span>
         <span style="color: #808080; font-style: italic;">// This word starts with &quot;http:&quot; at index 0 (the beginning of the word)</span>
&nbsp;
         <span style="color: #808080; font-style: italic;">// Wrap it in html href (anchor) tags:</span>
         <span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;&lt;a href='&quot;</span> + word + <span style="color: #ff0000;">&quot;'&gt;&quot;</span> + word + <span style="color: #ff0000;">&quot;&lt;/a&gt;&quot;</span>;
   <span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>word.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;@&quot;</span><span style="color: #66cc66;">&#41;</span> == 0<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
         <span style="color: #808080; font-style: italic;">// This word starts with &quot;@&quot; at index 0 (the beginning of the word)</span>
&nbsp;
         <span style="color: #000000; font-weight: bold;">var</span> justTheName:<span style="color: #0066CC;">String</span> = word.<span style="color: #0066CC;">substr</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, word.<span style="color: #0066CC;">length</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// Remove the &quot;@&quot; from the username</span>
         <span style="color: #808080; font-style: italic;">// We do this because we need to link to http://www.twitter.com/untoldent (for example),</span>
         <span style="color: #808080; font-style: italic;">// not http://www.twitter.com/@untoldent</span>
&nbsp;
         <span style="color: #808080; font-style: italic;">// Wrap it in html href (anchor) tags:</span>
         <span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;&lt;a href='http://www.twitter.com/&quot;</span> + justTheName + <span style="color: #ff0000;">&quot;'&gt;&quot;</span> + word + <span style="color: #ff0000;">&quot;&lt;/a&gt;&quot;</span>;
   <span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #808080; font-style: italic;">// There's nothing special about this word.  Return it as-is.</span>
        <span style="color: #b1b100;">return</span> word;
   <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<blockquote><p>Note: Did you notice the use of single quotation marks and double quotation marks?  You need to wrap you url in quotes, but since we&#8217;re already using double-quotation marks around our string, we need to use single-quotation marks to wrap the url, or they&#8217;ll interrupt our string definition and screw things up.</p></blockquote>
<h2>The Money Shot</h2>
<p>So far, we&#8217;ve turned this:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #ff0000;">&quot;Hey everyone - @untoldent's blog is INCREDIBLE!  http://bit.ly/cXX06r&quot;</span></pre></div></div>

<p>into this:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #ff0000;">&quot;Hey everyone - &lt;a href='http://www.twitter.com/untoldent'&gt;@untoldent's&lt;/a&gt; blog is INCREDIBLE!  &lt;a href=''&gt;http://bit.ly/cXX06r&lt;/a&gt;&quot;</span></pre></div></div>

<p>The very last step is to use the htmlText property of your dynamic text box and stuff it with that fancy new string.  Assuming you have a dynamic text box called twitterTxt, do this:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;">twitterTxt.<span style="color: #0066CC;">htmlText</span> = finalString;</pre></div></div>

<p>You&#8217;ll now have clickable links inside your text field.</p>
<h2>Extra Credit</h2>
<p>If you&#8217;re super-astute, you&#8217;ve noticed that this code won&#8217;t actually work!  That&#8217;s because the Twitter string says &#8220;@untoldent&#8217;s&#8221;, not &#8220;@untoldent&#8221;.  The apostrophe-s is going to screw your code up, because you&#8217;ll be linking to http://www.twitter.com/untoldent&#8217;s, which is not a valid URL.</p>
<p>Using what you&#8217;ve learned in this tutorial, can you augment your checkWord() method to detect a &#8220;&#8217;s&#8221; at the end of a Twitter user name and rip it out?</p>
<h2>Further Reading</h2>
<p>i hope this tutorial was informative and helpful!  For more Actionscript and Flash tutorials, thrill to our <a href="http://www.untoldentertainment.com/blog/flash-and-actionscript-911/">Flash and Actionscript  911</a> book.</p>
<p class="fbconnect_share"><fb:share-button class="url" href="http://www.untoldentertainment.com/blog/2010/02/24/tutorial-clickify-your-twitter-feed-in-flash/" /></p><img src="http://www.untoldentertainment.com/blog/?ak_action=api_record_view&id=2230&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.untoldentertainment.com/blog/2010/02/24/tutorial-clickify-your-twitter-feed-in-flash/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
	</channel>
</rss>
