<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9104039768862242324</id><updated>2011-09-27T09:19:53.854-07:00</updated><title type='text'>Flash Tricks</title><subtitle type='html'>Flash tutorials, tips and tricks for animators</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-6020397108613898782</id><published>2008-12-09T22:47:00.000-08:00</published><updated>2008-12-09T23:01:03.969-08:00</updated><title type='text'>FLA's for Sale</title><content type='html'>So my tutorials haven't been coming out as soon as I hoped, and part of the reason is that it's hard to dedicate the time needed to make a good tutorial for you when there's not much in it for me.&lt;br /&gt;&lt;br /&gt;So I'm going to try something here.  The tutorials will always be free, but if you'd like, you can buy the FLA file so that you can really see what it is I'm doing (right now, the files are only available for CS3 and up, but if you're interested in older versions, let me know).&lt;br /&gt;&lt;br /&gt;Each file is 3 bucks, through PayPal, and then I'll e-mail you a .zip of the file you purchased.  The price seems pretty reasonable, and honestly the best way I've found to learn Flash is to look at the files of people who know what they're doing.&lt;br /&gt;&lt;br /&gt;The tutorials with FLA's available so far are&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flashtrick.blogspot.com/2007/10/walk-cycles-right-way.html"&gt;The Walk Cycle Tutorial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flashtrick.blogspot.com/2007/12/water-cycle-tutorial.html"&gt;The Water Cycle Tutorial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flashtrick.blogspot.com/2007/11/using-symbols-to-clean-up-traditional.html"&gt;Using Symbols to Animate Traditionally&lt;/a&gt;&lt;br /&gt;&lt;a href="http://flashtrick.blogspot.com/2007/05/perspective-in-flash.html"&gt;&lt;br /&gt;Perspective in Flash&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flashtrick.blogspot.com/2007/07/adding-horizontal-and-veritcle-movement.html"&gt;The Dolly Shot Tutorials&lt;/a&gt; (different FLA's are included for part 1 and 2)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flashtrick.blogspot.com/2007/05/multiplaning-looping-panning.html"&gt;The Looping Pan and Multiplane Pan Tutorials&lt;/a&gt; (different FLA's are included for the pan and the multiplane pan)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-6020397108613898782?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/6020397108613898782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=6020397108613898782' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/6020397108613898782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/6020397108613898782'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2008/12/flas-for-sale.html' title='FLA&apos;s for Sale'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-1442052919984349570</id><published>2008-08-20T11:11:00.000-07:00</published><updated>2008-08-20T11:24:17.107-07:00</updated><title type='text'>Tutorials Coming Soon</title><content type='html'>After working with beginner animators in &lt;a href="http://adamisinmalaysia.blogspot.com"&gt;Malaysia &lt;/a&gt;for six months, I have a bunch of ideas for tutorials.  There's stuff to cover regarding basic Flash workflow tricks,  creating Flash friendly characters, setting up your scene in Flash to animate, approaches to animating a Flash character, effectively using embedded symbols and the list goes on and on.&lt;br /&gt;&lt;br /&gt;I can cover these in any order so if you have a preference, post a comment.  Also if there's something you'd like to be covered, let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-1442052919984349570?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/1442052919984349570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=1442052919984349570' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/1442052919984349570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/1442052919984349570'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2008/08/tutorials-coming-soon.html' title='Tutorials Coming Soon'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-4945350309190545511</id><published>2007-12-21T17:39:00.000-08:00</published><updated>2008-12-09T22:45:52.828-08:00</updated><title type='text'>Water Cycle Tutorial</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes the more complex water cycle shown in the swf bellow.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1783875" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (76kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (76kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt;Here is a swf of the type of water animation this tutorial covers.&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="270" height="360"&gt;&lt;br /&gt;&lt;param name="movie" value="water.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/water/water.swf" width="360" height="270"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;And as a special treat, I made this lesson a video tutorial.&lt;br /&gt;&lt;a href="http://www.adamsacks.com/water/watercycle.html"&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;CLICK HERE TO WATCH!&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's my first video tutorial, so any feedback on what I could do better in the future would be appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-4945350309190545511?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/4945350309190545511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=4945350309190545511' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/4945350309190545511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/4945350309190545511'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/12/water-cycle-tutorial.html' title='Water Cycle Tutorial'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-8894799230722981798</id><published>2007-11-17T12:09:00.001-08:00</published><updated>2008-12-09T22:45:28.187-08:00</updated><title type='text'>Using Symbols to Clean Up Traditional Animation in Flash</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes the final line work for the example bellow so you can see exactly how I used the symbol to draw the heads.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784382" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (2.1 meg)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (2.1 meg)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;There are no rules for how you animate in Flash.  Most people limit their drawings and just move stuff around because it's fast and easy to get something moving.   I'm not going to go into this subject further, I've already written about it &lt;a href="http://adamsacks.blogspot.com/2007/10/in-defense-of-moving-crap-around-in.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But you can use Flash to do completely traditional hand drawn animation.  My favorite example is &lt;a href="http://www.mistercoo.com/"&gt;Mr. Coo&lt;/a&gt;.  And if you're too lazy to follow that link, PLEASE at least watch this YouTube Clip.&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6dRZUNmQIgk&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/6dRZUNmQIgk&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Okay, on to the tutorial.  While you can traditionally animate in Flash, you can also use symbols to make the process of cleaning up your work easier.  But first let me make one thing clear, when you're roughing out your animation, DON'T USE SYMBOLS.  Your main concern should be movement, so draw rough and loose on the stage.  You do need to be thinking about overall proportions (or else clean up will be hell),  but not get stuck on small things like the exact placement of the nostrils.&lt;br /&gt;&lt;br /&gt;Here's an example of some rough animation I was given to clean up.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="360" height="270"&gt;&lt;br /&gt;&lt;param name="movie" value="rough.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/rough.swf" width="360" height="270"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;This was all just paint on the stage. No Symbols.  I don't actually know who animated this, but they did all the hard work for me.  The only part that was going to take some time was cleaning up the head.  It's rotating a lot, and moving around all over the screen, meaning if I'm cleaning up the head on frame 25, it'd be really hard for me to compare it with the head I've already drawn on frame 21, or frame 5 etc etc.&lt;br /&gt;&lt;br /&gt;If only there was some way to keep the head stationary...But wait, there is!&lt;br /&gt;&lt;br /&gt;You do your clean up of the head inside a symbol, then out on the stage, you go to the next frame, move the symbol to the new head's position, rotate and scale the symbol  so that the axis and size of the old head matches the axis and size of the new head you're about to draw, go inside the symbol, and clean it up that way.  Now when you want to check your head proportions and masses, your old head is right there, making it much easier to keep your heads consistent.&lt;br /&gt;&lt;br /&gt;Here are a few shots of my clean up frames, with the head symbol selected, so you can see how I moved the symbol around.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/Rz9QWzqDslI/AAAAAAAAAW0/vo8TwT1NBaM/s1600-h/c1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/Rz9QWzqDslI/AAAAAAAAAW0/vo8TwT1NBaM/s320/c1.jpg" alt="" id="BLOGGER_PHOTO_ID_5133910452979610194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/Rz9QXDqDsmI/AAAAAAAAAW8/ycWWwtvynU4/s1600-h/c2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/Rz9QXDqDsmI/AAAAAAAAAW8/ycWWwtvynU4/s320/c2.jpg" alt="" id="BLOGGER_PHOTO_ID_5133910457274577506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/Rz9QXTqDsnI/AAAAAAAAAXE/6NKLCVuZ99s/s1600-h/c3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/Rz9QXTqDsnI/AAAAAAAAAXE/6NKLCVuZ99s/s320/c3.jpg" alt="" id="BLOGGER_PHOTO_ID_5133910461569544818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/Rz9QXTqDsoI/AAAAAAAAAXM/wHifAY9JmMs/s1600-h/c4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/Rz9QXTqDsoI/AAAAAAAAAXM/wHifAY9JmMs/s320/c4.jpg" alt="" id="BLOGGER_PHOTO_ID_5133910461569544834" border="0" /&gt;&lt;/a&gt;And here's a screen grab of me inside the head symbol.  As you can see, I also put a quick trace of the 3/4 model head on a guide layer in the symbol, so that I could reference it for proportions as I was drawing my new heads.  For those of you who don't know, you can put anything you want on a guide layer because it won't show up once you're outside of the symbol.&lt;br /&gt;&lt;br /&gt;Also the drawing is on a few layers, because I animated his whiskers separate from the rest of his head, and for the last few frames there are three layers because I animated his hair separate from the head and whiskers.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/Rz9QXjqDspI/AAAAAAAAAXU/UpUNyfn18NE/s1600-h/head.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/Rz9QXjqDspI/AAAAAAAAAXU/UpUNyfn18NE/s320/head.jpg" alt="" id="BLOGGER_PHOTO_ID_5133910465864512146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So here is what the head symbol looks like all by itself.  (I've slowed it down to 15 frames per second so you can actually see the drawings).&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="360" height="270"&gt;&lt;br /&gt;&lt;param name="movie" value="head.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/head.swf" width="360" height="270"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now you'll notice I didn't actually keep the head sizes consistent inside the symbol.  I would have liked to, but our clean up technique required a really thin line weight, so massively scaling up and down the head symbol to keep everything the same size would have resulted in inconsistencies in line thicknesses between frames.&lt;br /&gt;&lt;br /&gt;And here is the final cleaned up animation.  It's not perfect, I had a day to clean this whole thing so I was moving really quickly and made some bad choices in terms of how far the head should rotate in each frame.  And the hair is a bit of a mess, I didn't have time to figure out a good flow for it.  Also the final linework wasn't actually red, I just made it that way so that it would stand out a bit more from the background, since the line weight is so thin.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="360" height="270"&gt;&lt;br /&gt;&lt;param name="movie" value="clean.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/clean.swf" width="360" height="270"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;And once more: I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes the final line work so you can see exactly how I used the symbol to draw the heads.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784382" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (2.1 meg)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (2.1 meg)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/form&gt;A quick note.  I did this clean up for the studio &lt;a href="http://dancingdiablo.com/Home.html"&gt;Dancing Diablo&lt;/a&gt;, for a Bronx Zoo commercial.  My friend &lt;span class="postbody"&gt;&lt;a href="http://dtforgione.blogspot.com/"&gt;Dan Forgione&lt;/a&gt; animated most of the spots, and they came out really great.  &lt;/span&gt;After being animated in Flash, each frame was exported as a PNG and colored in Painter. &lt;a href="http://reggiebackgrounds.blogspot.com/"&gt;Reginald Butler&lt;/a&gt; was the lead painter and also did an amazing job.&lt;br /&gt;&lt;br /&gt;If you want to see some finished shots, Dan put a bunch on his reel &lt;a href="http://www.danforgione.com/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;span class="postbody"&gt;&lt;br /&gt;And while we're giving credit, they were directed by Dancing Diablo CEO/ Creative Director, Beatriz Helena Ramos, produced by Joellen Marlow, and commissioned by the advertising agency Deutsch, Inc. &lt;/span&gt;&lt;span class="postbody"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-8894799230722981798?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/8894799230722981798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=8894799230722981798' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/8894799230722981798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/8894799230722981798'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/11/using-symbols-to-clean-up-traditional.html' title='Using Symbols to Clean Up Traditional Animation in Flash'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_RAtqBrNNCnk/Rz9QWzqDslI/AAAAAAAAAW0/vo8TwT1NBaM/s72-c/c1.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-4424567517258201733</id><published>2007-10-27T19:25:00.001-07:00</published><updated>2008-12-09T22:44:44.398-08:00</updated><title type='text'>Walk Cycles: The Right Way.</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: I am now offering this tutorial's FLA for 3 dollars through PayPal.  Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well.  The FLA includes the walk cycle symbol, the leg sketch layers and the elf walk cycle that I show at the bottom of this tutorial.&lt;/span&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784358" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (1.8 meg)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (1.8 meg)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;Before we begin, a quick note.  This tutorial isn't about walk cycle theory.  I'm assuming you already know that part.  If you don't, go buy &lt;a href="http://www.amazon.com/Animators-Survival-Kit-Principles-Classical/dp/0571202284/ref=pd_bbs_sr_1/002-2680004-1168032?ie=UTF8&amp;amp;s=books&amp;amp;qid=1193718474&amp;amp;sr=8-1"&gt;Richard Williams's Animator's Survival Kit&lt;/a&gt;. My goal is to show you ways to use Flash that make it easier to create a good cycle, in regards to solid foot placement and consistent speed--two things that I've seen lacking in many Flash animated walk cycles.&lt;br /&gt;&lt;br /&gt;There are two ways to approach a walk cycle.&lt;br /&gt;&lt;br /&gt;You can draw it with your character standing in place, or with the character moving across the screen (or page, but this is a flash tutorial, so I'll stick with screen).&lt;br /&gt;&lt;br /&gt;Making a walk cycle with character staying in place is a TERRIBLE way to do a walk cycle. It might look okay when it's on that invisible treadmill, but if you want the character to move across the screen,  either the feet are going to slide on the ground (a huge pet peeve of mine), or, if you plant the feet, the movement of the character will be jerky.  I worked with a guy who spent a loooong time making his walk cycle "perfect" but once he got the character off that treadmill, and tried planting the feet, it was a disaster.  And I've certainly been guilty of this mistake myself.  Here is my first walk cycle I ever did in my life (for an introduction to Flash class in college).  The design is so ugly that I'm only showing you the ugly hips and legs.&lt;br /&gt;&lt;br /&gt;Here is the walk cycle on the treadmill.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="275" height="200"&gt;&lt;br /&gt;&lt;param name="movie" value="bad01.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/bad01.swf" width="275" height="200"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;And here is it moving across the screen, with his feet planted.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="275" height="200"&gt;&lt;br /&gt;&lt;param name="movie" value="bad02.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/bad02.swf" width="275" height="200"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Yuck.  When you walk you have a consistent speed, but this guy's pace is all over the place.&lt;br /&gt;&lt;br /&gt;The right way to animate a walk cycle is to have the character moving in space.  Working this way, it's easy to keep the feet planted and the speed consistent.  But a lot of people avoid this method because it's hard to keep a character's volumes consistent when it's moving through space.&lt;br /&gt;&lt;br /&gt;But using Flash, I came up with a way to combine the two techniques, and get the best of both worlds.  For simplicity's sake, I'm going to do a super boring, torso and legs only, Richard Williams walk cycle, but once you get this technique down, you can alter it and get interesting walks from it as well.&lt;br /&gt;&lt;br /&gt;First, draw your torso and head.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RyP2_JHgClI/AAAAAAAAAUA/q6GmWO3liT4/s1600-h/01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RyP2_JHgClI/AAAAAAAAAUA/q6GmWO3liT4/s320/01.jpg" alt="" id="BLOGGER_PHOTO_ID_5126212365517326930" border="0" /&gt;&lt;/a&gt;Now make this drawing a symbol (I called mine Walkcycle because I'm original), and put the head and torso on separate layers.  Also make this symbol as long as your walk cycle will be.  Mine repeats the first pose at frame 17, so I make mine 17 frames long.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RyP2_ZHgCmI/AAAAAAAAAUI/aAaVmSX8sfI/s1600-h/02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RyP2_ZHgCmI/AAAAAAAAAUI/aAaVmSX8sfI/s320/02.jpg" alt="" id="BLOGGER_PHOTO_ID_5126212369812294242" border="0" /&gt;&lt;/a&gt;Go back out to the stage.  Move your symbol over to the left.  Decide how far your character will go in two steps, and key out that length at the frame number where your loop repeats (frame 17 for me).  Then create a motion tween, and make sure there is NO EASING on the tween.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RyP43pHgCqI/AAAAAAAAAUo/JT3bOmnAOQ0/s1600-h/03.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RyP43pHgCqI/AAAAAAAAAUo/JT3bOmnAOQ0/s320/03.jpg" alt="" id="BLOGGER_PHOTO_ID_5126214435691563682" border="0" /&gt;&lt;/a&gt;The motion tween gives us perfectly equal spacing for each frame of our walk.  Now for my cycle, I'm going to start with the two contact poses.  The first contact pose happens on frame 1 and frame 17.  The second contact pose happens on frame 9.  So go to frame 9 and add a keyframe.  Then remove the motion tweens.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RyP435HgCrI/AAAAAAAAAUw/tXrnSd1kbxI/s1600-h/04.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RyP435HgCrI/AAAAAAAAAUw/tXrnSd1kbxI/s320/04.jpg" alt="" id="BLOGGER_PHOTO_ID_5126214439986530994" border="0" /&gt;&lt;/a&gt;Now we need to worry about the legs, so make a new layer underneath your torso layer, and label it Sketch.  We'll be doing rough drawings on this layer.&lt;br /&gt;&lt;br /&gt;I start by drawing the legs for the first contact pose on the sketch layer.  This pose is the same as the pose for frame 17, so I copy the frame, paste it on frame 17, and line it up with the torso there.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RyP2_5HgCpI/AAAAAAAAAUg/r6ldw4Qbjq0/s1600-h/05.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RyP2_5HgCpI/AAAAAAAAAUg/r6ldw4Qbjq0/s320/05.jpg" alt="" id="BLOGGER_PHOTO_ID_5126212378402228882" border="0" /&gt;&lt;/a&gt;Now move to frame 9, and sketch out your contact pose there.  Since we've already sketched the first and third contact, it's very easy to see where the feet go for the second contact.  If you find that your second contact pose is more compact or wide than you like, just go alter the first pose, and that should fix your problem.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RyP6NJHgCsI/AAAAAAAAAU4/RlhdYeHjeF4/s1600-h/06.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RyP6NJHgCsI/AAAAAAAAAU4/RlhdYeHjeF4/s320/06.jpg" alt="" id="BLOGGER_PHOTO_ID_5126215904570378946" border="0" /&gt;&lt;/a&gt;Now our breakdown poses are on frame 5 and 13.  In a standard walk this is our pass position, where the back leg now becomes the front leg.  The first thing we want to get is the horizontal position for this pose, so motion tween your symbol, and add keyframes at frame 5 and 13.  Then remove the motion tween.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RyP6NZHgCtI/AAAAAAAAAVA/GWU6iMhJPp4/s1600-h/07.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RyP6NZHgCtI/AAAAAAAAAVA/GWU6iMhJPp4/s320/07.jpg" alt="" id="BLOGGER_PHOTO_ID_5126215908865346258" border="0" /&gt;&lt;/a&gt;We bounce when we walk, so we need some vertical motion as well.  To do this, go inside your walk cycle symbol and move the head and torso up a bit at frames 5 and 13.  Also, make sure to rekey your head and torsos at frame 9 and 17 to their original height.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RyP6NZHgCuI/AAAAAAAAAVI/pQd-hHPr0FM/s1600-h/08.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RyP6NZHgCuI/AAAAAAAAAVI/pQd-hHPr0FM/s320/08.jpg" alt="" id="BLOGGER_PHOTO_ID_5126215908865346274" border="0" /&gt;&lt;/a&gt;Go back out on the stage, and, on the sketch layer, draw your legs for the pass position.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RyP6NpHgCvI/AAAAAAAAAVQ/te-BuSrEncI/s1600-h/09.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RyP6NpHgCvI/AAAAAAAAAVQ/te-BuSrEncI/s320/09.jpg" alt="" id="BLOGGER_PHOTO_ID_5126215913160313586" border="0" /&gt;&lt;/a&gt;And now you should have an animation like this&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="360" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="walk02.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/walk02.swf" width="360" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Not the most exciting walk, but you get the idea. Next comes the inbetweens.  Let's start with the the up positions on frames 7 and 15.  Make your motion tweens, key out the walk cycle symbol at frames 7 and 15.  Remove the tweens, go inside the walk cycle symbol and adjust the torso and head to be at their highest position.  Then go out on the stage and sketch your legs.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RyP6NpHgCwI/AAAAAAAAAVY/HWLu0NLC-Yw/s1600-h/10.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RyP6NpHgCwI/AAAAAAAAAVY/HWLu0NLC-Yw/s320/10.jpg" alt="" id="BLOGGER_PHOTO_ID_5126215913160313602" border="0" /&gt;&lt;/a&gt;Then do the same thing for the down position at frames 3 and 11.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RyP92ZHgCxI/AAAAAAAAAVg/6pZbXlmOCVM/s1600-h/11.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RyP92ZHgCxI/AAAAAAAAAVg/6pZbXlmOCVM/s320/11.jpg" alt="" id="BLOGGER_PHOTO_ID_5126219911774866194" border="0" /&gt;&lt;/a&gt;And let's see what we got here.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="360" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="walk04.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/walk04.swf" width="360" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Okay so now we have the right leg positions for our walk.  But chances are, your leg volumes are inconsistent (mine sure are).  To fix this, we do our leg clean ups INSIDE the walk symbol.  This way we use our original sketch as reference for the correct foot position, but when when we're inside the symbol, our torso isn't moving, so it much easier to compare the volumes of each leg.  This is basically the Flash version of a traditional animation technique, which was explained really well by the disgustingly young and talented Matt Williames on his blog &lt;a href="http://handdrawnnomadzone.blogspot.com/2007/09/new-tutorial-solidityturning-trick.html"&gt;Hand Drawn Nomad Zone&lt;/a&gt;.  (working professionally for Warner Brothers at age 14????)&lt;br /&gt;&lt;br /&gt;So go inside your walk cycle symbol, and create two new layers, one for each leg.   Then at frame one, go inside your symbol and draw your cleaned up leg.  Move to frame 3 on the stage, go inside the symbol and clean up those legs etc etc.  I cleaned up one leg at a time, and worked straight ahead.  This helped me keep track of things like the spot where the leg connects to the hip, and the angle of the thighs and shins. I would also start the clean drawing with the rough visible, but then turn off the rough to finish the clean drawing on it's own.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RyP92pHgCyI/AAAAAAAAAVo/GALRcG4RiCo/s1600-h/12.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RyP92pHgCyI/AAAAAAAAAVo/GALRcG4RiCo/s320/12.jpg" alt="" id="BLOGGER_PHOTO_ID_5126219916069833506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When you're done, you'll have a walk that moves through space, but also one that can be stationary, if you keep the symbol stationary. Here's my "final".  For yours, I would recommend at least adding arms and a head bounce.  And if you're really good, you'll also redraw the torso and hips so that they twist in space and don't look like  the super lame stiff animation that gives Flash it's bad reputation.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="360" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="walk06.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/walk06.swf" width="360" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Now you probably want more than two steps out of your cycle.  To do this, on the stage, copy your frames, and on a new layer paste them starting on frame 17.  Then using the edit multiple frames option, move these newly pasted frames so that they start where the bottom layer stops.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RyP925HgCzI/AAAAAAAAAVw/5jdyX9o6DLk/s1600-h/13.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RyP925HgCzI/AAAAAAAAAVw/5jdyX9o6DLk/s320/13.jpg" alt="" id="BLOGGER_PHOTO_ID_5126219920364800818" border="0" /&gt;&lt;/a&gt;Now move the top layer frames down into the bottom layer.  Then go inside the walk cycle symbol, copy all the frames, and paste them starting at frame 17, so that now your walk cycle is 33 frames long.  Then go back out to the stage, select all your frames, right click and select Synchronize Symbols.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RyP925HgC0I/AAAAAAAAAV4/K4wQ6AoaOR4/s1600-h/14.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RyP925HgC0I/AAAAAAAAAV4/K4wQ6AoaOR4/s320/14.jpg" alt="" id="BLOGGER_PHOTO_ID_5126219920364800834" border="0" /&gt;&lt;/a&gt;And you can keep doing this as long as you want, to make any length walk cycle you desire.  Here's my walk cycle moving across the whole stage.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="360" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="walk07.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/walk07.swf" width="360" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;Again, this walk cycle is REALLY boring, I know.  But you can do more interesting ones using the same basic technique.  Here's one I did last year.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="180"&gt;&lt;br /&gt;&lt;param name="movie" value="elf.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/elf.swf" width="320" height="180"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;And once more, I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes the walk cycle symbol, the leg sketch layers and the elf walk cycle.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784358" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (1.8 meg)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (1.8 meg)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-4424567517258201733?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/4424567517258201733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=4424567517258201733' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/4424567517258201733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/4424567517258201733'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/10/walk-cycles-right-way.html' title='Walk Cycles: The Right Way.'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_RAtqBrNNCnk/RyP2_JHgClI/AAAAAAAAAUA/q6GmWO3liT4/s72-c/01.jpg' height='72' width='72'/><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-9010418688608734880</id><published>2007-08-24T08:41:00.001-07:00</published><updated>2007-08-24T08:46:29.422-07:00</updated><title type='text'>Combining Flash and Illustrator</title><content type='html'>Here's a &lt;a href="http://www.studiosb3.com/temp/custom-brushes02.html"&gt;great tutorial&lt;/a&gt; on combining Flash and Illustrator using custom brushes.&lt;br /&gt;&lt;br /&gt;Also, something is wrong with my server, so none of the swf examples in my tutorials are playing right now.  Hopefully this will be fixed soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-9010418688608734880?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/9010418688608734880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=9010418688608734880' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/9010418688608734880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/9010418688608734880'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/08/combining-flash-and-illustrator.html' title='Combining Flash and Illustrator'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-2963947301997748697</id><published>2007-08-12T23:24:00.000-07:00</published><updated>2007-08-12T23:41:59.938-07:00</updated><title type='text'>A few links</title><content type='html'>I haven't had Internet access at home for the past three weeks, so I didn't make any new tutorials.  I've got a couple planned out, now I just need to make them happen.&lt;br /&gt;&lt;br /&gt;In the mean time, here are some links to Flash tutorials I've found useful.&lt;br /&gt;&lt;br /&gt;Dave E. Phillips made two great (and related) tutorials, one on &lt;a href="http://www.humbleego.com/site/blog/?p=33" target="_window"&gt;Staggered Timing&lt;/a&gt; and the other on &lt;a href="http://www.humbleego.com/site/blog/?p=45" target="_window"&gt;Simple Vibrations&lt;/a&gt;.  You should check out the &lt;a href="http://www.humbleego.com/site/blog/" target="_window"&gt;rest of his blog&lt;/a&gt; too, he's really good.&lt;br /&gt;&lt;br /&gt;If you ever made something in Flash thinking it would only be on the web, and later find out that it has to have TV safe colors, Stephen M. Levinson made a PDF showing an &lt;a href="http://www.stephenstudios.com/ntsc.pdf" target="_window"&gt;ingenious trick&lt;/a&gt; to make your colors NTSC safe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-2963947301997748697?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/2963947301997748697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=2963947301997748697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/2963947301997748697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/2963947301997748697'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/08/few-links.html' title='A few links'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-7632632262048706037</id><published>2007-07-16T17:11:00.001-07:00</published><updated>2008-12-09T22:44:15.927-08:00</updated><title type='text'>Adding Horizontal and Veritcal Movement to Your Dolly Shot</title><content type='html'>This is a continuation of my last tutorial covering &lt;a href="http://flashtrick.blogspot.com/2007/07/heres-technique-for-getting-effective.html" target="_window"&gt;multiplaning dolly shots.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes both the standard dolly shot example and the dolly shot with added vertical and horizontal movement.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784439" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (844 kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (844 kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;One quick note. For this tutorial, we're going back one step from the last example. In the last tutorial I nested all the motion tweens into one symbol. For this tutorial, I broke them out of that overall symbol, so the stage looks like this&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RpwMQyTyxdI/AAAAAAAAARo/gnF_ZzRi19w/s1600-h/01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RpwMQyTyxdI/AAAAAAAAARo/gnF_ZzRi19w/s320/01.jpg" alt="" id="BLOGGER_PHOTO_ID_5087955161544050130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And it plays like this&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoom2_01.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoom2_01.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Let's say you're not happy with a simple push in.  What if you want the camera to also track left and right, up and down?  It's actually not that hard, and in fact, the best thing you could have done was to first create the dolly in.  When you make a keyframe in Flash, that key holds information about the symbols horizontal and vertical placement, as well as its scale and rotation. If you want to make a complex move that effects many of these aspects, but you want these aspects to move independently of each other, you need to make different motion tweens to effect each aspect.  And you do that by nesting motion tweens.&lt;br /&gt;&lt;br /&gt;So what we have on the stage here are motion tweens that effect each of these symbol's scale.  I next want to effect the horizontal position of each symbol, but in order to not mess with the scaling of each symbol, I use &lt;a href="http://www.coldhardflash.com/images/flash101.swf" target="_window"&gt;the Pringle&lt;/a&gt; to nest each tween into a new symbol, leaving me with a stage that looks like this.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RpwMQyTyxeI/AAAAAAAAARw/mlLGxXmHz88/s1600-h/02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RpwMQyTyxeI/AAAAAAAAARw/mlLGxXmHz88/s320/02.jpg" alt="" id="BLOGGER_PHOTO_ID_5087955161544050146" border="0" /&gt;&lt;/a&gt;Now when I key horizontal movements on these new symbols, it doesn't affect the nested motion tweens that control scaling.&lt;br /&gt;&lt;br /&gt;So I want the camera to start off more to the left, then move to the right, and then back to the left, with the framing ending on the boy's face favoring his right eye.  To do this, first I make keyframes on all layers at frame 1, frame 40 and frame 60.  Next I adjust their horizontal placement, keeping in mind that the closer to the foreground an element is, the more it should move.&lt;br /&gt;&lt;br /&gt;To keep all of my units of movement the same, I turn off the work area, and view the stage at one hundred percent.  At frame 1 I make the following layer adjustments&lt;br /&gt;&lt;ul&gt;&lt;li&gt;super_fg: Move Right 160 (shift+right arrow 16 times)&lt;/li&gt;&lt;li&gt;fg: Right 120&lt;/li&gt;&lt;li&gt;boy: Right 80&lt;/li&gt;&lt;li&gt;bg: Right 40&lt;/li&gt;&lt;li&gt;extreme_bg: Right 20&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;At frame 40, this is what I do:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;super_fg: Left 80&lt;br /&gt;&lt;/li&gt;&lt;li&gt;fg: Left 60&lt;/li&gt;&lt;li&gt;boy: Left 40&lt;/li&gt;&lt;li&gt;bg: Left 20&lt;/li&gt;&lt;li&gt;extreme_bg: Left 10&lt;/li&gt;&lt;/ul&gt; And Frame 60&lt;br /&gt;&lt;ul&gt;&lt;li&gt;super_fg: Right 320&lt;/li&gt;&lt;li&gt;fg: Right 270&lt;/li&gt;&lt;li&gt;boy: Right 180&lt;/li&gt;&lt;li&gt;bg: Right 90&lt;/li&gt;&lt;li&gt;extreme_bg: Right 40&lt;/li&gt;&lt;/ul&gt; Here's the screen shot&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RpwMRCTyxfI/AAAAAAAAAR4/9yoGafIO3sY/s1600-h/03.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RpwMRCTyxfI/AAAAAAAAAR4/9yoGafIO3sY/s320/03.jpg" alt="" id="BLOGGER_PHOTO_ID_5087955165839017458" border="0" /&gt;&lt;/a&gt;And here's what that looks like&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoom2_02.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoom2_02.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;The left and right movement is a little jerky so using the &lt;a href="http://flashtrick.blogspot.com/2007/05/easing-tweens.html"&gt;first easing technique in my easing tutorial&lt;/a&gt;, I add a key at frame 20, put an ease in 100 at frame 1, an ease out 100 at frame 20, and an ease in 100 at frame 40.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RpwMRCTyxgI/AAAAAAAAASA/Gc_05kmgXyg/s1600-h/04.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RpwMRCTyxgI/AAAAAAAAASA/Gc_05kmgXyg/s320/04.jpg" alt="" id="BLOGGER_PHOTO_ID_5087955165839017474" border="0" /&gt;&lt;/a&gt;Here's what that looks like.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoom2_03.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoom2_03.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Now we have horizontal movement.  To add vertical movement, we do the same thing all over again.  First, use the Pringle to nest each motion tween in its own symbol.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RpwMRSTyxhI/AAAAAAAAASI/G1I9jsP5v80/s1600-h/05.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RpwMRSTyxhI/AAAAAAAAASI/G1I9jsP5v80/s320/05.jpg" alt="" id="BLOGGER_PHOTO_ID_5087955170133984786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then figure out what you want your vertical motion to be like.  I decided that while the camera is moving to the right (frame 1-40), I want it to bounce up and then down, and while the camera moves to the left (frames 40-60), I want it to move up.  That means the camera is down at frame 1, up at frame 20, down at frame 40 and up at frame 60.  So the first thing to do is key out all the layers at those frames, and then adjust their positions accordingly.  I'll spare you the boring details of how much I moved each layer up or down, but here's what the timeline looks like.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RpwSKCTyxiI/AAAAAAAAASQ/NOmd8BKMCHc/s1600-h/06.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RpwSKCTyxiI/AAAAAAAAASQ/NOmd8BKMCHc/s320/06.jpg" alt="" id="BLOGGER_PHOTO_ID_5087961642649699874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And here's how it plays.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoom2_04.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoom2_04.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Almost there, next I smooth it out by adding some more keyframes and easing.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RpwSKCTyxjI/AAAAAAAAASY/OoB3ds0TIh8/s1600-h/07.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RpwSKCTyxjI/AAAAAAAAASY/OoB3ds0TIh8/s320/07.jpg" alt="" id="BLOGGER_PHOTO_ID_5087961642649699890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Let's see how it looks.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoom2_05.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoom2_05.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now that I see it done, I decide I could tweak the horizontal movement a bit. I think the camera should start more to the left.  I also think the movement to the right is a bit extreme, and since I like the final position of the head, that means moving the horizontal position at frame 40, over to the left as well.  These changes are easy to do, I just go one level into each symbol (this is the level that controls horizontal placement) and adjust the left/right movement accordingly.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoom2_07.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoom2_07.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;And, one last adjustment.  With all this movement, I now think the two forground elements move off screen too quickly.  Again, this is an easy fix, I simply go deep into each of those nested symbols until I get to the one controlling the scaling tween and then size down the last keyframe a bit so that they don't grow so large.  And here it is, the final shot.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoom2_06.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoom2_06.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;And once more, I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes both the standard dolly shot example and the dolly shot with added vertical and horizontal movement.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784439" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (844 kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (844 kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-7632632262048706037?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/7632632262048706037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=7632632262048706037' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/7632632262048706037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/7632632262048706037'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/07/adding-horizontal-and-veritcle-movement.html' title='Adding Horizontal and Veritcal Movement to Your Dolly Shot'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_RAtqBrNNCnk/RpwMQyTyxdI/AAAAAAAAARo/gnF_ZzRi19w/s72-c/01.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-7232098905242137925</id><published>2007-07-10T00:39:00.000-07:00</published><updated>2008-12-09T22:43:43.400-08:00</updated><title type='text'>Multiplaning Dolly Shots</title><content type='html'>This tutorial will show how to create an effective multiplaning dolly shot.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes both the standard dolly shot example and the dolly shot with added vertical and horizontal movement.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784439" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (844 kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (844 kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt;First, here's a silly drawing I made.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RpM4X2KiF3I/AAAAAAAAAQI/VpFNM3iEC1A/s1600-h/01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RpM4X2KiF3I/AAAAAAAAAQI/VpFNM3iEC1A/s320/01.jpg" alt="" id="BLOGGER_PHOTO_ID_5085470386559260530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see from the timeline, the image has five separate layers.  Here you can see how they stack together.  The drawing on each layer is a symbol.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoomin1.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoomin1.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;I'd like the camera to dolly up right to the boy's face.  I've seen a lot of flash animations that end up with something like this.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoomin2.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoomin2.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Okay, this is somewhat of an exaggeration, but you get the point.  Things are sliding around in unnatural ways.  To avoid this, first establish the point where the camera is moving toward.  I want to move in on the boy's face, so I bring up my rulers (ctrl-alt-shift-R) and drop guides that cross at the boy's nose.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RpM4YGKiF4I/AAAAAAAAAQQ/2cEKubQVItM/s1600-h/02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RpM4YGKiF4I/AAAAAAAAAQQ/2cEKubQVItM/s320/02.jpg" alt="" id="BLOGGER_PHOTO_ID_5085470390854227842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Next turn on snapping and move the center point of each symbol to the point where the guides intersect.  This is the key to natural looking multiplaning dolly shots.  By putting the center point of each symbol in the same location, and then scaling each symbol up while keeping the center point stationary, you get movement that looks three dimensional.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RpM4YmKiF6I/AAAAAAAAAQg/SetxAfzykQw/s1600-h/04.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RpM4YmKiF6I/AAAAAAAAAQg/SetxAfzykQw/s320/04.jpg" alt="" id="BLOGGER_PHOTO_ID_5085470399444162466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I think I want the zoom to last 1 second, so add keyframes for each layer at frame 30.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RpM4YmKiF7I/AAAAAAAAAQo/b5IXvth8alo/s1600-h/05.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RpM4YmKiF7I/AAAAAAAAAQo/b5IXvth8alo/s320/05.jpg" alt="" id="BLOGGER_PHOTO_ID_5085470399444162482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now to start zooming in correctly.  Since the distance the camera will move is based entirely on the boy, keep his layer visible and turn the others off.  Now at frame 30, select him, hit Q to bring up the free transform, and scale him up while holding shift.  Holding shift does two very important things, it keeps his proportions the same, and also scales him up while keeping his center point stationary.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RpM8pmKiF8I/AAAAAAAAAQw/nLlC9WFqOnQ/s1600-h/06.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RpM8pmKiF8I/AAAAAAAAAQw/nLlC9WFqOnQ/s320/06.jpg" alt="" id="BLOGGER_PHOTO_ID_5085475089548449730" border="0" /&gt;&lt;/a&gt;Now that his zoomed in size is correct, we need to figure out how much he has been scaled.  Bring up the transform dialogue box (ctrl-T) and select the boy's symbol at frame 1 and frame 30.  At frame 1 he is 100%, and at frame 30 he is 1061.3%.&lt;br /&gt;&lt;br /&gt;So now I know that the layers in front of the boy have to scale more than 1061.3 percent, and the layers behind him must scale less.  I don't know what the right amounts are, so I'm just going to guess.  Here were my original choices&lt;br /&gt;&lt;br /&gt;extreme fg    1750%&lt;br /&gt;fg                    1300%&lt;br /&gt;boy                      1061.3%&lt;br /&gt;bg                          700%&lt;br /&gt;extreme bg     550%&lt;br /&gt;&lt;br /&gt;To implement these numbers, go to frame 30, select the symbol you want to scale, hit ctrl-alt-S to bring up the scale/rotate dialogue box, and type in the value you want to scale the symbol.  Scaling using the dialogue box, just like scaling holding down shift, keeps the symbol's center point stationary.&lt;br /&gt;&lt;br /&gt;I then add the motion tweens, in order to create the camera move, and do the ease-in 100, ease out 100 trick to make the camera move smooth.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RpM8qGKiF-I/AAAAAAAAARA/mh0uqcbPrAY/s1600-h/08.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RpM8qGKiF-I/AAAAAAAAARA/mh0uqcbPrAY/s320/08.jpg" alt="" id="BLOGGER_PHOTO_ID_5085475098138384354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here's what that looks like&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoomin3.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoomin3.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Multiplaning shots don't usually work well with extremely fast camera moves, so I'm going to extend the camera move to be 2 seconds long, and I'm going to change the easing to only be ease in 100, in order to simulate the rules of perspective which state that things increase in size faster the closer they are to you.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RpM8qmKiF_I/AAAAAAAAARI/0WXIVUQew5Y/s1600-h/09.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RpM8qmKiF_I/AAAAAAAAARI/0WXIVUQew5Y/s320/09.jpg" alt="" id="BLOGGER_PHOTO_ID_5085475106728318962" border="0" /&gt;&lt;/a&gt;And here we are&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoomin4.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoomin4.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Better, but now I can see the scaling values I chose need some work.  Messing around with it for a while I end up with&lt;br /&gt;&lt;br /&gt;extreme fg        3308.7%&lt;br /&gt;fg                                        1228.5%&lt;br /&gt;boy                                      1061.3%&lt;br /&gt;bg                                              607.7%&lt;br /&gt;extreme bg         385%&lt;br /&gt;&lt;br /&gt;And here's what that looks like&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoomin5.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoomin5.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;We're almost there.  One last problem.  I don't like the final framing on the dolly-in.  I'd rather have it center more on his right eye.&lt;br /&gt;&lt;br /&gt;Easy fix.  First we need to embed the camera move into it's own symbol using the Pringle, (named by Eric Pringle who popularized this technique).  Rather than explain the method myself, &lt;a href="http://www.coldhardflash.com/images/flash101.swf" target="_window"&gt;I'll link to his tutorial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After you have your dolly move inside it's own symbol, go to the last frame of the move, create a key frame, adjust the composition to your liking, and add a motion tween.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RpND8GKiGBI/AAAAAAAAARY/xTasM3BEQzM/s1600-h/09.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RpND8GKiGBI/AAAAAAAAARY/xTasM3BEQzM/s320/09.jpg" alt="" id="BLOGGER_PHOTO_ID_5085483103957424146" border="0" /&gt;&lt;/a&gt;And check it out&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoomin6.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoomin6.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Whoah, we got a weird curveball effect going on here.  I think it's pretty cool and would probably keep it as is, but let me show you how to fix it.  What's happening here is that the symbol holding all the embedded motion tweens has no easing on it, while the embedded motion tweens are all eased in 100.   To straighten out the zoom, add an ease in 100 to the overall symbol.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RpND8GKiGCI/AAAAAAAAARg/PhLzPOm8E6o/s1600-h/10.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RpND8GKiGCI/AAAAAAAAARg/PhLzPOm8E6o/s320/10.jpg" alt="" id="BLOGGER_PHOTO_ID_5085483103957424162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And here it is.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="zoomin7.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/zoomin7.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;A final note.  Flash's easing capabilities aren't great for creating convincing extreme perspective shots like the one I tried to make here.  The shot is pretty effective up to a point, but for the last 10 frames or so, there's a decrease in the objects rate of scaling up, whereas in reality this rate would be increasing constantly .&lt;br /&gt;&lt;br /&gt;The best fix is to create these camera moves in After Effects, but if you're only using Flash the best technique I've found for these shots is to zoom in much farther (and for a longer period of time) than the shot calls for, cut out those slow end frames in editing, and hopefully the good frames you're left with give you the amount of zooming you wanted.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;And once more, I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes both the standard dolly shot example and the dolly shot with added vertical and horizontal movement.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784439" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (844 kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (844 kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-7232098905242137925?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/7232098905242137925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=7232098905242137925' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/7232098905242137925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/7232098905242137925'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/07/heres-technique-for-getting-effective.html' title='Multiplaning Dolly Shots'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_RAtqBrNNCnk/RpM4X2KiF3I/AAAAAAAAAQI/VpFNM3iEC1A/s72-c/01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-8110482785275174647</id><published>2007-05-29T10:02:00.000-07:00</published><updated>2007-05-29T11:02:52.078-07:00</updated><title type='text'>Easing Tweens</title><content type='html'>This tutorial will cover two ways to make Flash's motion &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;tweens&lt;/span&gt; feel more natural.  If you've worked in Flash you've probably figured out the first technique.  The second is a slight alteration that I figured out myself and haven't seen anywhere else.&lt;br /&gt;&lt;br /&gt;Also, before I go any further, if you have Flash 8 or above, you might not need these tricks since Flash allows you greater control of your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;tweens&lt;/span&gt;.  But if you're like me and hate, hate, hate Flash 8, then keep reading.&lt;br /&gt;&lt;br /&gt;For simplicity's sake, I'll show these techniques by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;tweening&lt;/span&gt; a circle.  So I'm moving the circle from left to right over the course of 61 frames.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlxdMSZvfcI/AAAAAAAAANw/_rxB7Jat2Jw/s1600-h/01.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlxdMSZvfcI/AAAAAAAAANw/_rxB7Jat2Jw/s320/01.gif" alt="" id="BLOGGER_PHOTO_ID_5070029746191957442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here's what that looks like.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="300" width="720"&gt;&lt;br /&gt;&lt;param name="movie" value="tween1.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/tween1.swf" height="300" width="720"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;It's a little robotic. Instead of accelerating at the beginning and decelerating at the end, the circle moves at a constant speed the whole time.  That's not how things work in the real world.&lt;br /&gt;&lt;br /&gt;To fix that, let me first explain why I made the end &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;keyframe&lt;/span&gt; at frame 61 instead of a more natural number like 60.  This is because, in order to make the tween feel more  natural, the first step is to put a midpoint &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;keyframe&lt;/span&gt; that is equal distance from the beginning and end &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;keyframes&lt;/span&gt;.  If your first frame is an odd number, then in order to create an equidistant midpoint, your last frame must also be an odd number (and if your first frame is an even number, then your last frame also needs to be even).  In my case, the the midpoint is at frame 31.  If you're interested, to mathematically find your midpoint, just add the frame numbers of the beginning and end of your tween and divide by two.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlxdMyZvfdI/AAAAAAAAAN4/2Ne0pZowyC4/s1600-h/02.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlxdMyZvfdI/AAAAAAAAAN4/2Ne0pZowyC4/s320/02.gif" alt="" id="BLOGGER_PHOTO_ID_5070029754781892050" border="0" /&gt;&lt;/a&gt;After setting your midpoint, go to the first frame, and adjust the tween to ease in 100.  Let me also point out that it is hugely important to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;keyframe&lt;/span&gt; your midpoint BEFORE doing any of the easing.  If you were to put the ease in 100 on the first frame and then set the midpoint &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;keyframe&lt;/span&gt;, the circle wouldn't be in the right spot at that frame and the tween would look very jerky.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlxdNiZvfeI/AAAAAAAAAOA/CLg5NF_tY_U/s1600-h/03.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlxdNiZvfeI/AAAAAAAAAOA/CLg5NF_tY_U/s320/03.gif" alt="" id="BLOGGER_PHOTO_ID_5070029767666793954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After setting the ease in, go to the midpoint frame and set the tween to ease out 100.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlxdNyZvffI/AAAAAAAAAOI/OAVEp7VJMJU/s1600-h/04.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlxdNyZvffI/AAAAAAAAAOI/OAVEp7VJMJU/s320/04.gif" alt="" id="BLOGGER_PHOTO_ID_5070029771961761266" border="0" /&gt;&lt;/a&gt;Let's check it out.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="300" width="720"&gt;&lt;br /&gt;&lt;param name="movie" value="tween2.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/tween2.swf" height="300" width="720"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;That's more natural.  But let's see if we can do it one better.  The problem with this technique is that the speed of your tween is constantly changing.  It's speeding up all the way to the midpoint and slowing down from the midpoint to the end frame.  This can be very distracting for really long &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;tweens&lt;/span&gt; like slow camera pans.&lt;br /&gt;&lt;br /&gt;Here's how you get a tween to speed up, maintain that speed and then slow down.  Using the same circle set up, I've cleared all my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;keyframes&lt;/span&gt; and removed all the easing.  Then I created a new layer above my tween.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlxdOiZvfgI/AAAAAAAAAOQ/iDOPd8QNS5c/s1600-h/05.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlxdOiZvfgI/AAAAAAAAAOQ/iDOPd8QNS5c/s320/05.gif" alt="" id="BLOGGER_PHOTO_ID_5070029784846663170" border="0" /&gt;&lt;/a&gt;I'm basically using this new layer as a ruler to measure distances on my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;timeline&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So the first measurement to make is when you want your tween to reach it's full speed.  Here again it's important to pick a frame number that will allow you to make an equidistant midpoint &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;keyframe&lt;/span&gt;.  I'm picking frame 15.  So the first thing to do is put a blank &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;keyframe&lt;/span&gt; on the new layer at frame 15.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlxlOCZvfhI/AAAAAAAAAOY/nkEXa-_QYzU/s1600-h/06.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlxlOCZvfhI/AAAAAAAAAOY/nkEXa-_QYzU/s320/06.gif" alt="" id="BLOGGER_PHOTO_ID_5070038572349750802" border="0" /&gt;&lt;/a&gt;Next, determine where the midpoint is between those two blank &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;keyframes&lt;/span&gt;.  For me it's frame 8.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlxlOSZvfiI/AAAAAAAAAOg/eHAL8kFFZ7s/s1600-h/07.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlxlOSZvfiI/AAAAAAAAAOg/eHAL8kFFZ7s/s320/07.gif" alt="" id="BLOGGER_PHOTO_ID_5070038576644718114" border="0" /&gt;&lt;/a&gt;Now select those &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;keyframes&lt;/span&gt;, hold down alt, and drag them to the end of your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;timeline&lt;/span&gt;.  Now you have the same measurements at the end of your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;timeline&lt;/span&gt; as you made for the beginning.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlxlOSZvfjI/AAAAAAAAAOo/iw3pdxmMxJM/s1600-h/08.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlxlOSZvfjI/AAAAAAAAAOo/iw3pdxmMxJM/s320/08.gif" alt="" id="BLOGGER_PHOTO_ID_5070038576644718130" border="0" /&gt;&lt;/a&gt;Next, on the tween layer, put &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;keyframes&lt;/span&gt; at the two midpoints you measured out.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlxlOiZvfkI/AAAAAAAAAOw/_oz_9NtwleE/s1600-h/09.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlxlOiZvfkI/AAAAAAAAAOw/_oz_9NtwleE/s320/09.gif" alt="" id="BLOGGER_PHOTO_ID_5070038580939685442" border="0" /&gt;&lt;/a&gt;Then drag those &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;keyframes&lt;/span&gt; to the two measured end points.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlxlOyZvflI/AAAAAAAAAO4/SyQelcAOSmY/s1600-h/10.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlxlOyZvflI/AAAAAAAAAO4/SyQelcAOSmY/s320/10.gif" alt="" id="BLOGGER_PHOTO_ID_5070038585234652754" border="0" /&gt;&lt;/a&gt;Now ease in 100 for the first section&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlxmXCZvfmI/AAAAAAAAAPA/JtjnvUNcNto/s1600-h/11.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlxmXCZvfmI/AAAAAAAAAPA/JtjnvUNcNto/s320/11.gif" alt="" id="BLOGGER_PHOTO_ID_5070039826480201314" border="0" /&gt;&lt;/a&gt;And ease out 100 for the last section.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlxmXSZvfnI/AAAAAAAAAPI/Wp_csio0J_I/s1600-h/12.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlxmXSZvfnI/AAAAAAAAAPI/Wp_csio0J_I/s320/12.gif" alt="" id="BLOGGER_PHOTO_ID_5070039830775168626" border="0" /&gt;&lt;/a&gt;Let's see what that looks like&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="300" width="720"&gt;&lt;br /&gt;&lt;param name="movie" value="tween3.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/tween3.swf" height="300" width="720"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;For a small movement like the one above, this technique might be a bit overkill, but for really long camera pans, &lt;a href="http://www.giftstotheworld.net/large.shtml"&gt;like the second shot in this video&lt;/a&gt;, they're much more useful.  Also, you'll probably have to play with the length of your easing in and out and find a timing and distance that feels natural.  If  I was to redo this one, I'd probably make the easing last 21 frames.&lt;br /&gt;&lt;br /&gt;And now to compare the three &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;tweens&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Nothing&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="300" width="720"&gt;&lt;br /&gt;&lt;param name="movie" value="tween1.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/tween1.swf" height="300" width="720"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;1st technique&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="300" width="720"&gt;&lt;br /&gt;&lt;param name="movie" value="tween2.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/tween2.swf" height="300" width="720"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;2&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;nd&lt;/span&gt; technique&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="300" width="720"&gt;&lt;br /&gt;&lt;param name="movie" value="tween3.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/tween3.swf" height="300" width="720"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-8110482785275174647?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/8110482785275174647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=8110482785275174647' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/8110482785275174647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/8110482785275174647'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/05/easing-tweens.html' title='Easing Tweens'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_RAtqBrNNCnk/RlxdMSZvfcI/AAAAAAAAANw/_rxB7Jat2Jw/s72-c/01.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-6247220156836528144</id><published>2007-05-25T14:54:00.000-07:00</published><updated>2008-12-09T22:43:12.221-08:00</updated><title type='text'>Perspective in Flash</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes the building bellow with vanishing points and the final line work for the siege tower example bellow with vanishing points.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784413" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (96 kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (96 kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;This tutorial will cover a quick way to set up vanishing points and perspective lines in Flash.  I'm not going to cover perspective concepts, if you don't know perspective already I suggest buying &lt;a href="http://www.amazon.com/Creative-Perspective-Artists-Illustrators-Ernest/dp/0486273377/ref=sr_1_1/002-8272511-1502464?ie=UTF8&amp;amp;s=books&amp;amp;amp;amp;amp;amp;amp;amp;amp;qid=1180130167&amp;amp;sr=8-1"&gt;Creative Perspective for Artists and Illustrators&lt;/a&gt; by Ernest W. Watson.  It's the best book I've ever seen on perspective (and I've seen a lot of them).  He explains the concepts of perspective, but more importantly he then shows how the great golden age illustrators used perspective or broke the rules of perspective to get the best image possible.  Perspective is a tool, a useful one to understand and utilize, but if you are a slave to it you'll go crazy making some pretty bland drawings.&lt;br /&gt;&lt;br /&gt;First, sketch out your drawing.  This is the most important step and the computer can't do a damn thing to help you.  If you don't have solid drawing skills, you're not going to get too far.  There's nothing I can say here that will help you get better at this except learn perspective and practice.&lt;br /&gt;&lt;br /&gt;When drawing at this stage, I'm not concerned with details like windows, I'm concerned with the overall shapes and the placement and angles of lines. As you can see, this will be three point persepective drawing.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlddnCZvfQI/AAAAAAAAAMQ/hNfg0AdLlpo/s1600-h/01.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlddnCZvfQI/AAAAAAAAAMQ/hNfg0AdLlpo/s320/01.gif" alt="" id="BLOGGER_PHOTO_ID_5068622830869904642" border="0" /&gt;&lt;/a&gt;So now, let's find our vanishing points.  The hardest ones to find here will be the two on the horizon line, so I'm going to find those first.  Lock your sketch layer, create a new layer, select the line tool and draw straight lines that follow what you think are the two most important and correct lines you've sketched that are heading to Vanishing Point 1 (VP1).  It helps if these lines are somewhat far apart from another.  Where ever these two lines cross, that's where VP1 is.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlddnSZvfRI/AAAAAAAAAMY/sIYR2DdEjX0/s1600-h/02.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlddnSZvfRI/AAAAAAAAAMY/sIYR2DdEjX0/s320/02.gif" alt="" id="BLOGGER_PHOTO_ID_5068622835164871954" border="0" /&gt;&lt;/a&gt;How annoying.  VP1 is very far away from the drawing.  It's even outside Flash's work area.  That's not a problem.  Delete the perspective layer and symbolize your sketch drawing.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlddniZvfSI/AAAAAAAAAMg/2oWCl363nCo/s1600-h/03.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlddniZvfSI/AAAAAAAAAMg/2oWCl363nCo/s320/03.gif" alt="" id="BLOGGER_PHOTO_ID_5068622839459839266" border="0" /&gt;&lt;/a&gt;Now make a new keyframe of your background and scale it down.  In the screenshot below I scaled the background image 50 percent, but VP1 ended up being so far away I had to scale it down even more later.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlddnyZvfTI/AAAAAAAAAMo/HRZgXIqyTKM/s1600-h/04.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlddnyZvfTI/AAAAAAAAAMo/HRZgXIqyTKM/s320/04.gif" alt="" id="BLOGGER_PHOTO_ID_5068622843754806578" border="0" /&gt;&lt;/a&gt;Now enter your background layer and draw the perspective lines on a new layer again. You don't have to get them to cross, just get them accurate to your drawing.&lt;br /&gt;&lt;br /&gt;Then select one line, hit q to bring up free transform, and scale it up (while holding shift, in order to keep the scaling proportional).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlddoCZvfUI/AAAAAAAAAMw/gofUqZahfNE/s1600-h/05.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlddoCZvfUI/AAAAAAAAAMw/gofUqZahfNE/s320/05.gif" alt="" id="BLOGGER_PHOTO_ID_5068622848049773890" border="0" /&gt;&lt;/a&gt;And do the same for the other line, scaling it until it intersects the first&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RldgAyZvfVI/AAAAAAAAAM4/k-e-ak3bZ2I/s1600-h/06.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RldgAyZvfVI/AAAAAAAAAM4/k-e-ak3bZ2I/s320/06.gif" alt="" id="BLOGGER_PHOTO_ID_5068625472274791762" border="0" /&gt;&lt;/a&gt;VP1 is at the intersection of those two lines.  VP2 will be on the same horizon line as VP1, and since there's no dutching of the camera in this drawing, the horizon line is horizontal.  To drop in the horizon line, bring up the Ruler (ctrl+alt+shift+r), and drop a horizontal line that runs through VP1.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RldgBCZvfWI/AAAAAAAAANA/tUbmpZOSlYM/s1600-h/07.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RldgBCZvfWI/AAAAAAAAANA/tUbmpZOSlYM/s320/07.gif" alt="" id="BLOGGER_PHOTO_ID_5068625476569759074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then pick the most important line in your drawing that goes to VP2, and draw it as a perspective line that intersects the horizon line.  VP2 is the intersection of those two lines.&lt;br /&gt;&lt;br /&gt;Now we have the two horizon line vanishing points, but what a pain it would be to constantly draw lines running from the VP's to where we'd like them on our drawing.  Thankfully there's an easy work around.&lt;br /&gt;&lt;br /&gt;Start with VP1.  Delete out the sections of the perspective lines that overshoot the vanishing point.  Then select one of the lines, make it a group and move the group's center point to where the vanishing point is.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RldgBSZvfXI/AAAAAAAAANI/WCHgYjT-zAw/s1600-h/08.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RldgBSZvfXI/AAAAAAAAANI/WCHgYjT-zAw/s320/08.gif" alt="" id="BLOGGER_PHOTO_ID_5068625480864726386" border="0" /&gt;&lt;/a&gt;Now when you want to make more lines running to VP1, just copy that group, paste it in place and rotate it.  If the line needs to be longer, just hit q, and scale it up while holding down shift.  The group will scale up but keep the center point right where it is.&lt;br /&gt;&lt;br /&gt;Next do the same thing for VP2, and follow all the same steps to find the position of VP3.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RldgBiZvfYI/AAAAAAAAANQ/IF_sfPyB0PM/s1600-h/09.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RldgBiZvfYI/AAAAAAAAANQ/IF_sfPyB0PM/s320/09.gif" alt="" id="BLOGGER_PHOTO_ID_5068625485159693698" border="0" /&gt;&lt;/a&gt;Now exit the symbol, go back to frame 1 on the stage (that has the background at the correct size), enter that instance of the background symbol, and keep copying, pasting in place, and rotating lines to figure out the correct perspective.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RldgByZvfZI/AAAAAAAAANY/xfJS5oxsKrc/s1600-h/10.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RldgByZvfZI/AAAAAAAAANY/xfJS5oxsKrc/s320/10.gif" alt="" id="BLOGGER_PHOTO_ID_5068625489454661010" border="0" /&gt;&lt;/a&gt;As you can see, for the center building my initial sketch was pretty decent, but the top antenna part needs a good amount of fixing.  Also those foreground buildings that frame the main building are WAY off in terms of perspective, but even if I was to finish this drawing (which I'm not), I probably would not make them perspectively correct because then the composition would be awkward.  The trick with perspective is knowing when to use it and when to ignore it.&lt;br /&gt;&lt;br /&gt;Here's an example of a Flash background I did a while ago using this exact same technique to figure out the perspective lines.  You'll also noticed that I cheated the perspective on the vertical lines of the foreground element (it's a castle wall).  I tilted the wall in more than it actually would in order to make it feel like it was at odds with the seige tower.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RldmWCZvfaI/AAAAAAAAANg/QfaMsHAQhLI/s1600-h/sow.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RldmWCZvfaI/AAAAAAAAANg/QfaMsHAQhLI/s320/sow.jpg" alt="" id="BLOGGER_PHOTO_ID_5068632434416778658" border="0" /&gt;&lt;/a&gt;And lucky you, I actually kept some of my perspective lines as guide layers.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RldnGCZvfbI/AAAAAAAAANo/xPjKzy2tz9k/s1600-h/sow2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RldnGCZvfbI/AAAAAAAAANo/xPjKzy2tz9k/s320/sow2.gif" alt="" id="BLOGGER_PHOTO_ID_5068633259050499506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;And once more, I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes the building example with vanishing points and the final line work for the siege tower example with vanishing points.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784413" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (96 kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (96 kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-6247220156836528144?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/6247220156836528144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=6247220156836528144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/6247220156836528144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/6247220156836528144'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/05/perspective-in-flash.html' title='Perspective in Flash'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_RAtqBrNNCnk/RlddnCZvfQI/AAAAAAAAAMQ/hNfg0AdLlpo/s72-c/01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-979163215739625685</id><published>2007-05-25T08:14:00.000-07:00</published><updated>2008-02-04T22:47:59.823-08:00</updated><title type='text'>Editting Audio in Flash</title><content type='html'>A question that pops up pretty consistently on the Cold Hard Flash message board is how to edit audio clips in Flash.  Lets say you have a 4 minute song you're making an animation for and you'd like to chop the audio into a bunch of sections so that you can split the video up between multiple Flash files.&lt;br /&gt;&lt;br /&gt;The best way is to use an audio &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;editing&lt;/span&gt; program, but if you're like me and don't own one, here's a work around.&lt;br /&gt;&lt;br /&gt;First, and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;foremost&lt;/span&gt;, import your audio.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/Rlb-kCZve-I/AAAAAAAAAKA/CeZchum2SbU/s1600-h/01.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/Rlb-kCZve-I/AAAAAAAAAKA/CeZchum2SbU/s320/01.gif" alt="" id="BLOGGER_PHOTO_ID_5068518325725658082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Find what frame where you'd like to break the audio, create a new layer, and put a blank &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;keyframe&lt;/span&gt; at that point.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/Rlb-kSZve_I/AAAAAAAAAKI/362TW6KeZKg/s1600-h/02.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/Rlb-kSZve_I/AAAAAAAAAKI/362TW6KeZKg/s320/02.gif" alt="" id="BLOGGER_PHOTO_ID_5068518330020625394" border="0" /&gt;&lt;/a&gt;Go back to frame one.  Copy the first frame of the audio and paste it into the new layer&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/Rlb-kiZvfAI/AAAAAAAAAKQ/_5JrfkjUrZU/s1600-h/03.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/Rlb-kiZvfAI/AAAAAAAAAKQ/_5JrfkjUrZU/s320/03.gif" alt="" id="BLOGGER_PHOTO_ID_5068518334315592706" border="0" /&gt;&lt;/a&gt;As you can see on the new layer, the audio now ends where you'd like it to begin.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/Rlb-kyZvfBI/AAAAAAAAAKY/Ezj4pa6mz4M/s1600-h/04.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/Rlb-kyZvfBI/AAAAAAAAAKY/Ezj4pa6mz4M/s320/04.gif" alt="" id="BLOGGER_PHOTO_ID_5068518338610560018" border="0" /&gt;&lt;/a&gt;Select the audio in the new layer, bring up your properties panel and  click Edit&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/Rlb-lCZvfCI/AAAAAAAAAKg/wJ-UP7uENQc/s1600-h/05.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/Rlb-lCZvfCI/AAAAAAAAAKg/wJ-UP7uENQc/s320/05.gif" alt="" id="BLOGGER_PHOTO_ID_5068518342905527330" border="0" /&gt;&lt;/a&gt;This will bring up the Edit Envelope dialogue box.  Click on the zoom out icon until you see a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;vertical&lt;/span&gt; gray line running through the levels.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlcCSyZvfDI/AAAAAAAAAKo/Jd8ZFz4v_Yg/s1600-h/06.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlcCSyZvfDI/AAAAAAAAAKo/Jd8ZFz4v_Yg/s320/06.gif" alt="" id="BLOGGER_PHOTO_ID_5068522427419425842" border="0" /&gt;&lt;/a&gt;That gray line shows you where your piece of audio ends, which just so happens to be that blank &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;keyframe&lt;/span&gt; we made earlier, so that gray line is also showing you where you want your audio to begin.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;In between&lt;/span&gt; the left and right channel levels, there is a small gray bar that you can drag around.  That bar tells flash where to start playing a piece of audio.  So just drag the bar to the gray line.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlcCTCZvfEI/AAAAAAAAAKw/HWtXTcX0UvA/s1600-h/07.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlcCTCZvfEI/AAAAAAAAAKw/HWtXTcX0UvA/s320/07.gif" alt="" id="BLOGGER_PHOTO_ID_5068522431714393154" border="0" /&gt;&lt;/a&gt;Hit okay.  Now back on the stage grab the newly edited piece of audio and have it start at the blank key frame you created earlier.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlcCTCZvfFI/AAAAAAAAAK4/JOtmTx82jFI/s1600-h/08.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlcCTCZvfFI/AAAAAAAAAK4/JOtmTx82jFI/s320/08.gif" alt="" id="BLOGGER_PHOTO_ID_5068522431714393170" border="0" /&gt;&lt;/a&gt;As you can see, we are close but not quite.  Here comes the annoying part.  First, in order to see the audio better, right click on each layer, choose properties and under the layer height pull down, select 300.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlcCTiZvfGI/AAAAAAAAALA/x1nKKGKgTJ0/s1600-h/09.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlcCTiZvfGI/AAAAAAAAALA/x1nKKGKgTJ0/s320/09.gif" alt="" id="BLOGGER_PHOTO_ID_5068522440304327778" border="0" /&gt;&lt;/a&gt;And if you want to be really picky (which I do), select large frames under the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;timeline's&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;drop down&lt;/span&gt; menu.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlcCTyZvfHI/AAAAAAAAALI/HpDr5QnaraM/s1600-h/10.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlcCTyZvfHI/AAAAAAAAALI/HpDr5QnaraM/s320/10.gif" alt="" id="BLOGGER_PHOTO_ID_5068522444599295090" border="0" /&gt;&lt;/a&gt;Now go back in and refine the starting point of your new audio clip.  As you can see on mine, the new clip starts a bit early so I need to push back the starting point.&lt;br /&gt;&lt;br /&gt;Since these are small adjustments you are going to want to be zoomed in pretty tight in the audio Edit Envelope.  Navigating the Edit Envelopes &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;timeline&lt;/span&gt; and zooming in can be really annoying.  Here's how you can find your starting point and easily zoom in on it.&lt;br /&gt;&lt;br /&gt;First zoom out wide and scroll so that the starting point is all the way to the left on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;timeline's&lt;/span&gt; visible section, and then zoom in.  While zooming in with the Edit Envelope, the frame on the left stays put.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlcDwSZvfII/AAAAAAAAALQ/OY-ojOWuk7I/s1600-h/11.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlcDwSZvfII/AAAAAAAAALQ/OY-ojOWuk7I/s320/11.gif" alt="" id="BLOGGER_PHOTO_ID_5068524033737194626" border="0" /&gt;&lt;/a&gt;Now adjust your staring point.  You want see the edit take place on the stage's &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;timeline&lt;/span&gt; until you hit okay (very annoying), so this will probably take a few tries to get it right.  You won't get it perfect but with a little patience you can get really really close.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlcDwSZvfJI/AAAAAAAAALY/FXGjznEVhos/s1600-h/12.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlcDwSZvfJI/AAAAAAAAALY/FXGjznEVhos/s320/12.gif" alt="" id="BLOGGER_PHOTO_ID_5068524033737194642" border="0" /&gt;&lt;/a&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;Collapse&lt;/span&gt; your layer heights, zoom out on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;timeline&lt;/span&gt; and you're good to go&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlcDwyZvfKI/AAAAAAAAALg/jbEup8wFlwA/s1600-h/13.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlcDwyZvfKI/AAAAAAAAALg/jbEup8wFlwA/s320/13.gif" alt="" id="BLOGGER_PHOTO_ID_5068524042327129250" border="0" /&gt;&lt;/a&gt;When you hit play it won't sound perfect, you'll get a slight tinny echo, but for timing purposes and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;lipsync&lt;/span&gt; you'll be fine.  You can go and copy that new piece of audio and place it in a new document.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-979163215739625685?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/979163215739625685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=979163215739625685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/979163215739625685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/979163215739625685'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/05/editting-audio-in-flash.html' title='Editting Audio in Flash'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_RAtqBrNNCnk/Rlb-kCZve-I/AAAAAAAAAKA/CeZchum2SbU/s72-c/01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-5972673597755427473</id><published>2007-05-23T08:14:00.000-07:00</published><updated>2008-12-09T22:42:18.197-08:00</updated><title type='text'>Multiplaning Looping Panning Backgrounds</title><content type='html'>This tutorial is a continuation of the previous lesson on creating &lt;a href="http://flashtrick.blogspot.com/2007/05/looping-background-pans.html"&gt;looping panning backgrounds&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes the looping background pan and the multiplaning looping background pan.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784478" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (25 kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (25 kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;So we left off with this&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="loopingpan.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/loopingpan.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;But that's not impressive enough for you. The kids love that 3D stuff, so lets give them some multiplaning action.&lt;br /&gt;&lt;br /&gt;The loop we've already made will be the back most, slowest moving plane in our pan.  Everything else will move faster.  So when making a multiplane shot, make sure the first loop you make is your farthest back (the sky, or in this case, the wall.)&lt;br /&gt;&lt;br /&gt;Now lets take a look at the two symbols we've made so far&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;background_pan&lt;/span&gt; contains the motion tween that makes the background move&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;background&lt;/span&gt; is the drawing that is the background.&lt;br /&gt;&lt;br /&gt;What we need to do now is make duplicates of both these symbols to hold some new drawing.  First thing I'll multiplane are paw prints running over the ground.  So copy the instance of &lt;span style="font-weight: bold;"&gt;background_pan&lt;/span&gt; that starts on frame 51 and paste it in place on a new layer.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlRdzCZve2I/AAAAAAAAAJA/vuDO_3ECTgk/s1600-h/01.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlRdzCZve2I/AAAAAAAAAJA/vuDO_3ECTgk/s320/01.gif" alt="" id="BLOGGER_PHOTO_ID_5067778612098202466" border="0" /&gt;&lt;/a&gt;Now duplicate the symbol &lt;span style="font-weight: bold;"&gt;background_pan&lt;/span&gt; and call it &lt;span style="font-weight: bold;"&gt;footstep_pan&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlRdzSZve3I/AAAAAAAAAJI/F87LMBAPO1U/s1600-h/02.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlRdzSZve3I/AAAAAAAAAJI/F87LMBAPO1U/s320/02.gif" alt="" id="BLOGGER_PHOTO_ID_5067778616393169778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enter &lt;span style="font-weight: bold;"&gt;footstep_pan&lt;/span&gt;, duplicate &lt;span style="font-weight: bold;"&gt;background&lt;/span&gt; and call it &lt;span style="font-weight: bold;"&gt;footstep&lt;/span&gt;.   You probably have sync and snap on, so when duplicating &lt;span style="font-weight: bold;"&gt;background&lt;/span&gt; you'll have to do it on the first frame on the timeline, but when we go inside &lt;span style="font-weight: bold;"&gt;footstep&lt;/span&gt; you'll want to do it on your middle frame.  Also DO NOT ALTER THE TIMING OF THE MOTION TWEEN.&lt;br /&gt;&lt;br /&gt;Go inside &lt;span style="font-weight: bold;"&gt;footstep&lt;/span&gt;, make a new layer to draw in, delete the background layer, unlock the mask and turn the mask to outline (this way you can see your boundaries but it doesn't cover what you're drawing).  On your new layer make your new drawing.  In my case, I'm making footprints.  As you can see I made sure they were flush with the boundaries of the mask.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlRdziZve4I/AAAAAAAAAJQ/zJIltD8aSYY/s1600-h/03.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlRdziZve4I/AAAAAAAAAJQ/zJIltD8aSYY/s320/03.gif" alt="" id="BLOGGER_PHOTO_ID_5067778620688137090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now let's go back to the stage and play this.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="multi_01.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/multi_01.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;As you can see we have a few problems.  The footsteps appear only half the time, and more importantly, there's no multiplaning.  What kind of multiplaning tutorial is this?&lt;br /&gt;&lt;br /&gt;Let's fix the multiplane problem first.  And it's such a simple fix.  On the stage select &lt;span style="font-weight: bold;"&gt;footstep_pan&lt;/span&gt;, hit ctrl+alt+s to bring up the Scale/Rotate dialogue box, and scale it up somewhat.  The amount you scale this symbol up determines the increased speed of this plane's movement.  If you want a subtle multiplane, scale it up a bit.  If you want a big increase in speed, scale it up a lot.  The footsteps should be subtle so I'm only scaling it up a bit (the screenshot says 105%, but I eventually settled on 110).  Also it's important when scaling the _pan symbols to either use the scale/rotate dialogue box, or make sure that it's scaling relative to the symbol's center point.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlRd0CZve6I/AAAAAAAAAJg/w9QhASJkfec/s1600-h/05.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlRd0CZve6I/AAAAAAAAAJg/w9QhASJkfec/s320/05.gif" alt="" id="BLOGGER_PHOTO_ID_5067778629278071714" border="0" /&gt;&lt;/a&gt;Now that we have the footsteps moving faster, let's fix the problem of it only appearing half the time.  Select &lt;span style="font-weight: bold;"&gt;footstep_pan&lt;/span&gt; copy it and paste it in place on a new layer, then select the new instance and put its starting frame on 1.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlRdzyZve5I/AAAAAAAAAJY/so_tfOy4lYo/s1600-h/04.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlRdzyZve5I/AAAAAAAAAJY/so_tfOy4lYo/s320/04.gif" alt="" id="BLOGGER_PHOTO_ID_5067778624983104402" border="0" /&gt;&lt;/a&gt;Now let's check it out.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="multi_02.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/multi_02.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;It's working, but there are a few problems.  First of all, it's super subtle, but that's okay we'll do more impressive stuff in a bit.  And second, sometimes you want objects to multiplane that don't run the course of the entire screen.  Maybe you want to add something like a piece of cheese.&lt;br /&gt;&lt;br /&gt;Cheese?  What a great idea, let's do that.  Copy the &lt;span style="font-weight: bold;"&gt;footprint_pan &lt;/span&gt;instance that starts on frame 51, paste it in place on a new layer.  Duplicate &lt;span style="font-weight: bold;"&gt;footprint_pan&lt;/span&gt; and call it &lt;span style="font-weight: bold;"&gt;cheese_pan&lt;/span&gt;.  Enter &lt;span style="font-weight: bold;"&gt;cheese_pan&lt;/span&gt;, duplicate &lt;span style="font-weight: bold;"&gt;footprint &lt;/span&gt;and call it &lt;span style="font-weight: bold;"&gt;cheese&lt;/span&gt;.  Enter &lt;span style="font-weight: bold;"&gt;cheese&lt;/span&gt;, delete out the footprint drawing and draw a piece of cheese.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlSgwyZve7I/AAAAAAAAAJo/Z0OS0FiQ1tI/s1600-h/06.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlSgwyZve7I/AAAAAAAAAJo/Z0OS0FiQ1tI/s320/06.gif" alt="" id="BLOGGER_PHOTO_ID_5067852240722557874" border="0" /&gt;&lt;/a&gt;Now go back out to the stage.  Now your cheese is moving at the same speed as the footprints.  To fix that just scale the cheese up some more using the scale/rotate dialogue box.  You probably won't like the verticle placement that happens when you scale-up the symbol, so just adjust that placement to something you like.  ONLY MOVE THE SYMBOL TO ADJUST VERTICLE PLACEMENT, DO NOT MOVE THE SYMBOL LEFT OR RIGHT (this will make sense in a bit).&lt;br /&gt;&lt;br /&gt;Now here is what we have&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="multi_03.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/multi_03.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Getting better, but let's say you want more than one piece of cheese, and you want to adjust the starting spot for the piece of cheese that is already there.  To change the starting spot, just change which frame &lt;span style="font-weight: bold;"&gt;cheese_pan&lt;/span&gt; starts looping on.  To add another piece of cheese, just copy &lt;span style="font-weight: bold;"&gt;cheese_pan&lt;/span&gt;, paste it in place on a new layer and adjust the starting frame.  My two instances here start on frame 80 and 45.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlSgxSZve8I/AAAAAAAAAJw/T5TKyBqx0DM/s1600-h/07.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlSgxSZve8I/AAAAAAAAAJw/T5TKyBqx0DM/s320/07.gif" alt="" id="BLOGGER_PHOTO_ID_5067852249312492482" border="0" /&gt;&lt;/a&gt;And here's what that looks like&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="multi_04.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/multi_04.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;For the sake of this tutorial I'm going to do a bit more mutliplaning, but in order to do that, I think I need more ground to play with and less wall showing.  That's an easy fix, just select everything and move it up a bit.  Then select just the &lt;span style="font-weight: bold;"&gt;footprint_pan&lt;/span&gt; instances and move those down, and then select the &lt;span style="font-weight: bold;"&gt;cheese_pan&lt;/span&gt; instances and move those down even more.&lt;br /&gt;&lt;br /&gt;Now that we have more ground to play with, lets add some more cheese, this time between the wall and the footprints. Easy enough, just copy an instance of &lt;span style="font-weight: bold;"&gt;cheese_pan&lt;/span&gt; and scale it to a size that is somewhere between the scale of the wall (100 %) and the footprints (110%), and then vertically place the new cheese between the wall and the footprints.  To tell what percentage your symbols are scaled, bring up the transform dialogue box (ctrl+t).  Once you have the placement for the cheese correct, you can add more cheese on that plane by copying it, pasting it in place and changing the starting frames.  In the screenshot bellow I also added another piece of cheese closer in the forground using the same technique (except I scaled the &lt;span style="font-weight: bold;"&gt;cheese_pan &lt;/span&gt;instance larger instead of smaller).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlSgxiZve9I/AAAAAAAAAJ4/sNd87qyzroM/s1600-h/08.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlSgxiZve9I/AAAAAAAAAJ4/sNd87qyzroM/s320/08.gif" alt="" id="BLOGGER_PHOTO_ID_5067852253607459794" border="0" /&gt;&lt;/a&gt;And here it is playing&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="multi_05.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/multi_05.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;A thoroughly ridiculous background, but you get the point.  And of course you don't have to be limited to cheese, you can keep making more duplicates for other objects like chairs, or whatever your little heart desires.   I decided this long, fermented dairy loving hallway needed some illumination, so I also added some lightbulbs comming in from off screen.  It's a little stupid since realistically speaking these lightbulbs are way too low, and the forground lightbulbs are actually closer to the ground than the background bulbs, but what do you want from me, I was making this up as I went along.  Normally I would have figured out my horizon line to determine the verticle placement and height for all the objects before doing any of this.&lt;br /&gt;&lt;br /&gt;But enough excuses, here it is, my final multiplane.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="multi_06.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/multi_06.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;And remember&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;, I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes the looping background pan and the multiplaning looping background pan.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784478" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (25 kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (25 kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-5972673597755427473?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/5972673597755427473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=5972673597755427473' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/5972673597755427473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/5972673597755427473'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/05/multiplaning-looping-panning.html' title='Multiplaning Looping Panning Backgrounds'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_RAtqBrNNCnk/RlRdzCZve2I/AAAAAAAAAJA/vuDO_3ECTgk/s72-c/01.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9104039768862242324.post-4890625456330538082</id><published>2007-05-22T21:00:00.000-07:00</published><updated>2008-12-09T22:42:41.772-08:00</updated><title type='text'>Looping Background Pans</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes the looping background pan and the multiplaning looping background pan.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784478" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (25 kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (25 kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;Last year I was working on a show that had a lot of panning backgrounds.  I would spend a lot of time making sure backgrounds would pan and loop correctly, so I decided to come up with a method that would work every time.  Using my technique it's very easy to make those Hanna Barbara-esq looping backgrounds.  Also, this technique is a good start to making multiplaning pans like this&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="300" height="160"&gt;&lt;br /&gt;&lt;param name="movie" value="multiplane.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/multiplane.swf" width="290" height="160"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;But let's start simple.&lt;br /&gt;&lt;br /&gt;Step 1: Create a paint square (with no stroke) that is larger than the stage.  The square you make is almost (but not quite yet) the size of the background drawing you'll end up making, so keep that in mind.  You might want something pretty wide, but to make things easier here, I'm making one that is just barely wider than the stage.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlO9iSZvemI/AAAAAAAAAHA/8OiEnvr4rQU/s1600-h/1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlO9iSZvemI/AAAAAAAAAHA/8OiEnvr4rQU/s320/1.gif" alt="" id="BLOGGER_PHOTO_ID_5067602402474949218" border="0" /&gt;&lt;/a&gt;Step 2: Align this piece of paint to the center of the stage both horizontally and vertically.  You can do this through the Align panel which you can bring up through the hotkey &lt;span style="font-style: italic;"&gt;ctrl+k&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlO9iSZvenI/AAAAAAAAAHI/qp3lKNFNG9I/s1600-h/2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlO9iSZvenI/AAAAAAAAAHI/qp3lKNFNG9I/s320/2.gif" alt="" id="BLOGGER_PHOTO_ID_5067602402474949234" border="0" /&gt;&lt;/a&gt;Step 3: Symbolize the paint.  This symbol will be your background drawing, so call it something clever.  I called mine &lt;span style="font-weight: bold;"&gt;background&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlO9iiZveoI/AAAAAAAAAHQ/zc5Vj36hBfY/s1600-h/3.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlO9iiZveoI/AAAAAAAAAHQ/zc5Vj36hBfY/s320/3.gif" alt="" id="BLOGGER_PHOTO_ID_5067602406769916546" border="0" /&gt;&lt;/a&gt;Step 4: Symbolize the &lt;span style="font-weight: bold;"&gt;background&lt;/span&gt; symbol.  This new symbol will contain the motion tween that makes the background pan.  I named this symbol &lt;span style="font-weight: bold;"&gt;background_pan&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlO9iyZvepI/AAAAAAAAAHY/G5RZjqPfX8c/s1600-h/4.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlO9iyZvepI/AAAAAAAAAHY/G5RZjqPfX8c/s320/4.gif" alt="" id="BLOGGER_PHOTO_ID_5067602411064883858" border="0" /&gt;&lt;/a&gt;Step 5: Enter the symbol &lt;span style="font-weight: bold;"&gt;background_pan&lt;/span&gt;.  Then copy and paste-in-place the symbol &lt;span style="font-weight: bold;"&gt;background&lt;/span&gt; twice.  Place the first new instance butting up directly on the original instance's left side.  Place the second instance butting up on the original instances right side.  Only move these instances horizontally, and you might want to turn snapping on, to make sure these symbols are actually touching each other.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlO9iyZveqI/AAAAAAAAAHg/_AJyc1QCJR0/s1600-h/5.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlO9iyZveqI/AAAAAAAAAHg/_AJyc1QCJR0/s320/5.gif" alt="" id="BLOGGER_PHOTO_ID_5067602411064883874" border="0" /&gt;&lt;/a&gt;Step 6: Create a new keyframe farther down the timeline.  YOU MUST PICK AN EVEN KEYFRAME NUMBER. The frame number you pick will determine the speed of your background tween.  A low keyframe number like 60 will create a very fast background pan.  A high keyframe number like 700 will create a very slow pan.  For now just guess, you can mess around with it later.  I'm choosing 100 because it makes the math easier (there is a little math later on, stop crying).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlO_RCZverI/AAAAAAAAAHo/8RC6z2n3GhQ/s1600-h/6.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlO_RCZverI/AAAAAAAAAHo/8RC6z2n3GhQ/s320/6.gif" alt="" id="BLOGGER_PHOTO_ID_5067604305145461426" border="0" /&gt;&lt;/a&gt;Step 7: Do you want the background to move left or right?  Now is the time to decide.  I want my background to move from right to left so on frame 1 I deleted each instance of &lt;span style="font-weight: bold;"&gt;background&lt;/span&gt; except for the right most one.  On frame 100 I deleted every instance except the leftmost one.  In the screen shot below I am on frame one and have onion skinned the whole timeline.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlO_RSZvesI/AAAAAAAAAHw/k69QC7T9E9I/s1600-h/7.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlO_RSZvesI/AAAAAAAAAHw/k69QC7T9E9I/s320/7.gif" alt="" id="BLOGGER_PHOTO_ID_5067604309440428738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Step 8: Motion tween the two keyframes.  No easing!  Here you will get an idea of your pan's speed.  Now is the time to make adjustments to the timing by changing the frame number of the second key frame, but remember YOU MUST PICK AN EVEN NUMBER.  I'm stubborn so I'm sticking with 100.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlO_RiZvetI/AAAAAAAAAH4/GVWVdqdPekE/s1600-h/8.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlO_RiZvetI/AAAAAAAAAH4/GVWVdqdPekE/s320/8.gif" alt="" id="BLOGGER_PHOTO_ID_5067604313735396050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 9: Big step!  Exit &lt;span style="font-weight: bold;"&gt;background_pan&lt;/span&gt;.  Now that you're on the stage, make the file's timeline longer than the pan length inside &lt;span style="font-weight: bold;"&gt;background_pan&lt;/span&gt; (you can't show off a background looping if you don't hold on it long enough).  Then copy &lt;span style="font-weight: bold;"&gt;background_pan&lt;/span&gt; and paste it in place on a new layer.  Then change the starting frame for the new instance following this simple formula: Length of pan divided by two, plus one.  Or if you want to look fancy, L/2 + 1.  My pan is 100 frames long, 100 divided by two is 50, and adding one to that gives me 51, so my starting frame is 51.  Now you see why I told you it's important to pick an even number for your panning length.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_RAtqBrNNCnk/RlO_RiZveuI/AAAAAAAAAIA/mktigRQTnaI/s1600-h/9.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_RAtqBrNNCnk/RlO_RiZveuI/AAAAAAAAAIA/mktigRQTnaI/s320/9.gif" alt="" id="BLOGGER_PHOTO_ID_5067604313735396066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Step 10: Make sure both symbols are set to loop and hit play.  It almost works!  But there's a problem, there is a gap between the two background instances.  I honestly have no idea why this happens, but it does.  The length of your pan will effect how much of a gap there is.  If your pan is fast the gap will be bigger, if your pan is slower, the gap will be smaller.  To fix this problem we're going to go into the background symbol and stretch it, but the amount we stretch it will be determined by the speed of your pan, so make sure you like your speed before going any farther.&lt;br /&gt;&lt;br /&gt;Step 11: Go inside the &lt;span style="font-weight: bold;"&gt;background_pan&lt;/span&gt; instance whose start frame you adjusted.  Go to that new starting frame inside the symbol (But if you're good and are using &lt;a href="http://www.dave-logan.com/weblog/?p=46"&gt;Enter Graphic at Current Frame&lt;/a&gt; you're already right there).  Make a keyframe, so that you can now enter the symbol &lt;span style="font-weight: bold;"&gt;background&lt;/span&gt; at that position.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlO_RyZvevI/AAAAAAAAAII/aWUHiFniqIk/s1600-h/10.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlO_RyZvevI/AAAAAAAAAII/aWUHiFniqIk/s320/10.gif" alt="" id="BLOGGER_PHOTO_ID_5067604318030363378" border="0" /&gt;&lt;/a&gt;Step 12: Now we stretch the paint.  But there's a problem.  Normally if you select the paint, hit q to enable free transform, and try to stretch the paint, it only stretches in one direction&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlPEdyZvewI/AAAAAAAAAIQ/i9eiu_goydA/s1600-h/11.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlPEdyZvewI/AAAAAAAAAIQ/i9eiu_goydA/s320/11.gif" alt="" id="BLOGGER_PHOTO_ID_5067610021746932482" border="0" /&gt;&lt;/a&gt;Step 13: But if you hold ALT while stretching the paint, it will now stretch from the center, which is what we want.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_RAtqBrNNCnk/RlPE8yZvexI/AAAAAAAAAIY/aixUM99kiSg/s1600-h/12.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_RAtqBrNNCnk/RlPE8yZvexI/AAAAAAAAAIY/aixUM99kiSg/s320/12.gif" alt="" id="BLOGGER_PHOTO_ID_5067610554322877202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Step 14: Zoom in really close to one edge and stretch the paint while holding down ALT.  You'll notice that the  other instance of the background is adjusting as well, this is because you're holding alt so both sides are moving.  Stretch the paint so that the instance your adjusting is just touching the tinted instance still outside on the stage.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlPE9CZveyI/AAAAAAAAAIg/LenGWjCsqTQ/s1600-h/13.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlPE9CZveyI/AAAAAAAAAIg/LenGWjCsqTQ/s320/13.gif" alt="" id="BLOGGER_PHOTO_ID_5067610558617844514" border="0" /&gt;&lt;/a&gt;Step 15: Great!  Now we have the exact size the background needs to be, so go and draw your background on a new layer that's above the paint square.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_RAtqBrNNCnk/RlPE9CZvezI/AAAAAAAAAIo/gGYtSQpjLDw/s1600-h/14.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_RAtqBrNNCnk/RlPE9CZvezI/AAAAAAAAAIo/gGYtSQpjLDw/s320/14.gif" alt="" id="BLOGGER_PHOTO_ID_5067610558617844530" border="0" /&gt;&lt;/a&gt;Step 16: There are a couple things you'll notice looking at my background drawing.  First of all, it's not a good drawing.  That's my fault, I wasn't trying too hard.  Second, a bunch of the horizontal lines overshoot the background image size we've established.  That'll be an easy fix we'll take care of in a bit.  The bigger problem is with the table I've drawn.  To place the table where I want it to be, it now WAY overshoots the background boundary.  To fix this, just cut out the overshooting part of the table and paste it in-bounds on the other side of the background.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlPE9SZve0I/AAAAAAAAAIw/CqprplztB5o/s1600-h/15.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlPE9SZve0I/AAAAAAAAAIw/CqprplztB5o/s320/15.gif" alt="" id="BLOGGER_PHOTO_ID_5067610562912811842" border="0" /&gt;&lt;/a&gt;Step 17: To fix the other overshooting lines, take the paint square, bring that layer on top and convert it to a mask&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RAtqBrNNCnk/RlPE9SZve1I/AAAAAAAAAI4/10nxAbpmDQs/s1600-h/16.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_RAtqBrNNCnk/RlPE9SZve1I/AAAAAAAAAI4/10nxAbpmDQs/s320/16.gif" alt="" id="BLOGGER_PHOTO_ID_5067610562912811858" border="0" /&gt;&lt;/a&gt;Step 18: Go out to the stage and enjoy your looping background.  Here's a swf of mine.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="320" height="240"&gt;&lt;br /&gt;&lt;param name="movie" value="loopingpan.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/loopingpan.swf" width="320" height="240"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;As I said, this technique can also be altered a bit to create mutliplaning pans like this one.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="300" height="160"&gt;&lt;br /&gt;&lt;param name="movie" value="multiplane.swf"&gt;&lt;br /&gt;&lt;embed src="http://www.adamsacks.com/multiplane.swf" width="290" height="160"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;If people are interested I can go into the next steps you'd need to take in order to make the multiplane work.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;And remember, I am now offering this tutorial's FLA for 3 dollars through PayPal. Currently it's only available for Flash CS3 and up, but if there's demand I can make it for other versions as well. The FLA includes the looping background pan and the multiplaning looping background pan.&lt;/span&gt;&lt;br /&gt;&lt;form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;br /&gt;&lt;input name="cmd" value="_s-xclick" type="hidden"&gt;&lt;br /&gt;&lt;input name="hosted_button_id" value="1784478" type="hidden"&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td&gt;&lt;input name="on0" value="E-mail address you'd like to receive .ZIP file (25 kb)" type="hidden"&gt;E-mail address you'd like to receive .ZIP file (25 kb)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;input name="os0" maxlength="60" type="text"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;input src="https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif" name="submit" alt="" type="image" border="0"&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9104039768862242324-4890625456330538082?l=flashtrick.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flashtrick.blogspot.com/feeds/4890625456330538082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9104039768862242324&amp;postID=4890625456330538082' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/4890625456330538082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9104039768862242324/posts/default/4890625456330538082'/><link rel='alternate' type='text/html' href='http://flashtrick.blogspot.com/2007/05/looping-background-pans.html' title='Looping Background Pans'/><author><name>Adam Sacks</name><uri>http://www.blogger.com/profile/02212978731747654363</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_RAtqBrNNCnk/SLoaui7YfJI/AAAAAAAABjw/ZmeFPTyAASw/s1600-R/beard_small.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_RAtqBrNNCnk/RlO9iSZvemI/AAAAAAAAAHA/8OiEnvr4rQU/s72-c/1.gif' height='72' width='72'/><thr:total>7</thr:total></entry></feed>
