<?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-5559978718450827877</id><updated>2011-08-05T12:33:06.788-07:00</updated><category term='flash'/><category term='yahoo'/><category term='Google co-op'/><category term='SQL'/><category term='wild animals'/><category term='doe'/><category term='beach'/><category term='AJAX'/><category term='redwood'/><category term='regexp'/><category term='fox'/><category term='parsing'/><category term='api'/><category term='open source'/><category term='accessible'/><category term='collision'/><category term='demo'/><category term='yert'/><category term='detection'/><category term='accessibility'/><category term='weatherbug'/><category term='toy'/><category term='animation'/><category term='rss'/><category term='buttonmode'/><category term='mashup'/><category term='cake'/><category term='crochet'/><category term='tomato'/><category term='flashlite'/><category term='pipes'/><category term='immersion'/><category term='tab'/><category term='weather'/><category term='xml'/><category term='flashforward'/><category term='seaweed'/><category term='tutorial'/><category term='AS3'/><category term='scope'/><category term='sidescroller'/><category term='tweens'/><category term='tabbing'/><category term='tabindex'/><category term='pigs'/><category term='regular expression'/><category term='event handler'/><category term='game'/><category term='lipsynching'/><category term='bitmapdata'/><category term='tip'/><category term='PHP'/><category term='indoor plumbing'/><category term='regex'/><category term='text'/><category term='web2.0'/><category term='508 accessible accessibility tabindex tab tabbing'/><category term='as2'/><category term='chumby'/><category term='caller'/><category term='innovation'/><category term='508'/><category term='contact lens'/><category term='moth'/><category term='tween'/><category term='bitmap'/><category term='delegate'/><title type='text'>Animate in Exile</title><subtitle type='html'>Travels, experiments, and stories from the life of a Flash Game Developer.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-6163452665652611682</id><published>2009-03-23T21:48:00.001-07:00</published><updated>2009-03-23T22:55:49.719-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='collision'/><category scheme='http://www.blogger.com/atom/ns#' term='detection'/><category scheme='http://www.blogger.com/atom/ns#' term='AS3'/><category scheme='http://www.blogger.com/atom/ns#' term='bitmap'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Metamorphosis Game Demo: A Study in Bitmap Collision Detection</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sizzlepopboom.com/index.php?co=swf&amp;amp;swf=metamorphosisDemo&amp;amp;h=600&amp;amp;w=800"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 223px;" src="http://1.bp.blogspot.com/_0as7c1TXCWw/SchuT3p7IPI/AAAAAAAAAGQ/M0a1gIRM5k4/s320/metamorphosis_thumb.gif" alt="" id="BLOGGER_PHOTO_ID_5316620647747231986" border="0" /&gt;&lt;/a&gt;It's been a while since I mentioned Bitmap Collision Detection and I thought a game demo was in order. As I mentioned earlier Bitmap Collision Detection works by taking a small sample area and seeing if it contains certain colors or if it's colors reach a set threshold. Below is a demo of a game I'm working on called Metamorphosis (inspired by Kafka's work of the same name). To play you simply make your way through the maze of dark objects without touching any of them.&lt;br /&gt;&lt;br /&gt;So far this game runs very well. The only problem I've found with it is that if you move the mouse very quickly you are sometimes able to skip over dark sections. This is more due to sample rate rather than the type of the detection. Regardless of it's shortcomings, Bitmap Collision Detection has worked very well in my tests and it has the benefit of creating new levels with minimal code. In the Metamorphosis demo adding a new level is a simple matter of adding a reference to the movie clip containing the level art to an array which keeps track of the levels. The game plays through the level and once it is passed, moves on to the next level on the list without any additional collision detection code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-6163452665652611682?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/6163452665652611682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=6163452665652611682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/6163452665652611682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/6163452665652611682'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2009/03/its-been-while-since-i-mentioned-bitmap.html' title='Metamorphosis Game Demo: A Study in Bitmap Collision Detection'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_0as7c1TXCWw/SchuT3p7IPI/AAAAAAAAAGQ/M0a1gIRM5k4/s72-c/metamorphosis_thumb.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-3170626963728931408</id><published>2008-09-30T20:11:00.000-07:00</published><updated>2008-09-30T20:58:45.989-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tween'/><category scheme='http://www.blogger.com/atom/ns#' term='buttonmode'/><category scheme='http://www.blogger.com/atom/ns#' term='tweens'/><title type='text'>A couple small tips</title><content type='html'>Recently I had a problem with tweens not completing their animations. I did some testing and found the reason that my tweens were stopping was that they were prematurely garbage collected. The way to fix this is to store a reference to them in a global variable (I used a dictionary). Since the dictionary is a global variable it is not garbage collected, there is always a reference to the tween so it is not garbage collected. &lt;br /&gt;&lt;br /&gt;Another small problem I've encountered involves using movie clips as buttons. In order to get the hand icon to appear when the cursor mouses over the movie clip be sure to set the move clip's buttonMode=true.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-3170626963728931408?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/3170626963728931408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=3170626963728931408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/3170626963728931408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/3170626963728931408'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2008/09/couple-small-tips.html' title='A couple small tips'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-3117618237184138923</id><published>2008-08-06T11:54:00.000-07:00</published><updated>2009-03-23T21:59:29.998-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bitmapdata'/><category scheme='http://www.blogger.com/atom/ns#' term='collision'/><category scheme='http://www.blogger.com/atom/ns#' term='detection'/><category scheme='http://www.blogger.com/atom/ns#' term='sidescroller'/><category scheme='http://www.blogger.com/atom/ns#' term='bitmap'/><title type='text'>Bitmap Collision Detection</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sizzlepopboom.com/toys/bitmap_collision_demo.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_0as7c1TXCWw/SJoHFUfWNTI/AAAAAAAAAEc/OKq3wUaKB_w/s320/bmp_demo.gif" alt="" id="BLOGGER_PHOTO_ID_5231501705125180722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Since I got into bitmap data manipulation I've been coming up with some pretty strange ideas of what to do with it. Bitmap collision detection was something I thought up a couple months ago and was curious to see if it was possible.&lt;br /&gt;&lt;br /&gt;The basic idea is that you are taking a snapshot of the screen on every frame (or whenever you want to detect collisions) and then using a very small sample area you check for colors or a range of colors. If you find the colors, then a collision occurs.&lt;br /&gt;&lt;br /&gt;I made a basic demo of the idea for you to play with here: &lt;a href="http://www.sizzlepopboom.com/toys/bitmap_collision_demo.html"&gt;http://www.sizzlepopboom.com/toys/bitmap_collision_demo.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Draw some lines by dragging the circles around. When you mouse over red, green, or blue, it will  display a hit detected result. The sample area used for detection is a 12x12 pixel square centered on the mouse. This square is displayed in the demo at the top left.&lt;br /&gt;&lt;br /&gt;This demo shows how you can detect not only collisions but colors of collisions. Taking the example of a sidescroller, you could set red to mean fire, blue to mean water, and use green for walls. When a character traveling through the sidescroller encounters one of these colors they could respond by burning up, drowning, or coming to rest after a jump or fall.&lt;br /&gt;&lt;br /&gt;The best part about using bitmap collision detection in this sidescroller example is that to create a new level, you could just make new art and not do additional programming. Also as demonstrated in the demo, you can draw new collision areas during runtime.&lt;br /&gt;&lt;br /&gt;In order to make the levels look nicer another trick could be used. First you create the final art for the level, then using that as guide to draw a piece of art the same size draw in the collision areas. Then when you play move the two pieces together but detect collision only on the hidden piece. This way you can use any colors you want for the final art and still have the ease of drawing in collision areas.&lt;br /&gt;&lt;br /&gt;Bitmap collision detection also has the benefit being independent from the shape of the object being detected. Because there is no need to worry about bounding boxes, complex shapes (spiral) and simple shapes (rectangle)  are detected using the same technique.&lt;br /&gt;&lt;br /&gt;Using bitmap detection it would be possible to make a sidescroller template that would allow users to add their own custom artwork and make it playable without any coding on the user's part. Bitmap Detection so far hasn't been too processor intensive but should it prove to be a problem, things could be made more efficient by checking every other pixel in the 12x12 sample area.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-3117618237184138923?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/3117618237184138923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=3117618237184138923' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/3117618237184138923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/3117618237184138923'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2008/08/bitmap-collision-detection.html' title='Bitmap Collision Detection'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0as7c1TXCWw/SJoHFUfWNTI/AAAAAAAAAEc/OKq3wUaKB_w/s72-c/bmp_demo.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-6657237008359298098</id><published>2008-07-22T11:31:00.000-07:00</published><updated>2008-11-12T22:30:44.399-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='accessible'/><category scheme='http://www.blogger.com/atom/ns#' term='accessibility'/><category scheme='http://www.blogger.com/atom/ns#' term='tabbing'/><category scheme='http://www.blogger.com/atom/ns#' term='508'/><category scheme='http://www.blogger.com/atom/ns#' term='tab'/><category scheme='http://www.blogger.com/atom/ns#' term='tabindex'/><title type='text'>Acessibility in AS3</title><content type='html'>I've recently finished up a batch of Flash projects that were written using AS3 and needed to be 508 compliant (government-mandated accessibility). Since virtually everything I make at work must be accessible, I made a class to make adding accessibility much easier. Over the past couple of months I've been using it and refining it to handle all the problems I've come across. Now in hopes of encouraging accessibility and simplifying the process of learning how to do it, I'm making my accessibility class open source (GNUv3 license). You can download the accessibility class at:&lt;br /&gt;&lt;a href="http://code.google.com/p/accessible/"&gt;http://code.google.com/p/accessible/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've also included some great links are there for finding most anything you might need to know about accessibility. Documentation is also available on the wiki and as a .pdf in the download.&lt;br /&gt;&lt;br /&gt;You can see my earlier post on &lt;a href="http://animateinexile.blogspot.com/2008/03/making-games-accessible.html"&gt;Accessibility&lt;/a&gt; for some information on doing accessibility in As2.&lt;br /&gt;&lt;br /&gt;If you want to get started in accessibility I highly recommend reading &lt;a href="http://www.adobe.com/resources/accessibility/best_practices/bp_fp.html"&gt;Bob Regan's whitepaper&lt;/a&gt;.&lt;br /&gt;It covers AS2 but the issues with accessibility are pretty much the same. Then download my Accessible class for AS3 and look through the links on my wiki. Finally if you need to look up something specific try my &lt;a href="http://www.google.com/coop/cse?cx=018352234381570403012%3A7g9glmmjrv0"&gt;Flash Developer Search&lt;/a&gt;, it only searches sites with Flash related content and is one of my favorite tools as a Flash Developer.&lt;br /&gt;&lt;br /&gt;As far as the features I've given the Accessible class, my favorite is automatic assignment and organization of tabIndexes. It also will format text to be read properly by a screen reader and provides tools such as keyTrace which make looking up key codes very simple. I wrote this class to reduce the problem of spaghetti code that often is created by adding accessibility to existing projects. It does a good job of reducing the lines I need to write but always take time to thoroughly test your projects using a screen reader and the keyboard for navigation. Often it is when I turn of my monitor and try to play one of my games I realize how adding simple things like audio cues can make a game much more easy to play.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0as7c1TXCWw/SIeTe8LGfBI/AAAAAAAAAEU/InrCwIaak7k/s1600-h/bg-ola-WorldHealth.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_0as7c1TXCWw/SIeTe8LGfBI/AAAAAAAAAEU/InrCwIaak7k/s320/bg-ola-WorldHealth.png" alt="" id="BLOGGER_PHOTO_ID_5226308052344798226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You can see some of my accessible projects at the &lt;a href="http://www.nlm.nih.gov/medlineplus/languages/map.html"&gt;MedlinePlus interactive world map&lt;/a&gt; and the&lt;a href="http://apps.nlm.nih.gov/againsttheodds/online_activities/index.cfm"&gt; games for the National Library of Medicine's exhibit "Against the Odds"&lt;/a&gt;. Without a screen reader you will be able to navigate using a keyboard, and with an active screen reader you will hear audio cues and descriptions to help you play the games.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-6657237008359298098?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/6657237008359298098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=6657237008359298098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/6657237008359298098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/6657237008359298098'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2008/07/acessibility-in-as3.html' title='Acessibility in AS3'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_0as7c1TXCWw/SIeTe8LGfBI/AAAAAAAAAEU/InrCwIaak7k/s72-c/bg-ola-WorldHealth.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-8945821581704474485</id><published>2008-07-11T11:48:00.000-07:00</published><updated>2008-11-12T22:30:45.128-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='regexp'/><category scheme='http://www.blogger.com/atom/ns#' term='api'/><category scheme='http://www.blogger.com/atom/ns#' term='regular expression'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='weather'/><category scheme='http://www.blogger.com/atom/ns#' term='AS3'/><category scheme='http://www.blogger.com/atom/ns#' term='weatherbug'/><title type='text'>WeatherBug API Part 2: A lesson in Regular Expressions</title><content type='html'>Since my last post I've been working on a WeatherBug widget. I had some extra time to work on it so I thought I'd do something cool and make a series of particle behaviors to illustrate different weather patterns.  You can see the finished product here: &lt;a href="http://www.sizzlepopboom.com/open_source/weatherBug_2.html"&gt;http://www.sizzlepopboom.com/open_source/weatherBug_2.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This widget animates the weather patterns, allows you to change location by entering in a zip code, links to the forecast page for that area, and in the event of a weather alert, a button will appear which when clicked will open a page for the weather alerts in that area. (I've been using the recent California fires to test the alert system.) This widget is also accessible to the vision and mobility impaired (still testing to ensure ease of use).&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0as7c1TXCWw/SHe3NpHQClI/AAAAAAAAADs/th7pzc4zfMA/s1600-h/california_fires_01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_0as7c1TXCWw/SHe3NpHQClI/AAAAAAAAADs/th7pzc4zfMA/s320/california_fires_01.jpg" alt="" id="BLOGGER_PHOTO_ID_5221843737961826898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once I created my particles and their behavior patterns, I needed some way to parse through the 176 documented types of weather conditions that were published by WeatherBug and create appropriate behavior for each condition.&lt;br /&gt;&lt;br /&gt;I did this by using a series of &lt;a href="http://en.wikipedia.org/wiki/Regular_expression"&gt;regular expressions&lt;/a&gt;. I made a dictionary set of regular expressions and the results I wanted them to return if there was a positive match. Then I made a function that goes through each expression in a specific order to test the weather. When it tests positive it stops the testing. This is important because changing the order will change which weather pattern is chosen when certain words are searched for. For example if there is a thunderstorm, I want rain and lightning, while if there is a chance of storms I would want rain alone. To make sure thunderstorm is chosen before my rain behavior I put its regular expression before the one for rain. If no matches are found, I default to sunny weather.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is a snippet of code:&lt;br /&gt;&lt;br /&gt;//tells what type of particles to make&lt;br /&gt;var behavior:String;&lt;br /&gt;//store the search expressions&lt;br /&gt;var tests = new Dictionary();&lt;br /&gt;tests["snowReg"] = /(snow|sleet|freez|frozen|flurr|snowstorm)/i;&lt;br /&gt;tests["snowReg"].result = "snow";&lt;br /&gt;tests["sunReg"] = /(sun|clear|fair)/i;&lt;br /&gt;tests["sunReg"].result = "sunny";&lt;br /&gt;tests["thunderReg"] = /(thunder|lightning)/i;&lt;br /&gt;tests["thunderReg"].result = "thunder";&lt;br /&gt;tests["rainReg"] = /(rain|storm|drizzle|hurricane)/i;&lt;br /&gt;tests["rainReg"].result = "rain";&lt;br /&gt;tests["cloudReg"] = /(cloud|smoke)/i;&lt;br /&gt;tests["cloudReg"].result = "cloudy";&lt;br /&gt;tests["windReg"]= /(wind)/i;&lt;br /&gt;tests["windReg"].result = "windy";&lt;br /&gt;tests["fogReg"] = /(fog)/i;&lt;br /&gt;tests["fogReg"].result = "fog";&lt;br /&gt;tests["hazyReg"] = /(haz)/i;&lt;br /&gt;tests["hazyReg"].result = "hazy";&lt;br /&gt;&lt;br /&gt;//store the order you want to test for weather&lt;br /&gt;var testList = new Array("sunReg","thunderReg","rainReg","snowReg","cloudReg","hazyReg","windReg","fogReg");&lt;br /&gt;&lt;br /&gt;for (var i = 0; i&amp;lt;testList.length; i++) {&lt;br /&gt;      if (tests[testList[i]].exec(condition)!=null) {&lt;br /&gt;          behavior = tests[testList[i]].result;&lt;br /&gt;          break;&lt;br /&gt;          //if no matches then use the default sunny behavior&lt;br /&gt;      } else {&lt;br /&gt;          behavior = "sunny";&lt;br /&gt;      }&lt;br /&gt;  }&lt;testlist.length; if="" no="" matches="" then="" use="" the="" default="" sunny="" else="" behavior="tests[testList[i]].result;"&gt;&lt;testlist.length; if="" no="" matches="" then="" use="" the="" default="" sunny="" else="" behavior="tests[testList[i]].result;"&gt;&lt;testlist.length; if="" no="" matches="" then="" use="" default="" sunny="" else="" behavior="tests[testList[i]].result;" this="" code="" tests="" and="" gives="" an="" appropriate="" response="" to="" all="" of="" the="" 176="" weather="" conditions="" defined="" by=""&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weather.weatherbug.com/corporate/products/API/Cond_Icon_Desc.txt"&gt;Here is the list of documented weather conditions.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/testlist.length;&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0as7c1TXCWw/SHe3p23t-8I/AAAAAAAAAD0/sP9JZAz2hJo/s1600-h/hurricane.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_0as7c1TXCWw/SHe3p23t-8I/AAAAAAAAAD0/sP9JZAz2hJo/s320/hurricane.jpg" alt="" id="BLOGGER_PHOTO_ID_5221844222691113922" border="0" /&gt;&lt;/a&gt;&lt;testlist.length; if="" no="" matches="" then="" use="" default="" sunny="" else="" behavior="tests[testList[i]].result;" this="" code="" tests="" and="" gives="" an="" appropriate="" response="" to="" all="" of="" the="" 176="" weather="" conditions="" defined="" by=""&gt;As I was working on this widget I noticed two things. First there are more weather patterns than what is on this list ("Light Thunderstorms" and "Smoke" are not on the list). Second when you are testing weather patterns, Flash may cache the information so that you don't seem to be getting accurate information. I noticed this when I was working on the widget and a thunderstorm began, but the widget said it was partially cloudy. Restarting Flash solved the problem. Remember this while developing; once the widget is online the weather info will not be cached.&lt;br /&gt;&lt;br /&gt;&lt;/testlist.length;&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0as7c1TXCWw/SHe4DbAqCQI/AAAAAAAAAD8/2ZLVa1XAqFM/s1600-h/tornado.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 283px; height: 170px;" src="http://1.bp.blogspot.com/_0as7c1TXCWw/SHe4DbAqCQI/AAAAAAAAAD8/2ZLVa1XAqFM/s320/tornado.jpg" alt="" id="BLOGGER_PHOTO_ID_5221844661889009922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;testlist.length; if="" no="" matches="" then="" use="" default="" sunny="" else="" behavior="tests[testList[i]].result;" this="" code="" tests="" and="" gives="" an="" appropriate="" response="" to="" all="" of="" the="" 176="" weather="" conditions="" defined="" by=""&gt;Another thing I did to make the widget cooler was to do another testing of the weather condition to see the magnitude of the weather. I set up three different magnitudes: light, average, and heavy.  Then I searched through the weather conditions for words that indicated the amount (heavy, chance, light, etc.). Using this information I changed the number of particles to use for each weather pattern and so the animations change to match both the weather and the amount of precipitation. For a few weather patterns I further manipulated the magnitude to ensure a better looking animation.&lt;br /&gt;Here is the code for determining the magnitude:&lt;br /&gt;&lt;br /&gt;//now test the amount of precipitation&lt;br /&gt;&lt;br /&gt;var strength:String;&lt;br /&gt;var amount:Dictionary = new Dictionary();&lt;br /&gt;amount["mildReg"] = /(light|chance|scatter|partly)/i;&lt;br /&gt;amount["mildReg"].result ="mild";&lt;br /&gt;amount["midReg"] = /(mostly|increas)/i;&lt;br /&gt;amount["midReg"].result = "average";&lt;br /&gt;amount["heavyReg"] = /(heavy|hurricane|smoke)/i;&lt;br /&gt;amount["heavyReg"].result = "heavy";&lt;br /&gt;var magnitude:Array = new Array("mildReg","midReg","heavyReg");&lt;br /&gt;for (var j = 0; j&amp;lt;magnitude.length; j++) {&lt;br /&gt;      if (amount[magnitude[j]].exec(condition)!=null) {&lt;br /&gt;          strength = amount[magnitude[j]].result;&lt;br /&gt;          break;&lt;br /&gt;      } else {&lt;br /&gt;          strength = "average";&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;  //adjust the amount of particles to use&lt;br /&gt;&lt;br /&gt;  var numParticles:uint;&lt;br /&gt;  switch (strength) {&lt;br /&gt;      case "mild" :&lt;br /&gt;          numParticles = 50;&lt;br /&gt;          break;&lt;br /&gt;      case "average" :&lt;br /&gt;          numParticles = 100;&lt;br /&gt;          break;&lt;br /&gt;      case "heavy" :&lt;br /&gt;          numParticles = 300;&lt;br /&gt;          break;&lt;br /&gt;      default :&lt;br /&gt;          numParticles = 100;&lt;br /&gt;  }&lt;magnitude.length; if="" else="" strength="amount[magnitude[j]].result;"&gt;&lt;magnitude.length; strength="amount[magnitude[j]].result;" adjust="" particles="" var="" mild="" average="" heavy="" now="" have="" pattern="" magnitude="" statement="" create="" visuals="" switch="" sunny="" hazy="" haze="" rain="" snow="" windy="" change="" amount="" things="" blowing="" in="" wind="" so="" does="" look="" ridiculous="" should="" always="" be="" thick="" numparticles="50;" fog="" thunder="" thunderstorm="" case="" cloudy="" cloud="" code="" here="" see="" isn="" t="" too="" difficult="" handle="" large="" variety="" of="" patterns="" when="" use="" regular="" plus="" if="" you="" run="" an="" expression="" not="" list="" it="" may="" still="" sort="" into="" proper="" animation="" or="" else="" show="" up="" default="" while="" was="" making="" this="" widget="" did="" add="" a="" few="" features="" weatherbug="" that="" i="" previously="" made="" version="" has="" some="" added="" functionality="" getting="" information="" on="" alerts="" well="" as="" storing="" links="" to="" weather="" alert="" pages="" and="" forecast="" page="" for="" region="" being="" looked="" the="" updated="" class="" is="" available=""&gt;&lt;br /&gt;&lt;br /&gt;A widget and my updated open source WeatherBug class are available here:&lt;br /&gt;&lt;a href="http://www.sizzlepopboom.com/open_source/weatherbug.zip"&gt;http://www.sizzlepopboom.com/open_source/weatherbug.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/magnitude.length;&gt;&lt;/magnitude.length;&gt;&lt;/testlist.length;&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0as7c1TXCWw/SHe5FDzhYFI/AAAAAAAAAEM/ym429zLT2Wc/s1600-h/1111px-Mammatus_cloud_panorama.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 394px; height: 100px;" src="http://3.bp.blogspot.com/_0as7c1TXCWw/SHe5FDzhYFI/AAAAAAAAAEM/ym429zLT2Wc/s320/1111px-Mammatus_cloud_panorama.jpg" alt="" id="BLOGGER_PHOTO_ID_5221845789531267154" border="0" /&gt;&lt;/a&gt;&lt;testlist.length; if="" no="" matches="" then="" use="" default="" sunny="" else="" behavior="tests[testList[i]].result;" this="" code="" tests="" and="" gives="" an="" appropriate="" response="" to="" all="" of="" the="" 176="" weather="" conditions="" defined="" by=""&gt;&lt;magnitude.length; if="" else="" strength="amount[magnitude[j]].result;"&gt;&lt;magnitude.length; strength="amount[magnitude[j]].result;" adjust="" particles="" var="" mild="" average="" heavy="" now="" have="" pattern="" magnitude="" statement="" create="" visuals="" switch="" sunny="" hazy="" haze="" rain="" snow="" windy="" change="" amount="" things="" blowing="" in="" wind="" so="" does="" look="" ridiculous="" should="" always="" be="" thick="" numparticles="50;" fog="" thunder="" thunderstorm="" case="" cloudy="" cloud="" code="" here="" see="" isn="" t="" too="" difficult="" handle="" large="" variety="" of="" patterns="" when="" use="" regular="" plus="" if="" you="" run="" an="" expression="" not="" list="" it="" may="" still="" sort="" into="" proper="" animation="" or="" else="" show="" up="" default="" while="" was="" making="" this="" widget="" did="" add="" a="" few="" features="" weatherbug="" that="" i="" previously="" made="" version="" has="" some="" added="" functionality="" getting="" information="" on="" alerts="" well="" as="" storing="" links="" to="" weather="" alert="" pages="" and="" forecast="" page="" for="" region="" being="" looked="" the="" updated="" class="" is="" available=""&gt;For more information on how to use regular expressions in flash check out Adobe's Regex page: at:&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/RegExp.html"&gt;http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/RegExp.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To learn more about writing regular expressions here is a good reference:&lt;br /&gt;&lt;a href="http://www.regular-expressions.info/reference.html"&gt;http://www.regular-expressions.info/reference.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/magnitude.length;&gt;&lt;/magnitude.length;&gt;&lt;/testlist.length;&gt;&lt;/testlist.length;&gt;&lt;/testlist.length;&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0as7c1TXCWw/SHe4qR-WM8I/AAAAAAAAAEE/iDz3PXOG9-Y/s1600-h/HearingImpaired324.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 97px; height: 96px;" src="http://1.bp.blogspot.com/_0as7c1TXCWw/SHe4qR-WM8I/AAAAAAAAAEE/iDz3PXOG9-Y/s320/HearingImpaired324.jpg" alt="" id="BLOGGER_PHOTO_ID_5221845329478300610" border="0" /&gt;&lt;/a&gt;Finally here is an excerpt from an accessibility class I'm working on. This function prepares text for screen readers by stripping out any tags and capitalizing all lone "a"s and "i"s so screen readers will pronounce them correctly.&lt;br /&gt;&lt;/div&gt;&lt;testlist.length; if="" no="" matches="" then="" use="" default="" sunny="" else="" behavior="tests[testList[i]].result;" this="" code="" tests="" and="" gives="" an="" appropriate="" response="" to="" all="" of="" the="" 176="" weather="" conditions="" defined="" by=""&gt;&lt;magnitude.length; if="" else="" strength="amount[magnitude[j]].result;"&gt;&lt;magnitude.length; strength="amount[magnitude[j]].result;" adjust="" particles="" var="" mild="" average="" heavy="" now="" have="" pattern="" magnitude="" statement="" create="" visuals="" switch="" sunny="" hazy="" haze="" rain="" snow="" windy="" change="" amount="" things="" blowing="" in="" wind="" so="" does="" look="" ridiculous="" should="" always="" be="" thick="" numparticles="50;" fog="" thunder="" thunderstorm="" case="" cloudy="" cloud="" code="" here="" see="" isn="" t="" too="" difficult="" handle="" large="" variety="" of="" patterns="" when="" use="" regular="" plus="" if="" you="" run="" an="" expression="" not="" list="" it="" may="" still="" sort="" into="" proper="" animation="" or="" else="" show="" up="" default="" while="" was="" making="" this="" widget="" did="" add="" a="" few="" features="" weatherbug="" that="" i="" previously="" made="" version="" has="" some="" added="" functionality="" getting="" information="" on="" alerts="" well="" as="" storing="" links="" to="" weather="" alert="" pages="" and="" forecast="" page="" for="" region="" being="" looked="" the="" updated="" class="" is="" available=""&gt;&lt;br /&gt;//remove any html tags from text so the tags will not be read by the screen reader&lt;br /&gt;&lt;br /&gt;function stripTags(htmlText:String) {&lt;br /&gt;  var parseText = htmlText;&lt;br /&gt;  //Capitalize all a and i for screenreader correctness&lt;br /&gt;  parseText = parseText.replace(/\sa\s/," A ");&lt;br /&gt;  parseText = parseText.replace(/\si\s/," I ");&lt;br /&gt;  //strip tags&lt;br /&gt;  return parseText.replace(/&lt;.*?&gt;/g,"");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/magnitude.length;&gt;&lt;/magnitude.length;&gt;&lt;/testlist.length;&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-8945821581704474485?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/8945821581704474485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=8945821581704474485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8945821581704474485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8945821581704474485'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2008/07/weatherbug-api-part-2-lesson-in-regular.html' title='WeatherBug API Part 2: A lesson in Regular Expressions'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0as7c1TXCWw/SHe3NpHQClI/AAAAAAAAADs/th7pzc4zfMA/s72-c/california_fires_01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-3063017140916240489</id><published>2008-06-11T11:08:00.000-07:00</published><updated>2008-11-12T22:30:45.334-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='api'/><category scheme='http://www.blogger.com/atom/ns#' term='immersion'/><category scheme='http://www.blogger.com/atom/ns#' term='parsing'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><category scheme='http://www.blogger.com/atom/ns#' term='weather'/><category scheme='http://www.blogger.com/atom/ns#' term='AS3'/><category scheme='http://www.blogger.com/atom/ns#' term='weatherbug'/><title type='text'>WeatherBug API: A lesson in XML</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0as7c1TXCWw/SFA_L7ehb_I/AAAAAAAAADc/aNVpO4gEaHI/s1600-h/weatherbug.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_0as7c1TXCWw/SFA_L7ehb_I/AAAAAAAAADc/aNVpO4gEaHI/s320/weatherbug.jpg" alt="" id="BLOGGER_PHOTO_ID_5210734243044487154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Recently I was asked to make a &lt;a href="http://www.weatherbug.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;WeatherBug&lt;/span&gt;&lt;/a&gt; widget for my company's local intranet. Making the widget was easy enough, I wrote a class that connects to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;WeatherBug&lt;/span&gt; and retrieves the current weather conditions. The tricky part was parsing the XML in Flash since it has many levels of nested nodes and some of those nodes use a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;namespace&lt;/span&gt;. Because it took me a while to work through parsing the XML I've decided to make my code open source.&lt;br /&gt;&lt;br /&gt;The WeatherBug class and the .fla file I've made which demonstrates its use may be downloaded here: &lt;a href="http://sizzlepopboom.com/open_source/weatherbug.zip"&gt;http://sizzlepopboom.com/open_source/weatherbug.zip&lt;/a&gt;&lt;br /&gt;You can see the widget in action here:&lt;br /&gt;&lt;a href="http://sizzlepopboom.com/open_source/weatherbug.html"&gt;http://sizzlepopboom.com/open_source/weatherbug.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Don't forget to register to get you WeatherBugAPI Key and put it in the WeatherBug.as file otherwise it will not work.&lt;br /&gt;&lt;br /&gt;Here's a bit of advice on traversing the XML. There are three main issues I encountered in parsing my XML: 1. How do you access nodes within a namespace?, 2. How do you access nodes with names that use restricted characters?, 3. What's an easy way to traverse the XML without having to know the entire heirarchy of a node?&lt;br /&gt;&lt;br /&gt;Here are my answers:&lt;br /&gt;1. To access nodes within a namespace make  a namespace object for the XML you are using:&lt;br /&gt;ex:    var weatherNS:Namespace = new Namespace("http://www.aws.com/aws");&lt;br /&gt;&lt;br /&gt;Then use the format:&lt;br /&gt;namespace::nodeName&lt;br /&gt;namespace::@attributeName&lt;br /&gt;ex:    var highTemp = weatherXML..weatherNS::["temp-high"];&lt;br /&gt;&lt;br /&gt;Here's a tricky one to show you an attribute "hour-24" within the node "hour":&lt;br /&gt;ex:    var riseHour = weatherXML..weatherNS::sunrise..weatherNS::["hour"].@["hour-24"];&lt;br /&gt;&lt;br /&gt;2. Use brackets when you are trying to access nodes whose names use reserved characters; in fact if you want you can use brackets for regular names to if you want things to look consistent.&lt;br /&gt;ex:  var monthlyRain = weatherXML..weatherNS::["rain-month"];&lt;br /&gt;var link = weatherXML..image["link"];&lt;span style="font-style: italic;"&gt;    //without a reserved character&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;3. Use .. to search through the entire XML document without knowing the exact heirarchy; this is similar to the // used in XPath&lt;br /&gt;ex: var link = weatherXML..image["link"];&lt;br /&gt;var monthlyRain = weatherXML..weatherNS::["rain-month"]; &lt;span style="font-style: italic;"&gt;//within a namespace&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-When you are using .. be sure to check your results&lt;/span&gt;, if there are multiple nodes with the same name within an XML document you might end up with the values of several nodes. When there are multiple nodes, be sure to reference the parent of your target node to ensure you get only its value as a result.  See the link tag in the example above.&lt;br /&gt;&lt;br /&gt;Hopefully this helps you solve any of the tricky problems you may have using WeatherBug's API. If you do have more questions about using XML in Flash look at the source code I've provided and check out these sites:&lt;br /&gt;&lt;a href="http://www.kirupa.com/developer/flashcs3/using_xml_as3_pg1.htm"&gt;http://www.kirupa.com/developer/flashcs3/using_xml_as3_pg1.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/XML.html"&gt;http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/XML.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;plus there is a whole chapter on XML in Colin Moock's excellent book: &lt;a href="http://www.moock.org/eas3/"&gt;&lt;span style="font-style: italic;"&gt;Essential Actionscript 3&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0as7c1TXCWw/SFA_soFP68I/AAAAAAAAADk/N17Db05fRH4/s1600-h/Animal_Crossing_DS.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_0as7c1TXCWw/SFA_soFP68I/AAAAAAAAADk/N17Db05fRH4/s320/Animal_Crossing_DS.jpg" alt="" id="BLOGGER_PHOTO_ID_5210734804773891010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now that you know how to get WeatherBug information into Flash, I'd like to suggest some interesting ways you might be able to use the information.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I come from a background of making games so I've been intrigued with the idea of using real-world information in the form of XML feeds (like WeatherBug's) to control and influence elements within a game. The first thing I thought of was getting the current weather conditions and then replicating them within the world of the game. If you are playing on a rainy day, it will be raining in the game world. This becomes more interesting if you have characters, abilities, paths that are effected by the weather. A character could act more depressed if it's raining. Electric shock powers would be more powerful in very dry weather and more conductive in rainy weather. A path over a bridge could be flooded and inaccessible on rainy days.&lt;br /&gt;&lt;br /&gt;Weather could also be used to drive a game's economy (especially in agrarian societies). Good weather means higher yield of crops and lower prices. This way you would have realistic variation in your economy without having to make it very intelligent.&lt;br /&gt;&lt;br /&gt;Weather patterns can also be used to make cultural assumptions which can be useful in increasing the immersion of a player in the game. For example, if there has been a heavy snow children in a game might be staying at home instead of at school. The children would act happier being able to play all day and the adults would be more stressed from dealing with increased traffic. If the temperature has been exceptionally high characters in the game might go swimming more and as a consequence be tanner or sun-burnt. As you see, many assumptions can be made by analyzing weather patterns. Using these assumptions in a game environment will create much more realistic patterns of behavior with less complex AI. The use of weather information and the assumptions that can be made by analyzing it will greatly increase the sense of immersion in games as well as the overall cool factor of games seeming to know about the real world around it.&lt;br /&gt;&lt;br /&gt;If you are interested in parsing weather conditions with WeatherBug's feed here's a link to all the possible weather descriptions:&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: georgia;" href="http://weather.weatherbug.com/corporate/products/API/Cond_Icon_Desc.txt"&gt;&lt;span class="attribute-value"&gt;http://weather.weatherbug.com/corporate/products/API/Cond_Icon_Desc.txt&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are about 178 possible descriptions so here is my suggestion for parsing the information to something more manageable:&lt;br /&gt;&lt;br /&gt;Use indexOf to search a string for:&lt;br /&gt;Cloud&lt;br /&gt;&lt;br /&gt;Snow&lt;br /&gt;Frozen&lt;br /&gt;Flurry&lt;br /&gt;Sleet&lt;br /&gt;&lt;br /&gt;Rain&lt;br /&gt;Storms&lt;br /&gt;Thunder&lt;br /&gt;Showers&lt;br /&gt;&lt;br /&gt;Windy&lt;br /&gt;&lt;br /&gt;Fog&lt;br /&gt;&lt;br /&gt;Hazy&lt;br /&gt;&lt;br /&gt;Clear&lt;br /&gt;&lt;br /&gt;Searching for these words ought to give you a fair idea of what the weather is doing in most of the 178 different options. You can use sunny as the default weather.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-3063017140916240489?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/3063017140916240489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=3063017140916240489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/3063017140916240489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/3063017140916240489'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2008/06/weatherbug-api-lesson-in-xml.html' title='WeatherBug API: A lesson in XML'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_0as7c1TXCWw/SFA_L7ehb_I/AAAAAAAAADc/aNVpO4gEaHI/s72-c/weatherbug.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-7784516199256711222</id><published>2008-03-10T12:57:00.000-07:00</published><updated>2008-03-10T13:35:50.188-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='pipes'/><category scheme='http://www.blogger.com/atom/ns#' term='mashup'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><title type='text'>Yahoo Pipes is Awesome!</title><content type='html'>For anyone who hasn't tried &lt;a href="http://pipes.yahoo.com/pipes/"&gt;Yahoo Pipes&lt;/a&gt; yet check it out. Pipes allows you to create custom RSS feeds. This is very cool for making complex mash-ups. For example, a friend of mine is looking for an audio position in New York City. I created a simple pipe that uses Google's Job Search and the keyword audio and out came a list of job postings that were mostly relevant. After you make a pipe you can save it to your Yahoo or Google homepage, or access it as an RSS feed, etc.&lt;br /&gt;&lt;br /&gt;I heard about Yahoo Pipes from an installation artist who was searching news feeds for different words and then applying that data to a device that dripped paint on a canvas depending on the amount of data received. I was really impressed how easy it was for him to parse so much data down to a single feed.&lt;br /&gt;&lt;br /&gt;After playing with Pipes, I think it may be a good solution to an experiment I've been wanting to try. The idea is to get all sorts of real-world data into Flash, use that data to make inferences based on culture and psychology and then have it influence an interactive pet's emotion engine. More simply, if I know it's been rainy and there are a lot of negative keywords in the news the pet could be sadder than usual. If it is close to a cultural, religious, federal holiday the pet could be happier. It is my hope that by creating an emotion engine fed by this data, and then creating a personality that reacts to this data in a certain way, much more realistic virtual characters and environments could be created. Best of all if I use Pipes, I can keep most of the complex parsing out of Flash and use a single feed to get all the information I need.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-7784516199256711222?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/7784516199256711222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=7784516199256711222' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/7784516199256711222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/7784516199256711222'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2008/03/yahoo-pipes-is-awesome.html' title='Yahoo Pipes is Awesome!'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-1828048043940470786</id><published>2008-03-06T14:37:00.001-08:00</published><updated>2008-03-06T15:11:14.771-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='508 accessible accessibility tabindex tab tabbing'/><title type='text'>Making games accessible</title><content type='html'>Recently I've been making some games I've been working on accessible to the mobility and vision impaired to satisfy 508 compliance. This usually involves setting up tabIndex attributes and adding tags that screen readers can pick up.&lt;br /&gt;&lt;br /&gt;Here's a quick overview for adding accessibility using AS2&lt;br /&gt;&lt;br /&gt;Adding tabIndex is easy; just write:&lt;br /&gt;someObject.tabIndex = 3;&lt;br /&gt;to change it simply reassign the tabIndex a new value&lt;br /&gt;&lt;br /&gt;Adding alt tags for screenreaders requires a little bit more code;&lt;br /&gt;someObject._accProps = new Object();&lt;br /&gt;someObject._accProps.name = "Text for the screen reader";&lt;br /&gt;Accessibility.updateProperties();&lt;br /&gt;&lt;br /&gt;The last line updates the alt text; so if you want to change the alt text after setting it once:&lt;br /&gt;someObject._accProps.name = "Next alt text";&lt;br /&gt;Accessibility.updateProperties();&lt;br /&gt;&lt;br /&gt;That's about it, not too hard but the key is to test it out. Tabbing is easy enough you can test it straight from Flash, just make sure the Control&gt;&gt;Disable Keyboard Shortcuts is turned off&lt;br /&gt;&lt;br /&gt;Testing the alt tags is trickier. You'll need screenreading software. I use a demo version of Windows Eyes. JAWS has also been recommended to me.&lt;br /&gt;The demo only lasts about 30 min every time you open it, so I have it in a virtual machine which I restart whenever I need without rebooting my computer.&lt;br /&gt;&lt;br /&gt;So far I've found one bug with tabbing. If you have tabbed onto an object and then set its ._visible = false;  the tabbing order (sometimes) will skip ahead of the expected next object. I did some testing and so far I've found that if you use  unloadMovie instead of _visible there is no problem.&lt;br /&gt;&lt;br /&gt;FYI if you remove an object that you are currently tabbed to, the expected result of removing it or making it's tabindex = undefined is that the next object will be the one with the lowest tabIndex (the first object in the tabbing list).&lt;br /&gt;&lt;br /&gt;To remove tabbing from an object:&lt;br /&gt;someObject.tabIndex = undefined;&lt;br /&gt;&lt;br /&gt;To stop alt text from being read by a screen reader, either&lt;br /&gt;someObject._accProps.name = "";&lt;br /&gt;Accessibility.updateProperties();&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;someObject._accProps._silent = true;&lt;br /&gt;&lt;br /&gt;Here are some techniques I use for controlling accessibility:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;I make variables to act as switches for tabbing and screen reader accessibility.&lt;br /&gt;&lt;br /&gt;The tabbing var I set to false, then if tab is pushed I switch it to true.&lt;br /&gt;The screen reader var I set to false and then set to true using Accessibility.isActive();&lt;br /&gt;&lt;br /&gt;I usually set the screen reader switch within a keypress handler or some other function that runs soon after the movie is loaded. I do this because if you check Accessibility.isActive(); first thing, you may get a false negative.&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some useful links for reading up on Flash accessibility:&lt;br /&gt;AS2:&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;amp;file=00001895.html"&gt;http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;amp;file=00001895.html&lt;/a&gt;&lt;br /&gt;(try the white paper below for a better list)&lt;br /&gt;&lt;br /&gt;AS3:&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/accessibility/AccessibilityProperties.html"&gt;http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/accessibility/AccessibilityProperties.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For a good source of accessibility answers for Flash check out:&lt;br /&gt;&lt;a href="http://www.adobe.com/accessibility/"&gt;http://www.adobe.com/accessibility/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.adobe.com/resources/accessibility/best_practices/bp_fp.html"&gt;white paper by Bob Regan&lt;/a&gt; is an excellent read for getting a better understanding of what accessibility means and how to make Flash accessible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-1828048043940470786?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/1828048043940470786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=1828048043940470786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/1828048043940470786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/1828048043940470786'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2008/03/making-games-accessible.html' title='Making games accessible'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-4486732172054751053</id><published>2008-01-10T09:28:00.000-08:00</published><updated>2008-01-10T09:40:27.642-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as2'/><category scheme='http://www.blogger.com/atom/ns#' term='scope'/><category scheme='http://www.blogger.com/atom/ns#' term='caller'/><category scheme='http://www.blogger.com/atom/ns#' term='delegate'/><title type='text'>I  ♥ caller</title><content type='html'>Since I posted about the wonderfulness of the Delegate class for AS2 I've learned a little bit more useful info I'd like to pass on. As you may remember, the Delegate class is very useful for managing the scope of your code. The biggest problem I still ran into though was passing and accessing variables from my the custom handlers I made with the Delegate class. Thankfully , there is an easy way to pass variables. Simply add it as an attribute to the event handler.&lt;br /&gt;E.G.&lt;br /&gt;&lt;br /&gt;//import the Delegate class&lt;br /&gt;import mx.utils.Delegate;&lt;br /&gt;&lt;br /&gt;//add a variable to pass to your handler&lt;br /&gt;something.onPress = Delegate.create(this, someHandler);&lt;br /&gt;something.onPress.myVariable = "pass me";&lt;br /&gt;&lt;br /&gt;//now to access that variable use caller&lt;br /&gt;function someHandler(){&lt;br /&gt;var passedVar= arguments.caller.myVariable;&lt;br /&gt;trace(passedVar);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Voila! Now you can enjoy the satisfaction of passing variables to your custom handlers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-4486732172054751053?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/4486732172054751053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=4486732172054751053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/4486732172054751053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/4486732172054751053'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2008/01/i-delegate-class-caller.html' title='I  ♥ caller'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-3820041713241238243</id><published>2007-11-21T21:35:00.001-08:00</published><updated>2007-12-03T07:28:10.417-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='flashlite'/><category scheme='http://www.blogger.com/atom/ns#' term='toy'/><category scheme='http://www.blogger.com/atom/ns#' term='chumby'/><title type='text'>Chumby</title><content type='html'>Recently I came upon a device called the Chumby. If you haven't heard of it, the Chumby a compact computer that displays information from the web via  wireless. It has a touchscreen, 2 usb 2.0 ports, an accelerometer and a squeeze sensor. Best of all, it is designed to be easily hacked both for software and hardware. Anyone can make widgets for the Chumby using Flash Lite 3.0 as well as a variety of other languages (Chumby is Linux based). The screen is 320*240 and the recommended framerate is 12fps. Looking over Chumby.com's wiki, it looks like things are very well documented with example files to download and try out.&lt;br /&gt;&lt;br /&gt;I think the idea of the Chumby is very cool and I'm excited to try it out for myself. At $179.95 it is a little pricey but, it is exactly what could integrate the internetin new ways to affect our daily lives (especially with web 2.0 technology like RSS). Imagine having a Chumby in your kitchen, you could get recipes off the intenet, watch online video, listen to internet radio, check the weather and traffic while you have breakfast, and read the daily news. I myself would be interested in a Skype widget so I could use it like a phone.&lt;br /&gt;&lt;br /&gt;There's a bunch of cool widgets and features already available for the Chumby at the official website: &lt;a href="http://www.chumby.com/"&gt;www.chumby.com.&lt;/a&gt;&lt;br /&gt;So check it out for yourself.&lt;br /&gt;&lt;img style="width: 395px; height: 296px;" src="http://farm3.static.flickr.com/2103/1819967232_343d9e807d.jpg?v=1194130581" alt="" onload="show_notes_initially();" class="reflect" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-3820041713241238243?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/3820041713241238243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=3820041713241238243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/3820041713241238243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/3820041713241238243'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/11/chumby.html' title='Chumby'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-8021096595269941031</id><published>2007-11-12T20:43:00.001-08:00</published><updated>2008-11-12T22:30:45.495-08:00</updated><title type='text'>Making Flash games for the Wii</title><content type='html'>Recently I was shopping at Circuit City and found something interesting. It was a program called my Wii Manager. This software that allows you to download, edit, and share your Mii characters; so far you might not be impressed. But what the software actually is, is much different. It includes a programmable input emulator with an archive of programs for using the Wiimote on the computer. So it allows you to relatively easily connect your Wiimote to your computer and receive and use its serial input to control your mouse. It runs without a UV sensor so all moving is done by tilting the Wiimote; the cool bit is that it can detect tilt, thrust, and some other movement as well as make the Wiimote vibrate and light up its LEDs.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0as7c1TXCWw/RzvK92-FE9I/AAAAAAAAADQ/sp23bpPKJgE/s1600-h/wiimanager.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_0as7c1TXCWw/RzvK92-FE9I/AAAAAAAAADQ/sp23bpPKJgE/s320/wiimanager.jpg" alt="" id="BLOGGER_PHOTO_ID_5132919364395537362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The real reason why I bought the software was that it came with a Bluetooth dongle and the whole thing cost about $20. When I was searching for a single Bluetooth dongle, the prices were usually closer to $30. So with this software you not only get the dongle but the emulator with program archive and some documentation. For my money, this is a pretty good deal. The main thing that had been keeping me from playing with making Flash games for the Wii, was that it was too much work to figure out how to set everything up and get it working reliably before I could get to making games. So if you're curious about making Flash games for the Wii, check out my Wii Manager.&lt;br /&gt;&lt;br /&gt;After setting everything up (took about half an hour of reading and fiddling about) I played with a couple of old Flash toys I made. The results were pretty encouraging. A while ago I started working on a gesture class that maps various types of mouse movement to specific gestures. The goal was to add a greater sense of immersion to gameplay through more familiar and intuitive interactions. When I tried playing with the old toys I made using this class, they mapped wonderfully to the Wiimote and the interaction felt nice. So I've decided to slowly make a bunch of minigames using the class which later on I'll put together in one larger game. This will take a while though since I'm still in the middle of redesigning my website. Hopefully I'll be able to squeeze in a minigame or two along the way. Once I've finished a couple of minigames, I'll post the code and the games at my website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-8021096595269941031?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/8021096595269941031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=8021096595269941031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8021096595269941031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8021096595269941031'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/11/making-flash-games-for-wii.html' title='Making Flash games for the Wii'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_0as7c1TXCWw/RzvK92-FE9I/AAAAAAAAADQ/sp23bpPKJgE/s72-c/wiimanager.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-5740300651238110295</id><published>2007-10-25T10:46:00.000-07:00</published><updated>2007-10-25T11:17:07.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event handler'/><category scheme='http://www.blogger.com/atom/ns#' term='as2'/><category scheme='http://www.blogger.com/atom/ns#' term='scope'/><title type='text'>The Delegate Class: Brother where have you been?</title><content type='html'>Eureka! I've had a specific problem when writing AS2 classes for some while now. Namely, whenever I use code to make an interactive element (Let's say a movie clip that bounces away when you click on it), I have to nest the event handler's method. The problem is that this changes the scope and so the handler method can't access my classes base methods. The way I used to fix this was by making the methods I want to access Static, and accessible by anything in my class. The problem with this is that if I make a method static I have to make its variables static, and that can create a domino effect of making things static just to solve the original problem. This is pretty wordy so I'll post code that is easier to follow. Here's the old way I did things:&lt;br /&gt;&lt;br /&gt;class SomeClass {&lt;br /&gt; //constructor&lt;br /&gt;public function SomeClass(someMC) {&lt;br /&gt;     //initialize object&lt;br /&gt;     initialize(someMC);&lt;br /&gt; }&lt;br /&gt; //this is static so the onPress method can access it&lt;br /&gt;private static function doSomething() {&lt;br /&gt;     trace("Ok, I'm doing something");&lt;br /&gt; }&lt;br /&gt; private function initialize(someMC) {&lt;br /&gt;     trace(someMC);&lt;br /&gt;     //define what it needs to do when it loads&lt;br /&gt;     someMC.onPress = function(){&lt;br /&gt;         doSomething();&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;This is a very simple version of the problem. In reality the method my handler calls would probably be called by other methods and use variables that all would need to be made static. I knew this was not a good way to do things but until now I didn't know what else I could do.&lt;br /&gt;&lt;br /&gt;Thanks to the Delegate class though, I'm able to specify the scope and therefore access the methods at my class' base level. Here's the same code as above but made with the delegate class:&lt;br /&gt;&lt;br /&gt;//import the Delegate class&lt;br /&gt;import mx.utils.Delegate;&lt;br /&gt;class SomeClass{&lt;br /&gt; //constructor&lt;br /&gt;public function SomeClass(someMC) {&lt;br /&gt;     //initialize object&lt;br /&gt;     initialize(someMC);&lt;br /&gt; }&lt;br /&gt;private function pressHandler() {&lt;br /&gt;     trace("You pressed it.");&lt;br /&gt; }&lt;br /&gt; private function initialize(someMC) {&lt;br /&gt;//define what it needs to do when it loads&lt;br /&gt;     someMC.onPress = Delegate.create(this, pressHandler);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Now there is no need for static so things are much easier when I need to tweak things later on.&lt;br /&gt;While I was researching how to solve this problem I found other possible solutions but this was the one I understood best and was able to easily implement.&lt;br /&gt;&lt;br /&gt;You can read all about the Delegate Class here: &lt;a href="http://www.actionscript.org/resources/articles/205/1/The-Delegate-Class/Page1.html"&gt;http://www.actionscript.org/resources/articles/205/1/The-Delegate-Class/Page1.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is all great to know but this problem has been resolved in Actionscript 3 thanks to its addEventListener method.  Still if you're using on Flash Lite or like me your work doesn't want you to use AS3 until the Flash PLayer 9 adoption rate is higher you may find this very useful.&lt;br /&gt;&lt;br /&gt;Good luck using the Delegate Class, and if you have other solutions I'd love to see what you have come up with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-5740300651238110295?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/5740300651238110295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=5740300651238110295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/5740300651238110295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/5740300651238110295'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/10/delegate-class-brother-where-have-you.html' title='The Delegate Class: Brother where have you been?'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-8056013991362232959</id><published>2007-10-23T11:51:00.000-07:00</published><updated>2007-10-24T18:30:50.334-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='text'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Tip for Text in Flash</title><content type='html'>I was working my way through the hefty, 900+ page book Essential Actionscript 3.0 with the hopes of finishing it by the month's end when I learned something new. It has happened to me before that I wanted to use some dynamic text as part of something that rotated, skewed, or changed transparency. This never seemed to work so I always resorted to breaking the letters apart into graphics and abandoning the idea of dynamic text. Today, as I was reading page 705, I learned that dynamic text can be used in all these wonderful effects as long as you embed it. I did some tests and it is indeed true. Just make sure that you embedded all the symbols necessary, otherwise your text might be missing things when you render the swf.&lt;br /&gt;&lt;br /&gt;You can see this in action in the new widget I've made for this blog, my Flickr Image viewer. This widget gets the 20 most recent pictures I've uploaded to my Flickr account and makes a cross-fading slide show with captions. As you can see  I have embedded the font I use so the text as well as the images fade in and out. I made this widget with the help of the &lt;a href="http://www.aralbalkan.com/"&gt;SWX technology created by Aral Balkan&lt;/a&gt; which allows Flash to easily access Flickr API (and others) easily without writing any server-side code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-8056013991362232959?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/8056013991362232959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=8056013991362232959' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8056013991362232959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8056013991362232959'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/10/tip-for-text-in-flash.html' title='Tip for Text in Flash'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-77937323497946498</id><published>2007-10-17T07:00:00.000-07:00</published><updated>2007-11-16T07:44:40.484-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='flashforward'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='lipsynching'/><title type='text'>Back in a strange new place</title><content type='html'>It's been a while but I've decided to keep this blog going. I've started working at a new job since my last post and moved to a new city. I'm very happy to say that my new job sent me to FlashForward 2007 in Boston, and I had a great time! There was so much there that inspired me that once I got home I felt overstimulated. There was too much for one post, so I'll be spreading things out over several posts.&lt;br /&gt;&lt;br /&gt;Let me tell you about animation. The best things I learned for animation probably came from &lt;a href="http://www.mudbubble.com/" target="blank"&gt;Chris Georgenes&lt;/a&gt;' talk. He went over some animation tricks and showed us some nice animation clips. I found the tips on lipsynching especially useful. Here's the gist:&lt;br /&gt;&lt;br /&gt;1. Make a mouth graphic symbol (it must be a graphic).&lt;br /&gt;2. In the symbol draw all the mouth shapes you want to use. You can use onion skinning to help you position the mouths.&lt;br /&gt;3. Go back to the main timeline and add a keyframe, click on the mouth symbol, make sure single frame swapping is selected, and then enter the number of the frame with the mouth shape you want.&lt;br /&gt;4. Continue as desired and that's it. You've learned single frame swapping.&lt;br /&gt;&lt;br /&gt;You can watch a video tutorial of this as well as several other useful Flash animation tutorials by Hayk Manukyan at his blog: &lt;a href="http://moolt.blogspot.com/2007_09_01_archive.html"&gt;http://moolt.blogspot.com/2007_09_01_archive.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I like this feature but it can get confusing remembering the frame numbers if you have many shapes. Once things ease up at work I think I will make a Flash extension for lipsynching that uses this feature but adds visuals so there will be no need to memorize the shapes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://moolt.blogspot.com/2007_09_01_archive.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-77937323497946498?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/77937323497946498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=77937323497946498' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/77937323497946498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/77937323497946498'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/10/back-in-strange-new-place.html' title='Back in a strange new place'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-2201452067825788245</id><published>2007-05-30T10:20:00.001-07:00</published><updated>2008-11-12T22:30:46.398-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moth'/><category scheme='http://www.blogger.com/atom/ns#' term='redwood'/><category scheme='http://www.blogger.com/atom/ns#' term='doe'/><title type='text'>Some pictures I took</title><content type='html'>I just wanted to share some nice pictures I took. The one below is a pregnant doe that I managed to get close to.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0as7c1TXCWw/Rl2ymLr1ybI/AAAAAAAAACc/qCRjeCj4bSc/s1600-h/doe.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_0as7c1TXCWw/Rl2ymLr1ybI/AAAAAAAAACc/qCRjeCj4bSc/s320/doe.jpg" alt="" id="BLOGGER_PHOTO_ID_5070405124530489778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This next picture is of of a moth that was resting on the window of my office.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0as7c1TXCWw/Rl20orr1ycI/AAAAAAAAACk/BOLYtBErl30/s1600-h/whilemoth.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_0as7c1TXCWw/Rl20orr1ycI/AAAAAAAAACk/BOLYtBErl30/s320/whilemoth.jpg" alt="" id="BLOGGER_PHOTO_ID_5070407366503418306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The area where I live has many redwood trees. In case you don't know, redwood trees tend to grow in circles around a "father tree". This is a picture of the remains of the "grandfather tree" from which all the redwoods in my area were grown. The trunk is about 21 feet around and is hollow because it was burned by fire several years ago, possibly because it was struck by lightning.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0as7c1TXCWw/Rl20s7r1ydI/AAAAAAAAACs/eBszatsE17o/s1600-h/redwood.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_0as7c1TXCWw/Rl20s7r1ydI/AAAAAAAAACs/eBszatsE17o/s320/redwood.jpg" alt="" id="BLOGGER_PHOTO_ID_5070407439517862354" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-2201452067825788245?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/2201452067825788245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=2201452067825788245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/2201452067825788245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/2201452067825788245'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/05/some-pictures-i-took.html' title='Some pictures I took'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_0as7c1TXCWw/Rl2ymLr1ybI/AAAAAAAAACc/qCRjeCj4bSc/s72-c/doe.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-8518726750409689911</id><published>2007-05-26T10:42:00.000-07:00</published><updated>2008-11-12T22:30:46.930-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='tomato'/><category scheme='http://www.blogger.com/atom/ns#' term='cake'/><category scheme='http://www.blogger.com/atom/ns#' term='crochet'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>The website went live</title><content type='html'>It's been a while since my last post so let me catch up on what I've been up to. The biggest thing that happened was that the website I was working on finally went live. I'm glad it did because now I can get back to animating.  I'm sort of glad I got to work on the website because I had an excuse to learn PHP and SQL. Now I'm planning on redoing my portfolio site while everything is fresh in my mind. Besides learning server-side scripting, I also learned AJAX (Asynchronous Javascript and XML).  If you're not familiar with it, AJAX lets you call functions on your server after a page is loaded, and then update your page without reloading it. I used AJAX to make a live search feature which gives you suggestions for searching while you are typing. My live search is mostly based on &lt;a href="http://www.google.com/webhp?complete=1&amp;hl=en"&gt;Google Suggest&lt;/a&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0as7c1TXCWw/Rl2yH7r1yaI/AAAAAAAAACU/hq_GkFJfjhY/s1600-h/crochet.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_0as7c1TXCWw/Rl2yH7r1yaI/AAAAAAAAACU/hq_GkFJfjhY/s320/crochet.jpg" alt="" id="BLOGGER_PHOTO_ID_5070404604839446946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Since my last post I have also done a couple things to entertain myself. A couple weeks ago I decided that I needed a hat and since I know how to crochet, I decided to make one myself.  But, instead of buying a crochet hook, I thought it might be interesting to make one myself. So I went into the woods and found a thick branch and started carving it with a box-cutter knife. It took two evenings and two attempts but, I created a hook. After I sanded it a bit with a nail file I found it was reasonably smooth and worked like a charm.  I made a hat with some wool I got from a nearby town. After it was done I decided it looked more like a woman's hat and I gave it to a friend.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0as7c1TXCWw/Rlh-rbr1yZI/AAAAAAAAACM/ZoomHeYH7Es/s1600-h/cake.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_0as7c1TXCWw/Rlh-rbr1yZI/AAAAAAAAACM/ZoomHeYH7Es/s320/cake.jpg" alt="" id="BLOGGER_PHOTO_ID_5068940665236605330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another day I decided to make a Tomato Soup Cake to have a bit of fun. It was a real scavenger hunt when I tried to find all the ingredients I needed. Sugar was especially hard to come by, but I managed to get everything I needed. It was delicious ( tastes like a spice cake).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-8518726750409689911?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/8518726750409689911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=8518726750409689911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8518726750409689911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8518726750409689911'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/05/website-went-live.html' title='The website went live'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0as7c1TXCWw/Rl2yH7r1yaI/AAAAAAAAACU/hq_GkFJfjhY/s72-c/crochet.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-8603339003375127150</id><published>2007-05-03T11:22:00.000-07:00</published><updated>2008-11-12T22:30:47.160-08:00</updated><title type='text'>In need of more excitement</title><content type='html'>It looks like our website if finally about to go live. I'm glad because I would rather start working on the animation again. I believe I finally came up with the best way to make all the character keys for the animation. I create layers for the base colors of each key, and then I put them into folders and add layers to my heart's content. The biggest problem making the rabbit was that I didn't label all the layers I made (and I make a good deal of them).  So now, once I'm done, I just collapse the contents of each folder and viola! I've got a leg, or ear, etc. ready to be rigged for animation. Another problem I am facing in animating is rigging. I'm very happy to be using Anime Studio Pro, which is the best 2D animation software I've ever used, but using bones to get raster images to deform perfectly is tricky. I may end up cutting the legs up a little so they don't looked so scrunched up when they deform.&lt;br /&gt;&lt;br /&gt;I'm always happy to be finished after work but lately, I think I need to find something new to do. I have a book by F. Scott Fitzgerald to read but, I would rather read something else. It may just be time to take a weekend trip to the city to get a better book and buy some &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0as7c1TXCWw/Rjor1lBFBYI/AAAAAAAAAB8/JUCjwGroAic/s1600-h/scorpion.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_0as7c1TXCWw/Rjor1lBFBYI/AAAAAAAAAB8/JUCjwGroAic/s320/scorpion.jpg" alt="" id="BLOGGER_PHOTO_ID_5060405330773869954" border="0" /&gt;&lt;/a&gt;music. I need music becuase I didn't have a chance to transfer my collection to my laptop before I left. I'm just glad there is internet radio, though it sounds like there might not be for much longer.&lt;br /&gt;&lt;br /&gt;Finally here's a bit of excitement: Yesterday morning I found a scorpion in my yert. Check it out! It was sitting right inside my door, in fact the wood you see in the picture is part of my doorframe. I got it out by picking it up with a stick. It was pretty angry though and started attacking the stick. Luckily, this type of scorpion isn't very poisonous, but I still don't want living in my house.&lt;br /&gt;&lt;br /&gt;Here's another picture I took near my house. Though it's less exciting. These two deer live in the woods next to my house so I've seen them a couple times. I think the female is pregnant.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0as7c1TXCWw/RjotAVBFBZI/AAAAAAAAACE/RWCe0rPqxps/s1600-h/twodeer.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_0as7c1TXCWw/RjotAVBFBZI/AAAAAAAAACE/RWCe0rPqxps/s320/twodeer.jpg" alt="" id="BLOGGER_PHOTO_ID_5060406614969091474" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-8603339003375127150?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/8603339003375127150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=8603339003375127150' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8603339003375127150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8603339003375127150'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/05/in-need-of-more-excitement.html' title='In need of more excitement'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0as7c1TXCWw/Rjor1lBFBYI/AAAAAAAAAB8/JUCjwGroAic/s72-c/scorpion.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-8884163431545033986</id><published>2007-04-24T23:32:00.000-07:00</published><updated>2008-11-12T22:30:48.202-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google co-op'/><category scheme='http://www.blogger.com/atom/ns#' term='beach'/><category scheme='http://www.blogger.com/atom/ns#' term='seaweed'/><title type='text'>Sites and Sights</title><content type='html'>I'm still working a lot implementing new content on a website. It's not bad, but I realize I like making interactive content much more than web pages. One cool thing I stumbled upon was Google Co-op and Statistics. Google Co-op is a service that let's you and up to 99 of your closest friends create a search engine customized to fit your needs. I've been using it to make a search engine that return results only from our affiliated sites. It works pretty well, though if you add content to your site you need to get Google to update their database before it will show up in your engine. One thing I had to do was to make a hack so the results would show up integrated properly in our web page. Since we use PHP to generate or webpages, it was a little trick. The hack was to send the results to a content page and then call that page from a .php page that was identical to our index.php except the default content loaded was the page containing the search results. Kind of tricky but it looks like it works.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0as7c1TXCWw/Ri8BU1BFBUI/AAAAAAAAABc/ALpl08sbACM/s1600-h/beach.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_0as7c1TXCWw/Ri8BU1BFBUI/AAAAAAAAABc/ALpl08sbACM/s320/beach.jpg" alt="" id="BLOGGER_PHOTO_ID_5057262363900970306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;On the less technical side, I took a long walk to the beach on the weekend. The walk takes about an hour and a half.  Going there is fine but, coming back is harder because it's all uphill. The beach was breathtaking! It looks like something out of a movie. Other people must think that too because when I went there, everyone on the beach had expensive looking cameras. I thought perhaps it was a photography club out on a picture taking excursion. When I got to the beach my legs were tired and since the water is really cold I decided to wade in it. I learned a while ago on a trip that if you are hiking and then wade in really cold water, it stimulates your circulation and makes your aching legs feel much better. It worked pretty well though I think other people on the beach thought I was crazy to get in the water. I walked around the beach for a while taki&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0as7c1TXCWw/Ri8B6FBFBXI/AAAAAAAAAB0/cp8Q-GO9ldM/s1600-h/seaweed.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_0as7c1TXCWw/Ri8B6FBFBXI/AAAAAAAAAB0/cp8Q-GO9ldM/s320/seaweed.jpg" alt="" id="BLOGGER_PHOTO_ID_5057263003851097458" border="0" /&gt;&lt;/a&gt;ng pictures, then I climbed up the cliff to &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0as7c1TXCWw/Ri8BzVBFBWI/AAAAAAAAABs/pj7iEcNi-iw/s1600-h/seaweed2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_0as7c1TXCWw/Ri8BzVBFBWI/AAAAAAAAABs/pj7iEcNi-iw/s320/seaweed2.jpg" alt="" id="BLOGGER_PHOTO_ID_5057262887886980450" border="0" /&gt;&lt;/a&gt;take some more. I still wasn't wearing shoes when I climbed the cliff and when I got to the top I found out there were a lot of thorny shrubs. There was a path though, so I stuck to it and tried to minimize my stepping on spiny plants.  The view from the cliff was spectacular. When I walked down the cliff I realized there was a path to go up it, and I didn't need to climb like I did coming up. There's always a lot of big bits of seaweed on the beach in this area. I remember coming here years ago and enjoying the sound of hitting the hollow tube seaweed against rocks. The beach was fun and I found two seashells which is a feat considering most west coast beaches I go to don't have any seashel&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0as7c1TXCWw/Ri8Bg1BFBVI/AAAAAAAAABk/UENZGRS5BCw/s1600-h/cliff.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_0as7c1TXCWw/Ri8Bg1BFBVI/AAAAAAAAABk/UENZGRS5BCw/s320/cliff.jpg" alt="" id="BLOGGER_PHOTO_ID_5057262570059400530" border="0" /&gt;&lt;/a&gt;ls.&lt;br /&gt;&lt;br /&gt;The walk back was slow and by the time I got home I had eaten most of my king sized bag of trail mix. The next day I was also surprised that I was not as sore as I thought I would be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-8884163431545033986?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/8884163431545033986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=8884163431545033986' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8884163431545033986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8884163431545033986'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/04/sites-and-sights.html' title='Sites and Sights'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_0as7c1TXCWw/Ri8BU1BFBUI/AAAAAAAAABc/ALpl08sbACM/s72-c/beach.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-1210207803785625938</id><published>2007-04-18T23:49:00.000-07:00</published><updated>2007-04-19T00:01:10.895-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='contact lens'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='indoor plumbing'/><title type='text'>PHP keeps animation at bay</title><content type='html'>I've taken a hiatus from working on the animation for a while. It looks like I would be more useful working on updating webpages here. I don't mind because I was thinking I needed a break from painting art all day; plus to make it worth my while, I decided I would trade work with the web designer. She's working on the art while I work my way through pages of PHP.&lt;br /&gt; I'm happy because she's doing a good job, I just hope I can get all these pages under control.&lt;br /&gt;&lt;br /&gt;Yesterday I realized an inconvenience of living in a yert. I was taking out my contact lenses with the case on my knee and it slipped off. Normally that wouldn't be a big deal but, the lens fell through the crack between the wall and the floor and landed outside on the dirt ground. It's pretty cold here at night so I had to put on warm clothes to go out and get it and then, to wash it off I had to walk through the woods to the bathroom. I'm starting to have more and more respect for indoor plumbing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-1210207803785625938?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/1210207803785625938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=1210207803785625938' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/1210207803785625938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/1210207803785625938'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/04/php-keeps-animation-at-bay.html' title='PHP keeps animation at bay'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-7171767953298819500</id><published>2007-04-13T22:32:00.000-07:00</published><updated>2007-04-13T22:57:09.170-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wild animals'/><category scheme='http://www.blogger.com/atom/ns#' term='pigs'/><category scheme='http://www.blogger.com/atom/ns#' term='fox'/><title type='text'>Wild Animals</title><content type='html'>I spent all day perfecting the art for the rabbit. I think I've figured out the best way to make art so all of the 5 or so other characters should go more smoothly. It's hard to judge whether making art digitally is going to be better than scanning in painted art. So far it doesn't seem any quicker, but I am very happy with the quality of the art. After painting all day I was pretty tired,  so after work I went across the street to the kitchen to get some dinner. But on the way there I ran into a herd of wild pigs. I think there were about 10 of them. They were running around and making a lot of noise. Their footsteps almost sounded like the waves on a beach. Since I am used to the woods most wild animals don't bother me, but pigs are the exception. I think it's because when I was younger I used to play a game where you had to get past some wild boars by spearing them on horseback. If you lost the boar would knock you off your horse and kill you. I don't know too much about how dangerous a wild pig is, but they do have tusks and I'm keeping away from them.&lt;br /&gt;   As I was walking back home after dinner, I was still a little paranoid about running into the herd of pigs. So when I suddenly heard a scrambling noise I jumped a little bit. The noise was the fox I saw before. This time he was inside of a parked pickup truck. The owners had left their window open about 6 inches and the fox squeezed through and was looking around the inside of the cab. He must have gotten freaked out at being in the cab because he jumped out in a hurry. Then he stood there and looked at me for a while. I told him that he looked busy and he trotted off.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-7171767953298819500?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/7171767953298819500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=7171767953298819500' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/7171767953298819500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/7171767953298819500'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/04/wild-animals.html' title='Wild Animals'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-2843422151630919618</id><published>2007-04-12T22:49:00.000-07:00</published><updated>2008-11-12T22:30:48.845-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><category scheme='http://www.blogger.com/atom/ns#' term='yert'/><title type='text'>Living in a yert</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0as7c1TXCWw/Rh8dEad0toI/AAAAAAAAAAs/0zPcQc53hCo/s1600-h/yert.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_0as7c1TXCWw/Rh8dEad0toI/AAAAAAAAAAs/0zPcQc53hCo/s320/yert.jpg" alt="" id="BLOGGER_PHOTO_ID_5052789268594079362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now that I have been settled in enough to realize I am neglecting my blog let me tell you what it's like to live here. I live in a yert, that is a Mongolian tent home. Here's  a picture of it.  It's actually pretty comforta&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0as7c1TXCWw/Rh8kFad0trI/AAAAAAAAABE/MHMPjQzlaVk/s1600-h/moth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_0as7c1TXCWw/Rh8kFad0trI/AAAAAAAAABE/MHMPjQzlaVk/s320/moth.jpg" alt="" id="BLOGGER_PHOTO_ID_5052796982355343026" border="0" /&gt;&lt;/a&gt;ble besides being chilly. There are a number of bugs that live in it with me but, I don't really get bitten so it doesn't bother me.  In fact living with some bugs around can be kind of cool if the bugs are moths and they look pretty. Check out this one I found on a window at my workplace.&lt;br /&gt;&lt;br /&gt;The main thing I miss is indoor plumbing. The first couple of days after I arrived I had food poisoning and there's nothing like vomiting in the woods a couple of times to make you homesick. After I recovered it was much more pleasant. Another strange thing about living in the woods is the giant sl&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0as7c1TXCWw/Rh8jQKd0tqI/AAAAAAAAAA8/KMVb57bFe-c/s1600-h/slug.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_0as7c1TXCWw/Rh8jQKd0tqI/AAAAAAAAAA8/KMVb57bFe-c/s320/slug.jpg" alt="" id="BLOGGER_PHOTO_ID_5052796067527308962" border="0" /&gt;&lt;/a&gt;ugs that you sometimes find. I remember the first time I saw one I thought it was some fresh animal dung but then it started to move. When you need to go to the bathroom in the middle of the night you have to be careful not to step on them. Just to give you an idea of how big these slugs really are I made this handy picture of one next to a new number 2 pencil. In fact I think this slug was longer than the pencil, but when you get near them their heads suck up into their bodies so they look fatter and smaller.&lt;br /&gt;&lt;br /&gt;One thing I love about living in it is the sounds I hear at night. Since I live in a forest full of wildlife there is a full chorus of night sounds to listen to while I lay in bed. Now you may think you know what a forest sounds like  but it's nothing compared to what it sounds like late at night. All sorts of night creatures wake up that you have never heard in the daytime. It reminds me of the sounds you would hear in an old Disney cartoon if the characters went into a jungle.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0as7c1TXCWw/Rh8lead0tsI/AAAAAAAAABM/ZwoRwJp5Z4U/s1600-h/durian.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_0as7c1TXCWw/Rh8lead0tsI/AAAAAAAAABM/ZwoRwJp5Z4U/s320/durian.JPG" alt="" id="BLOGGER_PHOTO_ID_5052798511363700418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've begun working on my animation at last. I am animating a story called "The Rabbit Who Overcame Fear", it's like Chicken Little, with a rabbit and a falling mango that scares him. It's a Jataka Tale, which is one from a collection of stories of the past lives of the Buddha. As I was researching the story I was surprised to find that many of the Jataka Tales are the basis for modern children's stories. It seems that after the Jataka Tales were created, they spread to Persia and then through Alexander the Great to Europe. It's pretty funny to see the changes that each culture made to the stories. I read several versions of the rabbit story and in each one the falling mango was replaced with a new type of fruit. I think if I were retelling my version of the story I'd make the fruit a Durian. With all those spikes I bet they could do some real damage. My old roommate used to call them the king of the fruit.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0as7c1TXCWw/Rh8hW6d0tpI/AAAAAAAAAA0/kP1GxudWzJw/s1600-h/rabbit.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_0as7c1TXCWw/Rh8hW6d0tpI/AAAAAAAAAA0/kP1GxudWzJw/s320/rabbit.jpg" alt="" id="BLOGGER_PHOTO_ID_5052793984468170386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's an in-process picture of the rabbit I am making for the animation. I think the animation will look pretty nice, though I wonder how long it will take to make the art. After all, this story has as many characters a Chicken Little, they just don't have clever names like Turkey Lurkey and Goosey Loosey.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-2843422151630919618?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/2843422151630919618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=2843422151630919618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/2843422151630919618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/2843422151630919618'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/04/living-in-yert.html' title='Living in a yert'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_0as7c1TXCWw/Rh8dEad0toI/AAAAAAAAAAs/0zPcQc53hCo/s72-c/yert.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5559978718450827877.post-8493382853850857857</id><published>2007-04-09T22:16:00.000-07:00</published><updated>2008-11-12T22:30:49.084-08:00</updated><title type='text'>Go west my man.</title><content type='html'>Hey I'm Luftbuefel, LB for short and I'm an animator and programmer that decided to take a break from stresses of everyday life to go do some volunteer work in the middle of nowhere in California.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0as7c1TXCWw/RhshB6d0tkI/AAAAAAAAAAM/N5MYMKiRWkM/s1600-h/bath_products.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_0as7c1TXCWw/RhshB6d0tkI/AAAAAAAAAAM/N5MYMKiRWkM/s320/bath_products.jpg" alt="" id="BLOGGER_PHOTO_ID_5051667723784074818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;So I've lived in California before so it's no big surprise to me but I still find the differences to be very noticable. For instance, on the way to where I was going from the airport I stopped by the supermarket to get some soap and shampoo. Then I realized that the store sold only organic products. I have nothing against organic stuff, I just don't care too much about it either way, and with my current lack of income I don't want to pay more for organic. Either way, I got some shampoo, conditioner, soap, and since they didn't have any rags I got a body scrubber ball. That's all I bought and when I got to the cashier she asked me if I was doing some deep cleansing. Not really knowing what else to say, I  told her I was and she smiled. I'm not really sure that I had a reason to be, but I was embarassed.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0as7c1TXCWw/Rhsixad0tlI/AAAAAAAAAAU/4VYqUYMjtec/s1600-h/bodega_bay.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_0as7c1TXCWw/Rhsixad0tlI/AAAAAAAAAAU/4VYqUYMjtec/s320/bodega_bay.jpg" alt="" id="BLOGGER_PHOTO_ID_5051669639339488850" border="0" /&gt;&lt;/a&gt;    The great thing about the trip up to where I'm     staying was that we stopped again at another     store which was very Californian but in a             different way. The store had a wooden porch         on it and looked a lot like a building you would     see in an old western. Best of all it has two             signs: one advertising rabbit meat at $5.99 a         pound, and another for a sale on buffalo                 burgers.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;    Also pretty close to this store was Bodega Bay.    This was where Alfred Hitchcock filmed his             excellent film "The Birds". There weren't too     many birds around when I was there, but where I'm living there are some pretty huge ravens that look like they could take on a man.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Anyway, where I'm living now is ridiculously beautiful, there are wild animals everywhere and they're not to used to humans. So it is pretty easy to get close to them to take good pictures. Here are some deer I saw as I was walking home from work. A couple of days ago I counted all the deer I could see in the field I was in and I got all the way to 15. Besides all the deer, so far I've seen several flocks of wild turkey, a family of quail, lots of ravens, a tree frog, some monster slugs, and a red fox carrying something that looked like a white pipe in his mouth.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0as7c1TXCWw/RhslnKd0tmI/AAAAAAAAAAc/c4GVZkwM8f0/s1600-h/deer.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_0as7c1TXCWw/RhslnKd0tmI/AAAAAAAAAAc/c4GVZkwM8f0/s320/deer.jpg" alt="" id="BLOGGER_PHOTO_ID_5051672761780713058" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5559978718450827877-8493382853850857857?l=animateinexile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://animateinexile.blogspot.com/feeds/8493382853850857857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5559978718450827877&amp;postID=8493382853850857857' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8493382853850857857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5559978718450827877/posts/default/8493382853850857857'/><link rel='alternate' type='text/html' href='http://animateinexile.blogspot.com/2007/04/go-west-my-man.html' title='Go west my man.'/><author><name>luftbuefel</name><uri>http://www.blogger.com/profile/06915161798285946134</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_0as7c1TXCWw/RhshB6d0tkI/AAAAAAAAAAM/N5MYMKiRWkM/s72-c/bath_products.jpg' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
