<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Deconstruckt</title>
	<atom:link href="http://deconstruckt.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://deconstruckt.com</link>
	<description>The Struck Blog</description>
	<pubDate>Mon, 08 Feb 2010 18:42:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Snow Please</title>
		<link>http://deconstruckt.com/play/snow-please/</link>
		<comments>http://deconstruckt.com/play/snow-please/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 18:42:09 +0000</pubDate>
		<dc:creator>mino</dc:creator>
		
		<category><![CDATA[Outdoors]]></category>

		<category><![CDATA[Play]]></category>

		<category><![CDATA[heli-skiing]]></category>

		<category><![CDATA[helmet cam]]></category>

		<category><![CDATA[hookie]]></category>

		<category><![CDATA[jon is better than brandon]]></category>

		<category><![CDATA[powder]]></category>

		<category><![CDATA[powderbirds]]></category>

		<category><![CDATA[skiing]]></category>

		<category><![CDATA[utah snow]]></category>

		<guid isPermaLink="false">http://deconstruckt.com/?p=5766</guid>
		<description><![CDATA[With a bit of a luck luster winter thus far for us Utahans, images of the pow-days of yesteryear are running through my head. Because I can&#8217;t really give you my head I decided to spend some putting together a few ski days from last year.










More info after the jump.

Brandon and I had the opportunity [...]]]></description>
			<content:encoded><![CDATA[<p>With a bit of a luck luster winter thus far for us Utahans, images of the pow-days of yesteryear are running through my head. Because I can&#8217;t really give you my head I decided to spend some putting together a few ski days from last year.</p>
<p>
<object type="application/x-shockwave-flash" style="width: 500px; height: 375px;" data="http://www.vimeo.com/moogaloop.swf?clip_id=9297669&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0">
<param name="quality" value="best" />
<param name="wmode" value="transparent" />
<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=9297669&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0" />
<param name="pluginspage" value="http://www.macromedia.com/go/getflashplayer" />
</object>
<br/>
<!-- Valid XHTML video object delivered by XHTML Video Embed. Get it at: http://saltwaterc.net/xhtml-video-embed -->
</p>
<p>More info after the jump.</p>
<p><span id="more-5766"></span></p>
<p>Brandon and I had the opportunity to do a little heli-skiing last year with the <a title="Powderbird Guides" href="http://www.powderbird.com" target="_blank">Wastach Powderbird Guides</a> at Snowbird, Utah. We lucked out and hit the first blue bird day after a mid winter storm dumped 2+ feet in the Wasatch range.  Below are two unedited clips from the day, <a title="Heli-skiing photos" href="http://www.flickr.com/photos/minoflow/sets/72157615088081091/" target="_blank">jump to the flickr set for a few pics.</a></p>
<p>
<object type="application/x-shockwave-flash" style="width: 500px; height: 375px;" data="http://www.vimeo.com/moogaloop.swf?clip_id=8899693&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0">
<param name="quality" value="best" />
<param name="wmode" value="transparent" />
<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=8899693&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0" />
<param name="pluginspage" value="http://www.macromedia.com/go/getflashplayer" />
</object>
<br/>
<!-- Valid XHTML video object delivered by XHTML Video Embed. Get it at: http://saltwaterc.net/xhtml-video-embed -->
</p>
<p>
<object type="application/x-shockwave-flash" style="width: 500px; height: 375px;" data="http://www.vimeo.com/moogaloop.swf?clip_id=8899092&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0">
<param name="quality" value="best" />
<param name="wmode" value="transparent" />
<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=8899092&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0" />
<param name="pluginspage" value="http://www.macromedia.com/go/getflashplayer" />
</object>
<br/>
<!-- Valid XHTML video object delivered by XHTML Video Embed. Get it at: http://saltwaterc.net/xhtml-video-embed -->
</p>
<p>We used V.I.O Pov 1 helmet camera to capture these shots. Had to say we were a bit disappointed with the white balance and the shear bulk of the camera (requires a long cord w/ battery and display pack). However it made for a great way to capture the trip.</p>
<p>Hopefully once Old Man Winter gets his ass in gear we&#8217;ll have some more footage to post!</p>
]]></content:encoded>
			<wfw:commentRss>http://deconstruckt.com/play/snow-please/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Roaming Gnome Comes Home</title>
		<link>http://deconstruckt.com/play/the-roaming-gnome-comes-home/</link>
		<comments>http://deconstruckt.com/play/the-roaming-gnome-comes-home/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 19:17:44 +0000</pubDate>
		<dc:creator>Kyality</dc:creator>
		
		<category><![CDATA[Play]]></category>

		<category><![CDATA[Cute]]></category>

		<category><![CDATA[Gnome]]></category>

		<guid isPermaLink="false">http://deconstruckt.com/?p=5759</guid>
		<description><![CDATA[
If you didn&#8217;t already know, Utah just beat out Tahoe in Travelocity&#8217;s Roaming Gnome contest! We&#8217;d like to think we had a little something to do with that. Apparently the Gnome seems to think so, he just stopped by our SLC office on his tour of the State.
Destinations are pitted against each other, and fans [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-5760" title="gnome" src="http://deconstruckt.com/wp-content/uploads/2010/02/gnome.jpg" alt="gnome" width="494" height="628" /></p>
<p>If you didn&#8217;t already know, Utah just beat out Tahoe in <a href="http://www.facebook.com/travelocity?ref=ts">Travelocity&#8217;s Roaming Gnome</a> contest! We&#8217;d like to think we had a little something to do with that. Apparently the Gnome seems to think so, he just stopped by our SLC office on his tour of the State.<br />
Destinations are pitted against each other, and fans on Facebook can vote to determine where he gets to go. Utah and Tahoe were the combatants, and the final tally on Wednesday was close. Here was his status update:</p>
<p>&#8220;And the winner is&#8230;&#8230;&#8230;.UTAH! But sweet fancy pickles, was it close. Of 285,482 votes, 142,709 (49.98%) of them went to Tahoe and 142,773 (50.01%) to Utah. Congratulations, Utah! And thanks a billion to all of you for voting. Now let me get packing!&#8221;</p>
<p><img class="aligncenter size-full wp-image-5761" title="gnome_everybody" src="http://deconstruckt.com/wp-content/uploads/2010/02/gnome_everybody.jpg" alt="gnome_everybody" width="494" height="316" /></p>
]]></content:encoded>
			<wfw:commentRss>http://deconstruckt.com/play/the-roaming-gnome-comes-home/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bustin&#8217; Bricks: Behind the Scenes</title>
		<link>http://deconstruckt.com/build/bustin-bricks-behind-the-scenes/</link>
		<comments>http://deconstruckt.com/build/bustin-bricks-behind-the-scenes/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 00:07:27 +0000</pubDate>
		<dc:creator>mzungu</dc:creator>
		
		<category><![CDATA[ActionScript 3]]></category>

		<category><![CDATA[Awards]]></category>

		<category><![CDATA[Behind The Scenes]]></category>

		<category><![CDATA[Build]]></category>

		<category><![CDATA[Create]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Interactive]]></category>

		<guid isPermaLink="false">http://deconstruckt.com/?p=5723</guid>
		<description><![CDATA[









Today&#8217;s Site of the Day on FWA is none other than the recently unleashed LEGOCLICK.com, designed and developed by the dudes and lady-dudes of Struck/Axiom in association with Pereira &#38; O&#8217;Dell. (If you haven&#8217;t seen it yet, you should check it out.) To mark the occasion, we&#8217;d like to share a technical peak behind the [...]]]></description>
			<content:encoded><![CDATA[<p>
<object type="application/x-shockwave-flash" style="width: 500px; height: 375px;" data="http://www.vimeo.com/moogaloop.swf?clip_id=9166910&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0">
<param name="quality" value="best" />
<param name="wmode" value="transparent" />
<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=9166910&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0" />
<param name="pluginspage" value="http://www.macromedia.com/go/getflashplayer" />
</object>
<br/>
<!-- Valid XHTML video object delivered by XHTML Video Embed. Get it at: http://saltwaterc.net/xhtml-video-embed -->
</p>
<p>Today&#8217;s Site of the Day on <a href="http://thefwa.com/">FWA</a> is none other than the recently unleashed <a href="http://www.legoclick.com">LEGOCLICK.com</a>, designed and developed by the dudes and lady-dudes of Struck/Axiom in association with Pereira &amp; O&#8217;Dell. (If you haven&#8217;t seen it yet, you should check it out.) To mark the occasion, we&#8217;d like to share a technical peak behind the curtain of one of the more popular features of the site – removing a block of content.</p>
<p><span id="more-5723"></span></p>
<h4>A word about perspective:</h4>
<p>Early on, we considered different possibilities for how the LEGO bricks and the environment could be achieved technically. We thought about using one of the Flash 3D engines, and discussed solutions as exotic as using a server-side AIR app to render our objects as FLVs, but ultimately decided that we wouldn&#8217;t be able to achieve the performance or the visual polish that we demand of ourselves.</p>
<p>So, in a move that would send my college drawing professor into hysterics, we decided that visual polish and a stylized sense of depth were more important than “correct perspective.” That&#8217;s why everything has a bit of perspective to suggest depth, but the visuals don&#8217;t have consistent vanishing points, nor do they shift in perspective as they move relative to the viewer.</p>
<h4>A word about the feature:</h4>
<p>Removing a block of content is hardly an integral part of the site. However, it represented something very vital to both the LEGO brand and the site – fun. After all, who among us never built something only to smash it apart? (Or at very least, had a beloved creation subjected to the wrath of a brother or sister?)</p>
<h3>Phase 1: The bricks</h3>
<h4>Creation and layout</h4>
<p>When a block wall is broken apart, we&#8217;re switching from one large graphic of the block wall to many individual images, which each represent a brick. The correct number of bricks is created and positioned to fill in the block wall. (We decided to leave out the 1&#215;2s that fill the edges on alternating rows – in the end, they won&#8217;t be missed in the flurry of movement.) In keeping with our intentional disregard for correct perspective, each brick has the same beginning perspective.</p>
<p><img class="alignnone size-full wp-image-5731" src="http://deconstruckt.com/wp-content/uploads/2010/02/block_layout.jpg" alt="block_layout" width="494" height="202" /></p>
<h4>Movin&#8217; them bricks</h4>
<p>To make the bricks move, we need to give them some velocity. We start with a <span class="code">startingVelocity</span>, which is random (within a range), and split it between x, y, and z – the amount of the total velocity that z gets is determined by its distance from the center of the block wall, and the remainder is split between x and y, according to the angle the block is from the center. While <span class="code">_xVel</span> and <span class="code">_yVel</span> will move the block in x and y, <span class="code">_zVel</span> will affect the block&#8217;s <span class="code">pseudoZ</span> property, which will affect its scale, making it appear to move outwards.</p>
<p><img class="alignnone size-full wp-image-5733" src="http://deconstruckt.com/wp-content/uploads/2010/02/velocity_math.jpg" alt="velocity_math" width="494" height="199" /></p>
<div class="code">var zRatio:Number = (maxDistance - distance)/maxDistance;<br />
_zVel = zRatio * startingVelocity;<br />
_xVel = Math.cos(angle) * (startingVelocity - _zVel);<br />
_yVel = Math.sin(angle) * (startingVelocity - _zVel);</div>
<p>Each block is listening for <span class="code">ENTER_FRAME</span> events. Every frame, each block calls the <span class="code">update()</span> function, which moves the block according to its velocities, and then adds a gravity constant onto the y velocity. The <span class="code">update()</span> function is separated from the event handler so that it can be called independently – when the explosion is started, the blocks nearest the center call <span class="code">update()</span> twice automatically, and the blocks slightly further out call it once, to give the illusion of being blown apart from the center. When the block is sufficiently offstage, the event listener is removed and an event is dispatched to have the block&#8217;s parent remove it.</p>
<div class="code">private function enterFrameHandler(e:Event):void<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(y &gt; stage.stageHeight*1.5)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeEventListener(Event.ENTER_FRAME,enterFrameHandler);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dispatchEvent(new ExplodeBrickEvent(ExplodeBrickEvent.EXPLODE_BRICK_OFFSCREEN));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p>private function update():void<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x += _xVel;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y += _yVel;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pseudoZ += _zVel;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_yVel += GRAVITY;<br />
}</p>
<p>public function set pseudoZ(value:Number):void<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_z = value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_asset.scaleX = _asset.scaleY = _scaleAdjust * value/7500;<br />
}</p>
<p>public function get pseudoZ():Number<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return _z;<br />
}</p></div>
<h4>Give it a spin</h4>
<p>Now that the pieces are moving correctly, it&#8217;s time to make them appear to spin. To achieve this effect, we went back into Cinema4D and created 5 different sequences of our 3d block spinning in various directions. Each block is randomly assigned one of these sequences to play through as it falls.</p>
<p>We noticed that in all of the chaos of the initial explosion, the eye missed most of the spinning. In order to save on file size / load time (since every additional frame is an additional png, meaning X kilobytes and Z load time), we changed the timeline of our spin sequences so that the sequence waited for the initial flurry of motion to complete before resuming its spin.</p>
<h3>Phase 2: Putting content on the bricks</h3>
<h4>Capturing and chopping content</h4>
<p>Using AS3&#8217;s BitmapData functionality, we&#8217;re able to take the state of objects and draw them into a bitmap. To get the content we want, we&#8217;re turning off the block background (switching visibility to false), capturing the bitmap data (BitmapData.draw()), and then turning the block background back on (until the wall is ready to explode of course – see Phase 1: Creation and Layout). Actually, we&#8217;re capturing a bunch of small bitmap datas – one for each block that we&#8217;re creating, capturing only the content that should go on that block. Then we send it on to the block that we&#8217;re creating for the beginning of the explosion.</p>
<div class="code">var bitmapData:BitmapData = new BitmapData(BLOCK_WIDTH,BLOCK_HEIGHT,true,0&#215;000000);<br />
var matrix:Matrix = new Matrix();<br />
matrix.translate( -DisplayObject(_blockArray[i]).x, -DisplayObject(_blockArray[i]).y );<br />
bitmapData.draw(Sprite(blockWall),matrix);<br />
IExplodeBlock(_blockArray[i]).setFace(bitmapData);</div>
<h4>Distorting the content to fit the face</h4>
<p>As the blocks spin and tumble out of frame, we want the content on the face of them to move with the block. Since we&#8217;ve captured that bitmap data, we can actually use the DistortImage class, developed by the evil geniuses at <a href="http://www.flashsandy.org/">Sandy3D</a>.</p>
<p>DistortImage takes bitmapData and distorts it using corner pinning – you tell each corner where it should be positioned, and the image is stretched, squashed and distorted to fit those corners.</p>
<p>So how do we know where the corners are? Some good old-fashioned Flash production work. In our Flash MovieClip, we have four movie clips, one for each corner, that are invisible (they are semi-transparent here, for demonstration purposes). On every frame, we position them on each appropriate corner of the graphic.</p>
<p><img class="alignnone size-full wp-image-5734" src="http://deconstruckt.com/wp-content/uploads/2010/02/block_assets.jpg" alt="block_assets" width="494" height="513" /></p>
<p>So, when we explode the wall into blocks, on every frame we are distorting the image to fit the corners, as they&#8217;re positioned on that frame.</p>
<p>Which brings us to a special consideration – some of the spin sequences result in the front face rotating away so that it&#8217;s unseen – what do we do in those cases? We simply place all for corners in the exact same location – like 0,0 – and check for it in our code. If the corners are positioned identically, we just had the graphics that we&#8217;re mapping to the face.</p>
<p><img class="alignnone size-full wp-image-5735" src="http://deconstruckt.com/wp-content/uploads/2010/02/break_apart.jpg" alt="break_apart" width="494" height="256" /></p>
<div class="code">public function setFace(bitmapData:BitmapData):void<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_asset.scaleX = _asset.scaleY = _scaleAdjust;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_faceDistortion = new DistortImage( bitmapData.width, bitmapData.height, 3, 3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_faceBitmap = new Bitmap( bitmapData, PixelSnapping.NEVER, false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(_faceShape);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_faceDistortion.setTransform( _faceShape.graphics, _faceBitmap.bitmapData, getCornerTL(), getCornerTR(), getCornerBR(), getCornerBL());<br />
}</p>
<p>private function update():void<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(getCornerBL().x != getCornerTR().x || getCornerBL().y != getCornerTR().y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_faceShape.graphics.clear();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_faceDistortion.setTransform( _faceShape.graphics, _faceBitmap.bitmapData, getCornerTL(), getCornerTR(), getCornerBR(), getCornerBL());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_faceShape.visible = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x += _xVel;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y += _yVel;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pseudoZ += _zVel;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_yVel += GRAVITY;<br />
}</p>
<p>public function getCornerTR():Point<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new Point( _asset.cornerTR.x*_asset.scaleX, _asset.cornerTR.y*_asset.scaleY );<br />
}</p>
<p>public function getCornerTL():Point<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new Point( _asset.cornerTL.x*_asset.scaleX, _asset.cornerTL.y*_asset.scaleY );<br />
}</p>
<p>public function getCornerBR():Point<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new Point( _asset.cornerBR.x*_asset.scaleX, _asset.cornerBR.y*_asset.scaleY );<br />
}</p>
<p>public function getCornerBL():Point<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new Point( _asset.cornerBL.x*_asset.scaleX, _asset.cornerBL.y*_asset.scaleY );<br />
}</p></div>
<h4>Processing the distortion</h4>
<p>This was all well and good, except for one small thing – it was totally overtaxing the processor, chugging like mad. It quickly became clear that it wouldn&#8217;t look smooth on even the best of computers. We did not give up hope, however – we figured that we could find a point to pause for a moment, run each frame of distortion that we would need, and save each as a bitmap. That way, instead of manipulating a bitmap every frame, with all of the smushing and interpolating of pixels that required, we could just swap a bitmap in and out.</p>
<p>To do this, we needed to capture those corner positions from the MovieClip. As soon as the movie clip assets are loaded in – we&#8217;re loading those separately, by the way, so that the site can get up and running without all those extra images to load – we run a timer, on each timer event advancing the MovieClip a frame and recording corner positions for each sequence into static arrays.</p>
<p>Now that we have all that information stored, we can go through the whole process again – splitting the wall into blocks, sending it a chunk of BitmapData, and assigning it a sequence. We use a timer to progress through all the different frames, using the corner information stored in the static arrays to distort the BitmapData and then save it as a new bitmap into an array.</p>
<p>Once every block is done distorting and storing its sequence of bitmaps, the explosion occurs – the blocks move outward and begin to spin, and the bitmaps are swapped out to show the correct distortion for each frame.</p>
<h3>Phase 3: The minifigure</h3>
<h4>A word about the minifig</h4>
<p>The minifig is an instantly recognizable part of the LEGO brand, so what better way to inject some more fun into the site than having a minifig with a jetpack flying around? Better yet, why not have the minifig be the impetus behind breaking the wall apart? The programming isn&#8217;t super complex, but we&#8217;ll cover it quickly here.</p>
<h4>Jetting around</h4>
<p>When a block is selected, the minifig is positioned offstage – using a bit of random logic (if (Math.random() &gt; .5)) to determine which side of the screen to place him on. Another bit of random logic determines whether the minifig will fly directly behind the block, or whether it will fly around the front of the blocks first. The motion is handled by Tweener, using bezier points to create smooth curves. If the minifig is flying directly, he is immediately swapped from a container sprite that sits above the block walls to one that sits below them – if flying around, he gets swapped at the midpoint of his flight.</p>
<h4>Do the twist</h4>
<p>The minifig wouldn&#8217;t look that great if he was just facing straight ahead all the time, so the team created a sequence of renders of him rotating side-to-side. Armed with these frames, we built an enterframe handler into the minifigure class. Every frame, we compared the current x position to the x position in the previous frame. Based on that difference, the minifig is rotated, and the image sequence goes to the appropriate position.</p>
<p><img class="alignnone size-full wp-image-5736" src="http://deconstruckt.com/wp-content/uploads/2010/02/twist_miniman.jpg" alt="twist_miniman" width="494" height="369" /></p>
<div class="code">var targetRotation:Number;<br />
if((x - _previous.x) &lt; 30 &amp;&amp; (x - _previous.x) &gt; -30 )<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetRotation = (x - _previous.x);<br />
}<br />
else if ((x - _previous.x) &gt;= 30)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetRotation = 30;<br />
}<br />
else<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetRotation = -30;<br />
}<br />
_asset.rotation = (targetRotation - _asset.rotation)*.25 + _asset.rotation;</p>
<p>if(_twist)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var targetFrame:int = Math.round(13 - _asset.rotation/2.5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetFrame = Math.min(targetFrame, 24);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetFrame = Math.max(targetFrame, 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_asset.gotoAndStop(targetFrame);<br />
}</p>
<p>_previous.x = x;<br />
_previous.y = y;</p></div>
<h4>Break on through</h4>
<p>Once the minifig is behind the block wall, we run the pre-processing for the explosion, rendering out all of the distorted bitmaps for the explosion. As soon as all the pieces are ready, the minifig plays through one of three “break through” sequences – randomly chosen – and the block explosion goes off. Once all the blocks are offscreen, the minifig gets sent back offscreen using Tweener.</p>
<p><img class="alignnone size-full wp-image-5737" src="http://deconstruckt.com/wp-content/uploads/2010/02/break_through_minifig.jpg" alt="break_through_minifig" width="494" height="369" /></p>
<h4>And that&#8217;s it!</h4>
<p>In a nutshell, that&#8217;s how our team pulled off the explosion effect – fully realized through a combination of 3d work, Flash production, and AS3. Hope it was educational – now go play with the site some more!</p>
]]></content:encoded>
			<wfw:commentRss>http://deconstruckt.com/build/bustin-bricks-behind-the-scenes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Go Ahead, Push Our Buttons.</title>
		<link>http://deconstruckt.com/create/go-ahead-push-our-buttons/</link>
		<comments>http://deconstruckt.com/create/go-ahead-push-our-buttons/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 21:52:23 +0000</pubDate>
		<dc:creator>Kyality</dc:creator>
		
		<category><![CDATA[Create]]></category>

		<category><![CDATA[Events]]></category>

		<category><![CDATA[Digital]]></category>

		<category><![CDATA[Summit]]></category>

		<guid isPermaLink="false">http://deconstruckt.com/?p=5715</guid>
		<description><![CDATA[
StruckAxiom just finished the branding and digital design for Utah&#8217;s first digital conference called PushButton Summit 2010. This event will be Utah’s premiere digital media summit for animation, gaming, mobile distribution, interactive and entertainment. It&#8217;s a two-day event  and is intended to bring together world-class industry and technology leaders, entrepreneurs, students and executives to discuss the [...]]]></description>
			<content:encoded><![CDATA[<p><object width="494" height="278"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9025402&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9025402&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="494" height="278"></embed></object>
<p>StruckAxiom just finished the branding and digital design for Utah&#8217;s first digital conference called <a href="http://pushbuttonsummit.com/">PushButton Summit 2010</a>. This event will be Utah’s premiere digital media summit for animation, gaming, mobile distribution, interactive and entertainment. It&#8217;s a two-day event  and is intended to bring together world-class industry and technology leaders, entrepreneurs, students and executives to discuss the latest in what’s pushing the creation and use of digital media. We <em>just</em> finished this teaser thanks to the talents of our own Tosh Brown as well as Bob Zagorskis.</p>
<p>Enjoy and better yet, come to SLC and check out the big event!</p>
]]></content:encoded>
			<wfw:commentRss>http://deconstruckt.com/create/go-ahead-push-our-buttons/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sky-high High</title>
		<link>http://deconstruckt.com/play/sky-high-high/</link>
		<comments>http://deconstruckt.com/play/sky-high-high/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 21:48:57 +0000</pubDate>
		<dc:creator>Kyality</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<category><![CDATA[Play]]></category>

		<category><![CDATA[jbang]]></category>

		<category><![CDATA[sleepy students]]></category>

		<guid isPermaLink="false">http://deconstruckt.com/?p=5712</guid>
		<description><![CDATA[
Our fearless founder, Jason Bangerter, spoke to a inspiring group of students at Skyline High here in the Salt Lake valley last week. This excited group was engaged and had a ton of great questions. We&#8217;re constantly impressed with the level of excitement and coming from high school age students in the region. They&#8217;re hungry [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-5713" title="skyline" src="http://deconstruckt.com/wp-content/uploads/2010/02/skyline.jpg" alt="skyline" width="494" height="165" /></p>
<p>Our fearless founder, Jason Bangerter, spoke to a inspiring group of students at Skyline High here in the Salt Lake valley last week. This excited group was engaged and had a ton of great questions. We&#8217;re constantly impressed with the level of excitement and coming from high school age students in the region. They&#8217;re hungry to learn about the industry and we&#8217;re more than happy to tell them anything we can about the opportunities out there. Some of these high school students have set their sights pretty high and amazingly enough, many of them have skills to pay the bills too!</p>
<p>PS: Jason swears the administration lady in the blue-grey sweater right, center isn&#8217;t asleep. Sure Jason, whatever makes you feel better : )</p>
]]></content:encoded>
			<wfw:commentRss>http://deconstruckt.com/play/sky-high-high/feed/</wfw:commentRss>
		</item>
		<item>
		<title>LEGO! LEGO! LEGO!</title>
		<link>http://deconstruckt.com/create/lego-lego-lego/</link>
		<comments>http://deconstruckt.com/create/lego-lego-lego/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 19:22:54 +0000</pubDate>
		<dc:creator>upto12</dc:creator>
		
		<category><![CDATA[Create]]></category>

		<category><![CDATA[Interactive]]></category>

		<guid isPermaLink="false">http://deconstruckt.com/?p=5662</guid>
		<description><![CDATA[Like any good children of the 80s, we love LEGOs. So when our friends at Pereira &#38; O&#8217;Dell hollered at us with a couple LEGO projects (the LEGO Photo iPhone app and LEGO CL!CK site), we didn&#8217;t hesitate. Coming into the studio to work/play with LEGOs all day—physically and virtually—has been ridiculously inspiring.


Now that the results of [...]]]></description>
			<content:encoded><![CDATA[<p>Like any good children of the 80s, we love LEGOs. So when our friends at Pereira &amp; O&#8217;Dell hollered at us with a couple LEGO projects (the <a href="http://legoclick.com/">LEGO Photo</a> iPhone app and <a href="http://legoclick.com/">LEGO CL!CK</a> site), we didn&#8217;t hesitate. Coming into the studio to work/play with LEGOs all day—physically and virtually—has been ridiculously inspiring.</p>
<div><img class="aligncenter size-full wp-image-5679" title="tall_man" src="http://deconstruckt.com/wp-content/uploads/2010/01/tall_man.jpg" alt="tall_man" width="494" height="329" /></div>
<p><img class="aligncenter size-full wp-image-5681" title="biplane" src="http://deconstruckt.com/wp-content/uploads/2010/01/biplane.jpg" alt="biplane" width="494" height="329" /></p>
<p>Now that the results of a few (okay, more than a few) late nights are alive and kicking on the Interweb, we&#8217;re predictably giddy about the positive response. LEGO Photo is the #5 Free App in the iTunes Store as of today. Good (and incredibly smart) people from <a href="http://www.fastcompany.com/blog/william-bostwick/architecture-design/legos-new-site-brings-out-kid-and-procrastinator-all-us">Fast Company</a>, <a href="http://mashable.com/2010/01/11/lego-click/">Mashable</a>, <a href="http://kronikle.kidrobot.com/lego-iphone-app-lets-you-lego-ize-your-pics/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss">KRonikle</a> (the Kidrobot blog!), <a href="http://app.itize.us/wp/?p=72">app.itize.us</a> and <a href="http://www.wired.com/geekdad/2010/01/lego-click/">WIRED</a> have all had nice things to say about the projects.</p>
<p>So. Download the app. Get inspired on the site. And&#8230; please upload your LEGO-fied photos to the <a href="http://www.flickr.com/groups/legophoto/pool/">Flickr group</a> we just discovered. You can see some of the early results of the collection here:</p>
<p><iframe align="center" src="http://www.flickr.com/slideShow/index.gne?group_id=1286081@N24&#038;user_id=&#038;set_id=&#038;text=" frameBorder="0" width="494" height="494" scrolling="no"></iframe><br /><small>Created with <a href="http://www.admarket.se" title="Admarket.se">Admarket&#8217;s</a> <a href="http://flickrslidr.com" title="flickrSLiDR">flickrSLiDR</a>.</small></p>
<p>Please be careful. LEGOfying an already-LEGOfied image may disrupt the balance of the space-time continuum.</p>
]]></content:encoded>
			<wfw:commentRss>http://deconstruckt.com/create/lego-lego-lego/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Haiti Earthquake Relief</title>
		<link>http://deconstruckt.com/play/haiti-earthquake-relief/</link>
		<comments>http://deconstruckt.com/play/haiti-earthquake-relief/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 17:02:19 +0000</pubDate>
		<dc:creator>dylansm</dc:creator>
		
		<category><![CDATA[Play]]></category>

		<guid isPermaLink="false">http://deconstruckt.com/?p=5667</guid>
		<description><![CDATA[If you would like to contribute to the relief efforts in Haiti, there are several good options.
To donate $10 to the Red Cross (charge will be automatically added to your phone bill), text &#8220;HAITI&#8221; to 90999 (via US State Dept).
The following organizations are also accepting donations:



]]></description>
			<content:encoded><![CDATA[<p>If you would like to contribute to the relief efforts in Haiti, there are several good options.</p>
<p>To donate $10 to the Red Cross (charge will be automatically added to your phone bill), text &#8220;HAITI&#8221; to 90999 (via <a href="http://www.state.gov/p/wha/ci/ha/index.htm">US State Dept</a>).</p>
<p>The following organizations are also accepting donations:</p>
<p><a href="http://www.redcross.org/portal/site/en/menuitem.94aae335470e233f6cf911df43181aa0/?vgnextoid=15c0c5a210826210VgnVCM10000089f0870aRCRD"><img class="alignnone size-full wp-image-5669" src="http://deconstruckt.com/wp-content/uploads/2010/01/rc.gif" alt="Red Cross" width="180" height="71" /></a></p>
<p><a href="https://donate.doctorswithoutborders.org/SSLPage.aspx?pid=197&amp;hbc=1&amp;source=ADR1001E1D01"><img class="alignnone size-full wp-image-5670" src="http://deconstruckt.com/wp-content/uploads/2010/01/dwb.gif" alt="dwb" width="215" height="79" /></a></p>
<p><a href="https://donate.mercycorps.org/donation.htm?DonorIntent=Haiti+Earthquake"><img class="alignnone size-full wp-image-5671" src="http://deconstruckt.com/wp-content/uploads/2010/01/mc.gif" alt="mc" width="215" height="74" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://deconstruckt.com/play/haiti-earthquake-relief/feed/</wfw:commentRss>
		</item>
		<item>
		<title>And A Merry Mustache To All&#8230;</title>
		<link>http://deconstruckt.com/play/and-a-merry-mustache-to-all/</link>
		<comments>http://deconstruckt.com/play/and-a-merry-mustache-to-all/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 21:08:39 +0000</pubDate>
		<dc:creator>upto12</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<category><![CDATA[Play]]></category>

		<category><![CDATA[Abraham]]></category>

		<category><![CDATA[Distinguished Gentlemen]]></category>

		<category><![CDATA[Luigi]]></category>

		<category><![CDATA[Mario]]></category>

		<category><![CDATA[Mustachioed]]></category>

		<category><![CDATA[PDX Holiday Party]]></category>

		<category><![CDATA[The Professor]]></category>

		<guid isPermaLink="false">http://deconstruckt.com/?p=5632</guid>
		<description><![CDATA[


]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-5633" title="img_0748" src="http://deconstruckt.com/wp-content/uploads/2009/12/img_0748.jpg" alt="img_0748" width="494" height="371" /></p>
<p><img class="aligncenter size-full wp-image-5634" title="img_0749" src="http://deconstruckt.com/wp-content/uploads/2009/12/img_0749.jpg" alt="img_0749" width="494" height="371" /></p>
<p><img class="aligncenter size-full wp-image-5635" title="img_0750" src="http://deconstruckt.com/wp-content/uploads/2009/12/img_0750.jpg" alt="img_0750" width="494" height="659" /></p>
]]></content:encoded>
			<wfw:commentRss>http://deconstruckt.com/play/and-a-merry-mustache-to-all/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Holiday Party = Fashion Faux Pas?</title>
		<link>http://deconstruckt.com/play/holiday-party-fashion-faux-pas/</link>
		<comments>http://deconstruckt.com/play/holiday-party-fashion-faux-pas/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 20:40:53 +0000</pubDate>
		<dc:creator>Kyality</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<category><![CDATA[Play]]></category>

		<category><![CDATA[Awesome White Puff-Daddy Suit(s)]]></category>

		<category><![CDATA[Cacti]]></category>

		<category><![CDATA[Goodwin sans elf-ear]]></category>

		<category><![CDATA[Holidaze]]></category>

		<guid isPermaLink="false">http://deconstruckt.com/?p=5477</guid>
		<description><![CDATA[
On Friday Struck and Axiom&#8217;s SLC offices joined traditions for the first annual Struck/Axiom Holiday Par-tay at the elegant Cactus &#38; Tropicals. (Shouldn&#8217;t it be Cacti &#38; Tropicals? I mean there were more than one cactus there.) It was complete with fancy dining, the traditional Naughty or Nice roast, a prize give-way and a fashion [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-5479" title="fashon_faux_pas" src="http://deconstruckt.com/wp-content/uploads/2009/12/fashon_faux_pas.jpg" alt="fashon_faux_pas" width="494" height="700" /></p>
<p>On Friday Struck and Axiom&#8217;s SLC offices joined traditions for the first annual Struck/Axiom Holiday Par-tay at the elegant Cactus &amp; Tropicals. (Shouldn&#8217;t it be Cacti &amp; Tropicals? I mean there were more than one cactus there.) It was complete with fancy dining, the traditional Naughty or Nice roast, a prize give-way and a fashion police 911 call. Needless to say, fun was had by all, especially once Tosh and Spencer broke out into their choreographed dance routine.</p>
<p><img class="aligncenter size-full wp-image-5478" title="dinner" src="http://deconstruckt.com/wp-content/uploads/2009/12/dinner.jpg" alt="dinner" width="494" height="326" /></p>
<p>The other eventful moment of the evening was when <a href="http://twitter.com/mrryangoodwin">@MrRyanGoodwin</a> proved to us why he definitely positively should in fact continue to rock the elf-style side-hair flippy-things. You were right bro, you were right. (And no, oddly enough he isn&#8217;t impersonating the statue that happened to be right behind him.)</p>
<p><img class="aligncenter size-full wp-image-5480" title="goodwin" src="http://deconstruckt.com/wp-content/uploads/2009/12/goodwin.jpg" alt="goodwin" width="494" height="326" /></p>
]]></content:encoded>
			<wfw:commentRss>http://deconstruckt.com/play/holiday-party-fashion-faux-pas/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hello. (Part 9)</title>
		<link>http://deconstruckt.com/create/hello-part-9/</link>
		<comments>http://deconstruckt.com/create/hello-part-9/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 17:43:46 +0000</pubDate>
		<dc:creator>upto12</dc:creator>
		
		<category><![CDATA[Behind The Scenes]]></category>

		<category><![CDATA[Create]]></category>

		<category><![CDATA[Andy]]></category>

		<category><![CDATA[dylan]]></category>

		<category><![CDATA[Hello]]></category>

		<category><![CDATA[Leslie]]></category>

		<category><![CDATA[Minori]]></category>

		<category><![CDATA[Mojo]]></category>

		<category><![CDATA[Struck/Axiom]]></category>

		<category><![CDATA[The DPC]]></category>

		<guid isPermaLink="false">http://deconstruckt.com/?p=4227</guid>
		<description><![CDATA[Part 9? Really? This is getting a little out of control. But, as long as there are talented people to profile (and as long as your ravenous appetite for clever quips and ridiculous links remains insatiable), the beat goes on.

Dylan Smith. Interactive. @dylansm. PDX.
Our mothers taught us that if we didn&#8217;t have something nice to [...]]]></description>
			<content:encoded><![CDATA[<p>Part 9? Really? This is getting a little out of control. But, as long as there are talented people to profile (and as long as your ravenous appetite for clever quips and ridiculous links remains insatiable), the beat goes on.</p>
<p><img class="aligncenter size-full wp-image-4228" title="dylan_smith" src="http://deconstruckt.com/wp-content/uploads/2009/12/dylan_smith.jpg" alt="dylan_smith" width="453" height="604" /></p>
<p><strong>Dylan Smith</strong>. Interactive. <a href="http://twitter.com/dylansm">@dylansm</a>. PDX.<br />
Our mothers taught us that if we didn&#8217;t have something nice to say about someone, we shouldn&#8217;t say anything at all. Dylan&#8230; well&#8230; uhmmm&#8230; Dylan is&#8230; uh&#8230; hmmm&#8230; Aw, c&#8217;mon, Dylan! You know it&#8217;s not true. We have lots of nice things to say about you. We just can&#8217;t really say them right now. Not while the HR folks are looking over our shoulders. Are we serious? Actually, yes. Very serious.</p>
<p><img class="aligncenter size-full wp-image-4267" title="andy_smith" src="http://deconstruckt.com/wp-content/uploads/2009/12/andy_smith.jpg" alt="andy_smith" width="494" height="494" /></p>
<p><strong>Andy Smith</strong>. Lots of Things. LA.<br />
A California native, Andy is a vintage car aficionado who dreams of one day buying a classic muscle car and heading for a weekend in Vegas. You know, <a href="http://www.youtube.com/watch?v=vhFVZsk3XEs">just like those one dudes</a>. Andy enjoys cooking (while his wife fixes the leaky faucet!), movies and anything written by James Ellroy. But lately, he&#8217;s been tackling the works of Dr. Seuss with his kids, Ben and Josie.</p>
<p><img class="aligncenter size-full wp-image-4229" title="leslie1" src="http://deconstruckt.com/wp-content/uploads/2009/12/leslie1.jpg" alt="leslie1" width="121" height="169" /></p>
<p><strong>Leslie Roberts</strong>. Producer. SLC.<br />
What does Leslie love? Plants. Flowers. Dancing during staff meetings. Adventures. Christmas presents. Fishing. Fresh air. Songs. Poems. Books. Paintings. Small animals. Large animals. Bright copper kettles. Warm woolen mittens. Brown paper packages all tied up with string. Who does Leslie love? You. F&#8217;reals. She loves you.</p>
<p><img class="aligncenter size-full wp-image-4230" title="jon_minori" src="http://deconstruckt.com/wp-content/uploads/2009/12/jon_minori.jpg" alt="jon_minori" width="408" height="388" /></p>
<p><strong>Jonathan Minori</strong>. Interactive. <a href="http://twitter.com/minoflow">@minoflow</a>. SLC.<br />
One day, Jonathan Minori will direct a music video. Hopefully, it&#8217;s something like <a href="http://www.youtube.com/watch?v=vqkawrslzJA">THIS</a> and not something like <a href="http://www.youtube.com/watch?v=xjobz-SPg0E">THIS</a>. Although, if it were something like <a href="http://www.youtube.com/watch?v=Nt2OVAgkHBc">THIS</a> blended with something like <a href="http://www.youtube.com/watch?v=0UjsXo9l6I8">THIS</a>, my head would probably explode from sheer awesomeness. In the meantime, Jon lives on powder, owns BKnowlden in triathlons and designs pretty things for the internets.</p>
<p><img class="aligncenter size-full wp-image-4231" title="dan-conner" src="http://deconstruckt.com/wp-content/uploads/2009/12/dan-conner.jpg" alt="dan-conner" width="240" height="240" /></p>
<p><strong>Daniel Conner</strong>. SLC.<br />
Mr. Conner won the Struck Fantasy Football Championship last year. He was a merciless trash-talker. He let no one forget his victory. This year, the gods of nerd football have evened the score and the DPC currently resides in the basement of the league. You know what they say about karma… Anyway, Dan&#8217;s not a complete lost cause. He likes to fish Henry&#8217;s Fork in Island Park, ID and he (supposedly) graduated from  Thunderbird (THE American Graduate School of International Management). I guess we&#8217;ll believe him… but that school sounds totally made up to me.</p>
<p><img class="aligncenter size-full wp-image-4232" title="m_crespo" src="http://deconstruckt.com/wp-content/uploads/2009/12/m_crespo.jpg" alt="m_crespo" width="150" height="200" /></p>
<p><strong>Melissa Crespo</strong>. <a href="http://twitter.com/this_melis">@this_melis</a>. SLC. (Honorary Induction)<br />
While the UofU soccer standout has returned to an institution of higher learning and no longer sits, meets and eats with us—she said something on her last day that we&#8217;ll probably never forget: &#8220;Good things come from following the rules, but nothing great.&#8221; Well said, Mojo. Well. Said. (Cue swelling strings&#8230; and here we go with the slow clap&#8230; Clap&#8230; Clap&#8230; Clap&#8230; And, BOOM, thunderous applause!)</p>
]]></content:encoded>
			<wfw:commentRss>http://deconstruckt.com/create/hello-part-9/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
