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

<channel>
	<title>Oli Blanton</title>
	<atom:link href="http://oliblanton.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://oliblanton.com</link>
	<description>Design &#38; Development</description>
	<lastBuildDate>Mon, 20 Feb 2012 05:11:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Nike Snowboarding &#8211; Scroll</title>
		<link>http://oliblanton.com/nike-snowboarding-scroll/</link>
		<comments>http://oliblanton.com/nike-snowboarding-scroll/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 23:12:03 +0000</pubDate>
		<dc:creator>Oli Blanton</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://theoryandrobots.com/?p=165</guid>
		<description><![CDATA[New brand site for Nike Snowboarding uses modern technologies to enhance speed, improve accessibility, and create a unique ...]]></description>
			<content:encoded><![CDATA[<p>New brand site for Nike Snowboarding uses modern technologies to enhance speed, improve accessibility, and create a unique <span id="more-366"></span>modern browsing experience. ..All of this is achieved with an animated navigation system that uses the jQuery plugin, LocalScroll.</p>
<p><strong>Nike Snowboarding / Unique Scroll Bar Experience</strong></p>
<p><span style="font-size: 15px; font-weight: bold;"><a href="http://flesler.blogspot.com/2007/10/jquerylocalscroll-10.html">jQuery.LocalScroll</a></span></p>
<div>
<p><span style="font-weight: bold;">What does this plugin do?</span></p>
</div>
<div>This plugin will animate a regular anchor navigation and will allow your visitors to navigate your site with a smooth scrolling effect.&nbsp;</p>
<p>Each time a link is clicked, the element you decide (can be the whole screen), will gradually scroll to the targeted element, instead of &#8220;jumping&#8221; as it&#8217;d normally do.<a href="http://flesler.blogspot.com/2007/10/jqueryscrollto.html">jQuery.ScrollTo</a> is used for the animation.</p>
</div>
<div><strong>Check out the site:</strong> <a href="http://www.nikesnowboarding.com/">http://www.nikesnowboarding.com/</a></div>
<div>Code breakdown below →</div>
<p>
<a href="http://theoryandrobots.com/wp-content/uploads/2011/03/Screen-shot-2011-02-14-at-12.29.19-AM.png"><img class="alignnone size-large wp-image-167" title="Screen-shot-2011-02-14-at-12.29.19-AM" src="http://theoryandrobots.com/wp-content/uploads/2011/03/Screen-shot-2011-02-14-at-12.29.19-AM-600x250.png" alt="" width="580" /></a></p>
<p><a href="http://theoryandrobots.com/wp-content/uploads/2011/03/Screen-shot-2011-02-14-at-12.29.32-AM.png"><img class="alignnone size-large wp-image-168" title="Screen-shot-2011-02-14-at-12.29.32-AM" src="http://theoryandrobots.com/wp-content/uploads/2011/03/Screen-shot-2011-02-14-at-12.29.32-AM-600x250.png" alt="" width="580" /></a></p>
<h4>How to implement it ?</h4>
<p>You need to set links and anchors, that means, set an id to all those elements you want to scroll to.<br />
These are the <strong>anchors</strong>.<br />
Then add links with the respective id in the href, like this:</p>
<pre>&lt;a href="#the_id"&gt;your_text&lt;/a&gt;</pre>
<p>Let&#8217;s call these <strong>&#8220;local links&#8221;</strong>.  Lastly, you must call jQuery.LocalScroll on elements that contain our local links, <strong>you must wait for the <a href="http://docs.jquery.com/Events/ready" target="_blank">document to be ready</a></strong>.</p>
<p>So if (for example) you have a div with id &#8220;navigation&#8221; and the local links are inside. You add this inside a document.ready:</p>
<pre>$('#navigation').localScroll();</pre>
<p>If your links are all spread, you can use:</p>
<pre>$.localScroll();</pre>
<p>That gets all the local links in the page. Both calls to the plugin accept one optional argument, that is, a hash specifying the settings described below. None is required.<br />
<span style="font-weight: bold;"> </span></p>
<p><span style="font-weight: bold;">How do I use the settings ?</span></p>
<p>The most important setting is &#8216;target&#8217;, you might not want to navigate(scroll) the screen, but only an overflowed element(like the demo).<br />
In that case, you specify the target, with a selector or the element itself.</p>
<pre>$('#navigation').localScroll({
   target:'#content'
});</pre>
<p>Instead of the window, an element with id &#8216;content&#8217; will be scrolled.</p>
<p>Finally, a more complex call to show some customization in action:<br />
Let&#8217;s say you need to scroll on both axes to uncover all the anchors, then we&#8217;ll need the option &#8216;axis&#8217;.<br />
You want to do an horizontal scroll, and then vertical, the code would be:</p>
<pre>$('ul.sections').localScroll({
   target:'#content',
   axis:'xy',
   queue:true //one axis at a time
});</pre>
<p>Note that &#8216;axis&#8217; and &#8216;queue&#8217; actually belong to jQuery.ScrollTo, not to jQuery.LocalScroll.</p>
<p><a href="http://theoryandrobots.com/wp-content/uploads/2011/03/nike.png"><img class="alignnone size-full wp-image-345" title="nike" src="http://theoryandrobots.com/wp-content/uploads/2011/03/nike.png" alt="" width="580" height="986" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://oliblanton.com/nike-snowboarding-scroll/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wishbone Design &#8211; Drag</title>
		<link>http://oliblanton.com/wishbone-design-drag-menu/</link>
		<comments>http://oliblanton.com/wishbone-design-drag-menu/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 23:39:24 +0000</pubDate>
		<dc:creator>Oli Blanton</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://theoryandrobots.com/?p=380</guid>
		<description><![CDATA[Check out the Wishbonedesign.com website, the first thing you&#8217;ll notice is the menu bar that floats around the ...]]></description>
			<content:encoded><![CDATA[<p>Check out the <a href="http://wishbonedesign.com/">Wishbonedesign.com</a> website, the first thing you&#8217;ll notice is the menu bar that floats around the screen. <span id="more-380"></span>You&#8217;ll quickly discover that it becomes the most amazing thing about the site with it&#8217;s drag and drop function that animates the stretching strings of the the ballon. I love this design, and I had to find out how it was done. The only way this could be accomplished is through Flash and a class called, <strong>caurina.transitions.Tweener</strong>.<br />
<strong>Wishbone Design &#8211; Drag Menu</strong></p>
<h2>STEP 1: CREATE A NEW FILE</h2>
<p>Let’s start by creating a new Actionscript 3.0 File. Save it as main.fla wherever you want – I’ll assume C:Websitemain.fla</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/as3fla.jpg" alt="" /></p>
<h2>STEP 2: CONFIGURE THE FOLDERS</h2>
<p>Let’s create the folders we need for this example. If you are familiar with classpaths and you have your own classpath, create the folder orgactionscript</p>
<h2>STEP 3: CUSTOM CLASS TWEENER</h2>
<p>Now let’s create a new ActionScript document and save it inside our orgactionscript folder as Main.as (for example: C:WebsiteorgactionscriptMain.as), or inside the orgactionscript folder in your classpath.</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/as3.jpg" alt="" /></p>
<h2>STEP 4: CONFIGURE THE DOCUMENT CLASS</h2>
<p>Now switch back to the FLA and let’s assign a document class to it. (Not familiar with document classes?<a href="http://active.tutsplus.com/tutorials/actionscript/quick-tip-how-to-use-a-document-class-in-flash/">Read this quick introduction</a>.)</p>
<p>Open the Properties panel of the FLA by clicking in any blank space on the stage (with no objects selected), then clicking Window &gt; Properties.</p>
<p>In the panel that opens, type “Main” for the Class (or Document Class, in Flash CS3).</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/documentclass.jpg" alt="" /></p>
<p>Save the FLA, but do not close it.</p>
<h2>STEP 5: CODE THE DOCUMENT CLASS</h2>
<p>We could write our code directly in the timeline, but that’s not a good habit; the purpose of the document class is to eliminate timeline programming.</p>
<p>So, create a new ActionScript File and save it as “Main.as” in the same folder as your FLA (for example:C:WebsiteMain.as).</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/as3.jpg" alt="" /></p>
<p>Let’s code it now</p>
<pre class="brush: plain; title: ; notranslate">/*

*************************************

* Drag Menu

* http://www.oliblanton.com

* © Author: Oli Blanton

* version 1.0

* oliblanton@gmail.com

*************************************

*/

package org.flepstudio

{

import flash.display.MovieClip;

import flash.geom.Rectangle;

import flash.events.Event;

import flash.events.MouseEvent;

import caurina.transitions.Tweener;

public class Main extends MovieClip

{

private var head:Head;

private var items_array:Array=new Array('Home','About','Gallery','Blog','Contact');

private var clips_array:Array=new Array();

private var distance:int=5;

public function Main()

{

addEventListener(Event.ADDED_TO_STAGE,init);

}

private function init(evt:Event):void

{

removeEventListener(Event.ADDED_TO_STAGE,init);

stage.frameRate=31;

createHead();

createItems();

openListener();

}

private function createHead():void

{

head=new Head();

head.x=150;

head.y=50;

addChild(head);

}

private function createItems():void

{

for(var i:int=0;i

{

var item:Item=new Item();

item.name='item_'+i+'_mc';

item.x=head.x;

item.y=(head.y+head.height+distance*2)+item.height*i+distance*i;

item.item_txt.text=items_array[i];

addChild(item);

clips_array.push(item);

}

}

private function openListener():void

{

head.mouseChildren=false;

head.addEventListener(MouseEvent.MOUSE_DOWN,setDown);

head.addEventListener(MouseEvent.MOUSE_UP,setUp);

for(var i:int=0;i

{

clips_array[i].mouseChildren=false;

clips_array[i].buttonMode=true;

clips_array[i].addEventListener(MouseEvent.MOUSE_DOWN,setItemDown);

}

}

private function setDown(evt:MouseEvent):void

{

var rect:Rectangle=new Rectangle(head.width/2,head.height/2,stage.stageWidth-head.width,stage.stageHeight-head.height);

evt.target.startDrag(false,rect);

evt.target.addEventListener(Event.ENTER_FRAME,dragAll);

}

private function dragAll(evt:Event):void

{

for(var i:int=0;i

{

if(i==0)

{

Tweener.addTween(clips_array[i],{x:evt.target.x, time:0.3, transition:&quot;easeOutQuad&quot;});

Tweener.addTween(clips_array[i],{y:evt.target.y+evt.target.height+distance*2, time:0.3, transition:&quot;easeOutQuad&quot;});

}

else

{

Tweener.addTween(clips_array[i],{x:clips_array[i-1].x, time:0.3, transition:&quot;easeOutQuad&quot;});

Tweener.addTween(clips_array[i],{y:clips_array[i-1].y+clips_array[i-1].height+distance, time:0.3, transition:&quot;easeOutQuad&quot;});

}

}

}

private function setUp(evt:MouseEvent):void

{

evt.target.stopDrag();

}

private function setItemDown(evt:MouseEvent):void

{

trace(evt.target.name);

}

}

}</pre>
<a class="button small white" href="http://olib.co/demo/wishbonedesign/"> Demo Project </a>
<a class="button small white" href="http://olib.co/demo/wishbonedesign.zip"> Download Files </a>
]]></content:encoded>
			<wfw:commentRss>http://oliblanton.com/wishbone-design-drag-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mater Gymnasium &#8211; Scale</title>
		<link>http://oliblanton.com/mater-gymnasium-scale/</link>
		<comments>http://oliblanton.com/mater-gymnasium-scale/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 17:58:37 +0000</pubDate>
		<dc:creator>Oli Blanton</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://theoryandrobots.com/?p=325</guid>
		<description><![CDATA[The Mater Gymnasium website has a very clean and simple navigation system. The sub menus are all images, and ...]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://matergymnasium.dk/" target="_blank">Mater Gymnasium</a> website has a very clean and simple navigation system. <span id="more-371"></span>The sub menus are all images, and the pages are all animated to fade in and out with an explode to smoke effect. Since I refer to this site quite a bit, I have found a couple of tricks they used to create such a unique web experience.</p>
<p>Mater Gymnasium has been featured on <a href="http://thefwa.com/site/mater-gymnasium/q=gymnasium" target="_blank">The FWA</a> for site of the month for it’s amazing navigation system and clean design. The Gymnasium collection takes its inspiration from a simplier time in our lives when victories were measured on scoreboards.</p>
<p>The scene is set, let the exploration begin..</p>
<p><a href="http://oliblanton.com/wp-content/uploads/2011/01/Screen-shot-2011-02-14-at-12.27.38-AM.png"><img title="Screen shot 2011-02-14 at 12.27.38 AM" src="http://oliblanton.com/wp-content/uploads/2011/01/Screen-shot-2011-02-14-at-12.27.38-AM-680x491.png" alt="" width="570" /></a></p>
<p>This Quick Tip explains how to use an image as a website background and scale it proportionally to the stage size. It’s great for when you’re using a SWF that’s full-height and full-width inside a webpage.</p>
<h2>Step 1: Create a New File</h2>
<p>Let’s start by creating a new Actionscript 3.0 File. Save it as resize.fla wherever you want – I’ll assumeC:resizeresize.fla</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/as3fla.jpg" alt="" /></p>
<h2>Step 2: Configure the Folders</h2>
<p>Let’s create the folders we need for this tutorial. If you are familiar with classpaths and you have your own classpath, create the folder orgdisplayinside it (assuming you don’t already have one with the same name).</p>
<p>Otherwise, create the folder orgdisplay in the same folder as the resize.fla document (for example:C:resizeorgdisplay).</p>
<h2>Step 3: Import an Image File</h2>
<p>Import an image to your FLA’s library so that we can use it to test the effect. Click File &gt; Import &gt; “Import to library”.</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/importtolibrary.jpg" alt="" /></p>
<p>In the dialog that opens, find the file you’d like to use. The sky image I picked is available in the Source download at the top of the page.</p>
<hr />
<h2>Step 4: Configure the Image for Export</h2>
<p>Next we’ll export our image for ActionScript, so that we can refer to it in our code.</p>
<p>First open your library (if you can’t see it, click Window &gt; Library), right-click the image, and click Properties.</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/imageproperties.jpg" alt="" /></p>
<p>Change its name to “Sky.”</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/btnadvanced.jpg" alt="" /></p>
<p>If the advanced options are not visible, click Advanced in the bottom-right corner of the Properties window. Check the options, “Export for ActionScript” and “Export in Frame 1″, using the name Sky for the class andflash.display.BitmapData for the base class. Also make sure the option “Allow smoothing” is checked; this option will ensure that we maintain good image quality when resizing the image.</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/propertiespanel.jpg" alt="" /></p>
<p>Click OK to close the Properties panel. So, now we have configured everything in our FLA, you can save it.</p>
<hr />
<h2>Step 5: Custom Class OffsetResize</h2>
<p>Now let’s create a new ActionScript document and save it inside our orgdisplay folder as OffsetResize.as (for example: C:resizeorgdisplayOffsetResize.as), or inside the orgdisplay folder in your classpath.</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/as3.jpg" alt="" /></p>
<p>Next: code. Check out the comments.<br />
<code><br />
</code></p>
<blockquote><p>&nbsp;</p>
<p><code></p>
<div id="_mcePaste">package org.display{</div>
<div id="_mcePaste">//Import the needed classes for this object</div>
<div id="_mcePaste">import flash.display.Sprite;</div>
<div id="_mcePaste">import flash.display.DisplayObject;</div>
<div id="_mcePaste">import flash.events.Event;</div>
<div id="_mcePaste">//Creating a new class extending the Sprite class</div>
<div id="_mcePaste">public class OffsetResize extends Sprite{</div>
<div id="_mcePaste">//Create the static constants for maximum and minimum</div>
<div id="_mcePaste">//We will use this for the offsetType property</div>
<div id="_mcePaste">public static const MAX:String="max";</div>
<div id="_mcePaste">public static const MIN:String="min";</div>
<div id="_mcePaste">//The kind of the resize -- whether the image is bigger or smaller than the stage</div>
<div id="_mcePaste">private var _offsetType:String;</div>
<div id="_mcePaste">//The constructor function</div>
<div id="_mcePaste">public function OffsetResize($child:DisplayObject,$offsetType:String="max"):void{</div>
<div id="_mcePaste">//The offsetType; if no value is set the "max" value will be automatically assumed</div>
<div id="_mcePaste">_offsetType=$offsetType;</div>
<div id="_mcePaste">//Add the child here, any kind of DisplayObject</div>
<div id="_mcePaste">addChild($child);</div>
<div id="_mcePaste">//Check if this object is on stage. if so, call the init() function</div>
<div id="_mcePaste">if(stage) init();</div>
<div id="_mcePaste">//If it's not on stage it will listen for when it's added to the stage and then call the init() function</div>
<div id="_mcePaste">else addEventListener(Event.ADDED_TO_STAGE,init);</div>
<div id="_mcePaste">//This will check when this object is removed from the stage and call the end() function</div>
<div id="_mcePaste">addEventListener(Event.REMOVED_FROM_STAGE,end);</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">//The init() function (called when the object is in the stage)</div>
<div id="_mcePaste">//The Event=null parameter is because we used the init() without any parameter in the constructor</div>
<div id="_mcePaste">// and because it's also used as an event listener (ADDED_TO_STAGE)</div>
<div id="_mcePaste">private function init(e:Event=null):void{</div>
<div id="_mcePaste">//Detect when the stage is resized and call the stageResize() function</div>
<div id="_mcePaste">stage.addEventListener(Event.RESIZE,stageResize);</div>
<div id="_mcePaste">//Call the stageResize() function now, too</div>
<div id="_mcePaste">stageResize();</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">//The stageResize() function will be called every time the stage is resized</div>
<div id="_mcePaste">//The e:Event=null parameter is because we have called the stageResize() function without a parameter</div>
<div id="_mcePaste">private function stageResize(e:Event=null):void{</div>
<div id="_mcePaste">//Calculate the width ratio by dividing the stage's width by the object's width</div>
<div id="_mcePaste">var px:Number=stage.stageWidth/width;</div>
<div id="_mcePaste">//Calculate the height ratio by dividing the stage's height by the object's height</div>
<div id="_mcePaste">var py:Number=stage.stageHeight/height;</div>
<div id="_mcePaste">/*</div>
<div id="_mcePaste">This is the ternary operator; in one line it checks if _offsetType is "max".</div>
<div id="_mcePaste">If so, it sets the variable div as the maximum value between the width's ratio and the height's ratio.</div>
<div id="_mcePaste">If not, it sets the variable div as the minimum value between the width's ratio and the height's ratio.</div>
<div id="_mcePaste">So, this line is responsible for whether the image is bigger or smaller than the stage.</div>
<div id="_mcePaste">*/</div>
<div id="_mcePaste">var div:Number=_offsetType=="max" ? Math.max(px,py) : Math.min(px,py);</div>
<div id="_mcePaste">//These two lines resize this object according to the division ratio.</div>
<div id="_mcePaste">//If we use scaleX or scaleY here it wont work as we need it to.</div>
<div id="_mcePaste">width*=div;</div>
<div id="_mcePaste">height*=div;</div>
<div id="_mcePaste">//These two lines are responsible for centering this object on the stage.</div>
<div id="_mcePaste">x=(stage.stageWidth/2)-(width/2);</div>
<div id="_mcePaste">y=(stage.stageHeight/2)-(height/2);</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">//This function is called when this object is removed from stage, as we don't need the stageResize() function any more</div>
<div id="_mcePaste">private function end(e:Event):void{</div>
<div id="_mcePaste">//Remove the RESIZE listener from the stage</div>
<div id="_mcePaste">stage.removeEventListener(Event.RESIZE,stageResize);</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">/*</div>
<div id="_mcePaste">Here we create the offsetType parameter, so we can change how the object</div>
<div id="_mcePaste">resizes dynamically</div>
<div id="_mcePaste">*/</div>
<div id="_mcePaste">public function set offsetType(type:String):void{</div>
<div id="_mcePaste">_offsetType=type;</div>
<div id="_mcePaste">//After changing the type we call stageResize function again to update</div>
<div id="_mcePaste">if(stage) stageResize();</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">//Just for if we want to know what the offsetType is</div>
<div id="_mcePaste">public function get offsetType():String{ return _offsetType; }</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<p>package org.display{<br />
//Import the needed classes for this object	import flash.display.Sprite;	import flash.display.DisplayObject; import flash.events.Event;<br />
//Creating a new class extending the Sprite class	public class OffsetResize extends Sprite{<br />
//Create the static constants for maximum and minimum        //We will use this for the offsetType property	 public static const MAX:String="max";	 public static const MIN:String="min";<br />
//The kind of the resize -- whether the image is bigger or smaller than the stage	 private var _offsetType:String;<br />
//The constructor function	 public function OffsetResize($child:DisplayObject,$offsetType:String="max"):void{<br />
//The offsetType; if no value is set the "max" value will be automatically assumed	 _offsetType=$offsetType;<br />
//Add the child here, any kind of DisplayObject addChild($child);<br />
//Check if this object is on stage. if so, call the init() function	 if(stage) init();<br />
//If it's not on stage it will listen for when it's added to the stage and then call the init() function	 else addEventListener(Event.ADDED_TO_STAGE,init);<br />
//This will check when this object is removed from the stage and call the end() function addEventListener(Event.REMOVED_FROM_STAGE,end);	 }<br />
//The init() function (called when the object is in the stage)        //The Event=null parameter is because we used the init() without any parameter in the constructor // and because it's also used as an event listener (ADDED_TO_STAGE) private function init(e:Event=null):void{<br />
//Detect when the stage is resized and call the stageResize() function stage.addEventListener(Event.RESIZE,stageResize);<br />
//Call the stageResize() function now, too	 stageResize(); }<br />
//The stageResize() function will be called every time the stage is resized        //The e:Event=null parameter is because we have called the stageResize() function without a parameter	 private function stageResize(e:Event=null):void{<br />
//Calculate the width ratio by dividing the stage's width by the object's width var px:Number=stage.stageWidth/width;<br />
//Calculate the height ratio by dividing the stage's height by the object's height	 var py:Number=stage.stageHeight/height;<br />
/*            	This is the ternary operator; in one line it checks if _offsetType is "max".                If so, it sets the variable div as the maximum value between the width's ratio and the height's ratio.                If not, it sets the variable div as the minimum value between the width's ratio and the height's ratio.                So, this line is responsible for whether the image is bigger or smaller than the stage.            */	 var div:Number=_offsetType=="max" ? Math.max(px,py) : Math.min(px,py);<br />
//These two lines resize this object according to the division ratio.            //If we use scaleX or scaleY here it wont work as we need it to.	 width*=div; height*=div;<br />
//These two lines are responsible for centering this object on the stage. x=(stage.stageWidth/2)-(width/2);	 y=(stage.stageHeight/2)-(height/2);	 }<br />
//This function is called when this object is removed from stage, as we don't need the stageResize() function any more	 private function end(e:Event):void{         //Remove the RESIZE listener from the stage stage.removeEventListener(Event.RESIZE,stageResize);	 }<br />
/*        	Here we create the offsetType parameter, so we can change how the object            resizes dynamically        */	 public function set offsetType(type:String):void{	 _offsetType=type;<br />
//After changing the type we call stageResize function again to update	 if(stage) stageResize();	 }<br />
//Just for if we want to know what the offsetType is public function get offsetType():String{ return _offsetType; }	}}</p>
<p></code>&nbsp;</p></blockquote>
<h2>Step 6: Configure the Document Class</h2>
<p>Now switch back to the FLA and let’s assign a document class to it. (Not familiar with document classes?<a href="http://active.tutsplus.com/tutorials/actionscript/quick-tip-how-to-use-a-document-class-in-flash/">Read this quick introduction</a>.)</p>
<p>Open the Properties panel of the FLA by clicking in any blank space on the stage (with no objects selected), then clicking Window &gt; Properties.</p>
<p>In the panel that opens, type “Main” for the Class (or Document Class, in Flash CS3).</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/documentclass.jpg" alt="" /></p>
<p>Save the FLA again but do not close it.</p>
<hr />
<h2>Step 7: Code the Document Class</h2>
<p>We could write our code directly in the timeline, but that’s not a good habit; the purpose of the document class is to eliminate timeline programming.</p>
<p>So, create a new ActionScript File and save it as “Main.as” in the same folder as your FLA (for example:C:resizeMain.as).</p>
<p><img src="http://activetuts.s3.amazonaws.com/tuts/089_QTbackgroundResize/images/as3.jpg" alt="" /></p>
<p>Let’s code it now (see the comments in the code)<br />
<code><br />
</code></p>
<blockquote><p><code>package{</code></p>
<p><code>//Let's import the needed classes</code></p>
<p><code>import org.display.OffsetResize;</code></p>
<p><code>import flash.display.Sprite;</code></p>
<p><code>import flash.display.Bitmap;</code></p>
<p><code>import flash.display.StageAlign;</code></p>
<p><code>import flash.display.StageScaleMode;</code></p>
<p><code>import flash.events.Event;</code></p>
<p><code>import flash.events.MouseEvent;</code></p>
<p><code>//We are extending the Sprite class, rather than MovieClip, since we won't use any timeline animation here</code></p>
<p><code>public class Main extends Sprite{</code></p>
<p><code>//This will be the instance of our custom object OffsetResize</code></p>
<p><code>private var _bg:OffsetResize;</code></p>
<p><code>//The constructor</code></p>
<p><code>public function Main():void{</code></p>
<p><code>/*</code></p>
<p><code>We could use the stage property directly here, but I'm assuming that a lot of people</code></p>
<p><code>create a document like "base.swf" which loads the "main.swf" file -- in which case our</code></p>
<p><code>main.swf wouldn't have the stage property.</code></p>
<p><code>But it checks if there is a stage property. We can use this swf we will create with</code></p>
<p><code>or without the base.swf; in this case we will use it without the base.swf, but it's</p>
<p>prepared to use with the latter if we want.</p>
<p>So this line will check if our swf is on the stage, and, if so, call init().</p>
<p>*/</p>
<p>if(stage) init();</p>
<p>//If not on the stage it will call the init() function only when it's added to the stage</p>
<p>else addEventListener(Event.ADDED_TO_STAGE,init);</p>
<p>}</p>
<p>//The init function is called only when the object is in the stage</p>
<p>//It was explained before whe we are using this in the constructor function</p>
<p>private function init(e:Event=null):void{</p>
<p>//Setting how the stage will scale (it will not scale) and its alignment (top-left corner)</p>
<p>stage.scaleMode=StageScaleMode.NO_SCALE;</p>
<p>stage.align=StageAlign.TOP_LEFT;</p>
<p>//Remember the picture in the library? Well, this is why we exported it for AS.</p>
<p>//Let's create a Bitmap object with that image:</p>
<p>var picture:Bitmap=new Bitmap(new Sky(0,0));</p>
<p>//Now we create an instance of the OffsetResize class we coded before.</p>
<p>//The second parameter is optional and can be left blank; its value can be OffsetResize.MAX or OffsetResize.MIN.</p>
<p>_bg=new OffsetResize(picture,OffsetResize.MIN);</p>
<p>//add the instance of the OffsetResize to the stage at child index 0, so it will be behind everything (it's a background)</p>
<p>stage.addChildAt(_bg,0);</p>
<p>//The code so far is enough to make this work, but I will show how to change the offsetType dynamically.</p>
<p>//So let's add a MOUSE_DOWN event, which will call the mouseDown() function when we click on the stage.</p>
<p>stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);</p>
<p>}</p>
<p>//This function is called every time that we click the stage</p>
<p>private function mouseDown(e:MouseEvent):void{</p>
<p>/*</p>
<p>This is the ternary operator, it's a compact version of this long if statement:</p>
<p>if(_bg.offsetType==OffsetResize.MAX){</p>
<p>_bg.offsetType=OffsetResize.MIN;</p>
<p>}</p>
<p>else{</p>
<p>_bg.offsetType=OffsetResize.MAX;</p>
<p>}</p>
<p>*/</p>
<p>_bg.offsetType = _bg.offsetType==OffsetResize.MAX ? OffsetResize.MIN : OffsetResize.MAX;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p></code>&nbsp;</p></blockquote>
<h2>Step 8: Test It Out</h2>
<p>Check if it’s alright.</p>
<ul>
<li>We need to have an image in the Library called “Sky” which is exported for ActionScript with a class name of Sky and a base class of flash.display.BitmapData.</li>
<li>We must also have the document class set to “Main”</li>
<li>the Main.as file in the same folder as the FLA</li>
<li>and the OffsetResize.as file inside orgdisplay (which is either inside the same folder as the .fla file or is inside the classpath).</li>
</ul>
<p>If all these requirements are met, you can test it now!</p>
<h2>Conclusion</h2>
<p>We created a custom class called “OffsetResize”, which resizes a specified object according to the stage’s size. If you created it in your classpath then you can use it wherever you want: all you need to do is import the OffsetResize object and use it; it’s extendable and reusable. But remember it’s to use with scalable content, for example a SWF in HTML which takes up 100% of the width and height.</p>
<p>Thanks for reading! Post any questions in the comments.</p>
<a class="button small white" href="http://matergymnasium.dk/"> Demo Project </a>
<a class="button small white" href="http://olib.co/demo/matergymnasium.zip"> Download Files </a>
]]></content:encoded>
			<wfw:commentRss>http://oliblanton.com/mater-gymnasium-scale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter Login Box</title>
		<link>http://oliblanton.com/twitter-login-box/</link>
		<comments>http://oliblanton.com/twitter-login-box/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 22:53:16 +0000</pubDate>
		<dc:creator>Oli Blanton</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://oliblanton.com/?p=1737</guid>
		<description><![CDATA[Try this easy to implement and lightweight simple jQuery dropdown login form. There are many ways to setup ...]]></description>
			<content:encoded><![CDATA[<p>Try this easy to implement and lightweight simple jQuery dropdown login form.<br />
<span id="more-1737"></span><br />
There are many ways to setup user login, a popular method used on twitter is to have a dropdown form. I&#8217;m giving away a <strong>simple jQuery dropdown login form</strong>, it’s easy to implement and lightweight and does everything you need it to. All you have to do is implement and hook it up to your website.</p>
<div data-id='open' class="toggle"><h4>Step 1: CSS</h4><div class="toggle-inner">
<pre class="brush: css; auto-links: false; class-name: myclass; collapse: false; first-line: 1; html-script: false; light: true; title: ; notranslate"> &lt;link rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot; /&gt;</pre>
<p></div></div><br />
<div data-id='open' class="toggle"><h4>Step 2: JavaScript</h4><div class="toggle-inner"> </p>
<pre class="brush: jscript; title: ; notranslate"> &lt;script src=&quot;js/jquery.min.js&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;js/login.js&quot;&gt;&lt;/script&gt;</pre>
<p></div></div><br />
<div data-id='open' class="toggle"><h4>Step 3: HTML</h4><div class="toggle-inner"> </p>
<pre class="brush: php; title: ; notranslate">
  &lt;!-- Login Starts Here --&gt;
            &lt;div id=&quot;loginContainer&quot;&gt;
                &lt;a href=&quot;#&quot; id=&quot;loginButton&quot;&gt;&lt;span&gt;Login&lt;/span&gt;&lt;em&gt;&lt;/em&gt;&lt;/a&gt;
                &lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;
                &lt;div id=&quot;loginBox&quot;&gt;
                    &lt;form id=&quot;loginForm&quot;&gt;
                        &lt;fieldset id=&quot;body&quot;&gt;
                            &lt;fieldset&gt;
                                &lt;label for=&quot;email&quot;&gt;Email Address&lt;/label&gt;
                                &lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot; /&gt;
                            &lt;/fieldset&gt;
                            &lt;fieldset&gt;
                                &lt;label for=&quot;password&quot;&gt;Password&lt;/label&gt;
                                &lt;input type=&quot;password&quot; name=&quot;password&quot; id=&quot;password&quot; /&gt;
                            &lt;/fieldset&gt;
                            &lt;input type=&quot;submit&quot; id=&quot;login&quot; value=&quot;Sign in&quot; /&gt;
                            &lt;label for=&quot;checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;checkbox&quot; /&gt;Remember me&lt;/label&gt;
                        &lt;/fieldset&gt;
                        &lt;span&gt;&lt;a href=&quot;#&quot;&gt;Forgot your password?&lt;/a&gt;&lt;/span&gt;
                    &lt;/form&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;!-- Login Ends Here --&gt;
</pre>
<p></div></div></p>
<a class="button small white" href="http://olib.co/demo/twitter-login-box/"> Demo Project </a>
<a class="button small white" href="http://olib.co/demo/twitter-login-box.zip"> Download Files </a>
]]></content:encoded>
			<wfw:commentRss>http://oliblanton.com/twitter-login-box/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developing for iPad</title>
		<link>http://oliblanton.com/design-for-ipad/</link>
		<comments>http://oliblanton.com/design-for-ipad/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 17:12:38 +0000</pubDate>
		<dc:creator>Oli Blanton</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://oliblanton.com/?p=1726</guid>
		<description><![CDATA[This is my complete collection of iPad resources whenever I start a new project. This list includes Design ...]]></description>
			<content:encoded><![CDATA[<p>This is my complete collection of iPad resources whenever I start a new project. This list includes Design &#038; Development links.<br />
<span id="more-1726"></span></p>
<div id="left">
<h3>Emulators</h3>
<h4><a href="http://ipadpeek.com/">iPad Peek</a></h4>
<p>Test your web pages in the iPad browser emulator. Click on the top iPad border to rotate.</p>
<h4><a href="http://zambetti.com/projects/liveview/">LiveView for iPhone &amp; iPad</a></h4>
<p>LiveView is a specialized remote screen viewing application intended as a tool to help designers create graphics for mobile applications</p>
<h3>Getting Started</h3>
<h4><a href="http://www.smashingmagazine.com/2010/05/28/web-development-for-the-iphone-and-ipad-getting-started/">Web Development For The iPhone And iPad</a></h4>
<p>The iPhone operating system makes up 50% of the worldwide smartphone market, with the next-highest OS being Android at 24%.</p>
<h4><a href="http://iphone.appstorm.net/roundups/developer/the-ipad-web-design-development-toolbox/">The iPad Web Design &amp; Development Toolbox</a></h4>
<p>The main focus of this article relates to designing websites for the iPad.</p>
<h4><a href="http://www.smashingmagazine.com/2010/04/16/design-tips-for-your-ipad-app/">Useful Design Tips For Your iPad App</a></h4>
<p>Think about the device in terms of lifestyle rather than features and technology.</p>
<h3>GUI &amp; Templates</h3>
<h4><a href="http://www.teehanlax.com/blog/2010/02/01/ipad-gui-psd/">iPad GUI PSD</a></h4>
<p>The PSD was constructed using vectors, so it’s fully editable and scalable.</p>
<h4><a href="http://informationarchitects.jp/ipad-stencil-for-omnigraffle/">iPad Stencil for Omnigraffle</a></h4>
<p>OmniGraffle template for folks designing iPad apps</p>
<h4><a href="http://emilychang.com/2010/03/ipad-templates-and-stencils/">Collection Vol. 1</a></h4>
<p>Here&#8217;s a list of free iPhone &amp; iPad templates and stencils.</p>
<h4><a href="http://webdesignledger.com/freebies/11-ui-kits-for-iphone-and-ipad-development">Collection Vol. 2</a></h4>
<p>Library of UI elements at your disposal. Big time saver.</p>
<h4><a href="http://speckyboy.com/2010/04/30/iphone-and-ipad-development-gui-kits-stencils-and-icons/">Collection Vol. 3</a></h4>
<p>iPhone and iPad Development GUI Kits, Stencils and Icons.</p>
<h3>Icons</h3>
<h4><a href="http://www.webdesignerdepot.com/2010/02/a-collection-of-free-ipad-icons-tutorials-and-psds/">A Collection of Free iPad Icons, Tutorials and PSDs</a></h4>
<p>Collection of ready made icons and PSDs.</p>
<h3>Layout</h3>
<h4><a href="http://electronics.howstuffworks.com/gadgets/high-tech-gadgets/ipad1.htm">iPad Dimensions</a></h4>
<p>Size of iPad and other Apple products compared.</p>
<h4><a href="http://craigmod.com/journal/ipad_and_books/">Books in the Age of the iPad</a></h4>
<p>Tufte &amp; Formless Content.</p>
<h4><a href="http://garciamedia.com/blog/articles/ipad_design_for_news_primer_1">iPad Design for News by Mario Garcia</a></h4>
<p>A key first step: do a diagram of your storyboard, so that you can pace content, strategically place destination moments. This is essential in a non-linear platform.</p>
<h3>Fonts &amp; Typography</h3>
<h4><a href="http://www.michaelcritz.com/2010/04/02/fonts-for-ipad-iphone/">Fonts for iPad &amp; iPhone</a></h4>
<p>Must see!</p>
<h4><a href="http://informationarchitects.jp/designing-for-ipad-reality-check/">Designing for iPad: Reality Check</a></h4>
<p>iPad’s resolution is higher than a regular LCD but still lower than an iPhone which gives the pixel type an unusual “in between” feel.</p>
<h4><a href="http://fontfeed.com/archives/ipad-typography/">What the iPad is Missing</a></h4>
<p>Yet it’s exactly that part of media consumption, reading, that reveals what’s missing on the iPad: good typography.</p>
<h4><a href="http://www.subtraction.com/2010/06/08/better-screen-same-typography">Better Screen, Same Typography</a></h4>
<p>Today’s Microsoft actually beats today’s Apple in typography.</p>
<h3>Usability</h3>
<h4><a href="http://mattgemmell.com/2010/03/05/ipad-application-design">iPad Application Design</a></h4>
<p>The primary warning about designing for the iPad is: more screen space doesn’t mean more UI. You’ll be tempted to violate that principle, and you need to resist the temptation.</p>
<h4><a href="http://www.useit.com/alertbox/ipad.html">Jakob Nielsen: First Findings From User Testing</a></h4>
<p>It&#8217;s the same with iPad apps: anything you can show and touch can be a UI on this device. There are no standards and no expectations.</p>
<h4><a href="http://www.nngroup.com/reports/mobile/ipad/">Usability of iPad Apps and Websites</a></h4>
<p>UI pioneer Jef Raskin once used the terms card sharks vs. holy scrollers to distinguish between two fundamentally different hypertext models: cards and scrolls.</p>
<h4><a href="http://uxmag.com/design/ipad-user-experience-guidelines">iPad User Experience Guidelines</a></h4>
<p>There’s a unique and exciting opportunity here, and just possibly the beginning of the next major stage in software design and user experience.</p>
<h4><a href="http://informationarchitects.jp/wired-on-ipad-just-like-a-paper-tiger/">WIRED on iPad: Just like a Paper Tiger</a></h4>
<p>We should use original tools to create iPad apps, not because Steve Jobs said so, but because these tools create products with flesh and bone, that is: an understanding of both the purpose, the potential and the limits of the iPad technology.</p>
<h4><a href="http://www.flickr.com/photos/fraserspeirs/sets/72157623224262135/">iPad UI Conventions</a></h4>
<p>The Devil is in the details.</p>
<h3>Touch Screen</h3>
<h4><a href="http://www.lukew.com/ff/entry.asp?1071">Touch Gesture Reference Guide</a></h4>
<p>The Touch Gesture Reference Guide is a unique set of resources for software designers and developers working on touch-based user interfaces.</p>
<h3>CSS hacks</h3>
<h4><a href="http://developer.apple.com/safari/library/technotes/tn2010/tn2262/index.html">Preparing Your Web Content for iPad</a></h4>
<p>Apple&#8217;s Human Interface Guidelines for the iPad.</p>
<h4><a href="http://www.cloudfour.com/ipad-orientation-css/">iPad Orientation CSS</a></h4>
<p>Pad’s Two Orientation Are A Big Deal.</p>
<h4><a href="http://x7.fi/2010/02/12/how-to-fit-your-website-for-the-apple-ipad/">How to fit your website for the Apple iPad</a></h4>
<p>If your site is designed to work at 980 pixels wide or slightly less, you probably don’t need to do anything.</p>
<h4><a href="http://www.8164.org/designing-for-the-ipad/">Designing for the iPad</a></h4>
<p>iPad Ready checklist.</p>
<h4><a href="http://matthewjamestaylor.com/blog/ipad-layout-with-landscape-portrait-modes">iPad CSS Layout with landscape / portrait orientation modes</a></h4>
<p>A special iPad optimised website layout that uses pure CSS to change layouts in the portrait and landscape orientation modes.</p>
<h3>HTML5</h3>
<h4><a href="http://www.sencha.com/products/touch/">The First HTML5 Mobile App Framework</a></h4>
<p>Sencha Touch allows you to develop web apps that look and feel native on Apple iOS and Google Android touchscreen devices.</p>
<h4><a href="http://mir.aculo.us/2010/06/04/making-an-ipad-html5-app-making-it-really-fast/">Making an iPad HTML5 App &amp; making it really fast</a></h4>
<p>The site uses no images, no JavaScript framworks, and no external CSS, and fits quite comfortably in a few k’s of gzipped HTML.</p>
<h4><a href="http://www.appcelerator.com/">Build native mobile and desktop apps with web tecnologies.</a></h4>
<p>Use Appcelerator Titanium to build mobile apps for iPhone &amp; Android and desktop apps for Windows, Mac OS X &amp; Linux from Web technologies</p>
<h3>JS&amp;PHP</h3>
<h4><a href="http://davidwalsh.name/detect-ipad">iPad Detection Using JavaScript or PHP</a></h4>
<p>The JavaScript, the PHP and the .htaccess.</p>
<h3>Video demonstration</h3>
<h4><a href="http://www.wired.com/epicenter/2010/02/the-wired-ipad-app-a-video-demonstration/">Wired Magazine on the iPad</a></h4>
<p>A look at the new digital version of Wired.</p>
<h4><a href="http://www.davidvogler.com/ipad">Time Magazine</a></h4>
<p>Dave&#8217;s iPad Stuff featuring Time, NASCAR, Cadillac and Route 66.</p>
<h4><a href="http://www.apple.com/ipad/apps-for-ipad/">Apple &#8211; iPad &#8211; Apps for iPad</a></h4>
<p>Popular Science, Real Racing HD, The Periodic Table, Alphabet Fun, Glee, Zillow, The Weather Channel, Things for iPad, Marvel Comics, The Wall Street Journal, Epicurious, E*TRADE Mobile Pro, F1 2010.</p>
<h3>App Gallery</h3>
<h4><a href="http://gizmodo.com/5507569/gizmodos-essential-ipad-apps">Gizmodo&#8217;s Essential iPad Apps</a></h4>
<p>Netflix, ABC Player, Marvel Comics, iBooks, NBA, MLB, ESPN, Yahoo Entertainment</p>
<h4><a href="http://landingpad.org/">Landing Pad Gallery</a></h4>
<p>A showcase of beautiful iPad app design</p>
<h4><a href="http://webdesignledger.com/inspiration/34-inspiring-ipad-application-websites">34 Inspiring iPad Application Websites</a></h4>
<p>Landing Page design for iPad App sites.</p>
<h4><a href="http://www.apple.com/ipad/ready-for-ipad/">Apple &#8211; iPad ready</a></h4>
<p>CNN, Reuters, New York Times, Vimeo, Time, ESPN, MLB, Netflix, NPR, NHL, The White House, Virgin America, Sports Illustrated, Flickr, People, TED, Nike.</p>
<h4><a href="http://mashable.com/2010/05/29/10-must-have-ipad-apps/">10 Must-Have Apps for the New iPad Owner</a></h4>
<p>Air Video, Real Racing HD, GoodReader, Mondo Solitaire, Wired Mag, Kindle for iPad, Epicurious, Dropbox, The Guardian Eyewitness, NewsRack.</p>
<h3>Goodies</h3>
<h4><a href="http://circleboxblog.com/2010/tutorials/how-to-design-the-apple-ipad-in-photoshop/">How to Design the Apple iPad in Photoshop</a></h4>
<p>You can use these techniques to make almost any Apple product.</p>
<h4><a href="http://spyrestudios.com/30-ipad-apps-for-designers-developers-and-creative-types/">30+ iPad Apps For Designers, Developers And Creative Types</a></h4>
<p>Over 30 iPad apps designers, developers and creatives will find useful.</p>
<h4><a href="http://www.dodocase.com/">DODOcase</a></h4>
<p>A classic look to protecting your iPad.</p>
<h4><a href="http://ipadcasefinder.com/">iPad Case Finder</a></h4>
<p>Find the perfect iPad case.</p>
<p>&nbsp;</p>
</div>
<div id="right"><img src="http://www.ipadatelier.com/img/fig1.jpg" alt="" width="347" height="198" /></div>
<div>Figure 1. iPhone OS makes up 50% of the smartphone market.</div>
<div></div>
<div></div>
<div><img src="http://www.ipadatelier.com/img/fig2.jpg" alt="" width="347" height="198" /></div>
<div>Figure 2. iPad development GUI kits, stencils and icons.</div>
<div></div>
<div></div>
<div>
<p><img src="http://www.ipadatelier.com/img/fig3.jpg" alt="" width="347" height="198" /></p>
<p>Figure 3. Formless content.</p>
<p>&nbsp;</p>
<p><img src="http://www.ipadatelier.com/img/fig4.jpg" alt="" width="347" height="198" /></p>
<p>Figure 4. First usability studies.</p>
<p>&nbsp;</p>
<p><img src="http://www.ipadatelier.com/img/fig5.jpg" alt="" width="347" height="198" /></p>
<p>Figure 5. You can still use HTML, JS and CSS.</p>
<p>&nbsp;</p>
<p><img src="http://www.ipadatelier.com/img/fig6.jpg" alt="" width="347" height="198" /></p>
<p>Figure 6. Thousands of apps.</p>
<div></div>
</div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://oliblanton.com/design-for-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

