<?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>ActionScript 3.0 Design Patterns &#187; AIR</title>
	<atom:link href="http://www.as3dp.com/category/actionscript/air/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.as3dp.com</link>
	<description>OOP Techniques for Flash and Flex Developers</description>
	<lastBuildDate>Sun, 29 Jan 2012 17:00:46 +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>ActionScript 3.0 GestureEvent: Working with Gestures on Mobile</title>
		<link>http://www.as3dp.com/2012/01/actionscript-3-0-gestureevent-working-with-gestures-on-mobile/</link>
		<comments>http://www.as3dp.com/2012/01/actionscript-3-0-gestureevent-working-with-gestures-on-mobile/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 17:00:46 +0000</pubDate>
		<dc:creator>William B. Sanders</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Algorithms]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.as3dp.com/?p=6415</guid>
		<description><![CDATA[Using Gestures When working with high level and complex structures like Design Patterns, the focus is squarely on the relationship between objects—classes, inheritance, composition, implementation, interfaces and related concepts and structures. The &#8220;details&#8221; are the details of these various relationships and how they work in concert. Using Algorithm 1 or Algorithm 2 is only pertinent [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.as3dp.com/wp-content/uploads/2012/01/billz.png"><img src="http://www.as3dp.com/wp-content/uploads/2012/01/billz.png" alt="Developing Gesture Apps Requires Actions with No Equivalent in MouseEvents" title="billz" width="250" height="188" class="alignleft size-full wp-image-6445" /></a><strong>Using Gestures</strong></p>
<p>When working with high level and complex structures like <strong>Design Patterns</strong>, the focus is squarely on the relationship between objects—classes, inheritance, composition, implementation, interfaces and related concepts and structures. The &#8220;details&#8221; are the details of these various relationships and how they work in concert. Using <strong>Algorithm 1</strong> or <strong>Algorithm 2</strong> is only pertinent insofar as it relates to a method or property that needs to be loosely bound to some other object. If you start thinking about algorithm details as a primary concern and fretting over internals, you can easily lose sight of the larger structures that are under development and never really understand <strong>Design Patterns</strong>.</p>
<p><strong>Seismic Shift</strong></p>
<p>Every now and again we encounter a <em>seismic shift</em> in the way things are done, and you have to make adjustments.(Some of you may remember the <strong>Commodore 64</strong> that went the way of the Dodo Bird. At one time it was the most popular personal computer on earth, but if you insisted on sticking with it, you probably don&#8217;t have any clients for your services.) In my own case, shift to mobile devices forced me to spend some quality time with the event processes in ActionScript 3.0. Going to the base, I reviewed how the Display List is handled in Flash and by AS3. Then I went to look at the AS3 Event Flow and among the several articles I read, one of the best is <a href="http://www.actionscript.org/resources/articles/860/1/Understanding-the-AS3-Event-Flow/Page1.html">Jody Hall&#8217;s</a>. Adobe has several good ones as well, and I&#8217;m sure many more are available that some of you may want to share.</p>
<p><strong>On to Gestures</strong></p>
<p>I wrote some gesture events and handlers. The results were unsatisfactory. It wasn&#8217;t that they didn&#8217;t work, but after one would work, another would not. Very baffling and frustrating. My goal was to create a &#8216;workbench&#8217; where I could try all kinds of gesture events, but I had very poor luck with just about everything at some point. So I backed away and tried an application with only two gestures; neither available with MouseEvent. One was <strong>Rotate</strong> and the other <strong>Zoom</strong>. Christian Cantrell has a <a href="http://www.adobe.com/devnet/flash/articles/multitouch_gestures.html">good article</a> on using gestures, and in addition to getting some good information on using gesture events, I also got a nice little piece on using gestures with bitmaps. (I had been having a devil of a time with Sprite objects in the Library with gestures.) Click the download button below to get the source code and FLA files for Flash Pro 5.5, 5 and 4 along with the image files and ActionScript 3.0 code:</p>
<p><a href="http://www.sandlight.com/DesignPatterns/PicFlip.zip"><img src="http://www.as3dp.com/wp-content/uploads/2012/01/download.png" alt="download this sucker" title="download" width="136" height="48" class="alignnone size-full wp-image-6426" /></a></p>
<p>In my last post, I was convinced that <strong>TOUCH_TAP</strong> from <strong>TouchEvent</strong> works better than <strong>CLICK</strong> from <strong>MouseEvent</strong> with a mobile device. That conclusion was not based on the inner-workings of events and event handling, but rather from testing the different event handlers using my iOS device, a 4S iPhone. In the Adobe documentation, they point out that it <em>might be better</em> to use a <strong>MouseEvent</strong> rather than a <strong>TouchEvent</strong> or <strong>GestureEvent</strong>. It depends on the app, device and device OS. That pretty much makes it an empirical question.</p>
<p>In this application, there was no choice to use <strong>MouseEvent</strong> because it does not contain the required finger-flipping gestures I can make on my iPhone—<strong>GESTURE_ZOOM</strong> and <strong>GESTURE_ROTATE</strong>. Likewise, <strong>TouchEvent</strong> did not have the kinds of gestures; so I had to use <strong>TransformGestureEvent</strong>. The following code shows how it is employed in a simple picture flipping/zooming app:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6415code3'); return false;">View Code</a> ACTIONSCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64153"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</pre></td><td class="code" id="p6415code3"><pre class="actionscript" style="font-family:monospace;">package 
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Bitmap</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">TransformGestureEvent</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">ui</span>.<span style="color: #006600;">Multitouch</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">ui</span>.<span style="color: #006600;">MultitouchInputMode</span>;
&nbsp;
	<span style="color: #66cc66;">&#91;</span>SWF<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">width</span>=<span style="color: #cc66cc;">640</span>, <span style="color: #0066CC;">height</span>=<span style="color: #cc66cc;">960</span>, frameRate=<span style="color: #cc66cc;">24</span>, <span style="color: #0066CC;">backgroundColor</span>=0xcc0000<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> PicFlip <span style="color: #0066CC;">extends</span> Sprite
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #66cc66;">&#91;</span>Embed<span style="color: #66cc66;">&#40;</span>source = <span style="color: #ff0000;">&quot;vanBillz.png&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span>
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> BillzImage:<span style="color: #000000; font-weight: bold;">Class</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> billzBitmap:Bitmap = <span style="color: #000000; font-weight: bold;">new</span> BillzImage<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> carrier:Sprite = <span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> PicFlip<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			carrier.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">320</span>, carrier.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">550</span>;
			carrier.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>billzBitmap<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			billzBitmap.<span style="color: #006600;">x</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">320</span> - <span style="color: #66cc66;">&#40;</span>billzBitmap.<span style="color: #006600;">bitmapData</span>.<span style="color: #0066CC;">width</span> <span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> -<span style="color: #cc66cc;">1</span>;
			billzBitmap.<span style="color: #006600;">y</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">480</span> - <span style="color: #66cc66;">&#40;</span>billzBitmap.<span style="color: #006600;">bitmapData</span>.<span style="color: #0066CC;">height</span> <span style="color: #66cc66;">/</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span>-<span style="color: #cc66cc;">1</span>;
&nbsp;
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>carrier<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			Multitouch.<span style="color: #006600;">inputMode</span> = MultitouchInputMode.<span style="color: #006600;">GESTURE</span>;
			carrier.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>TransformGestureEvent.<span style="color: #006600;">GESTURE_ZOOM</span>, doZoom<span style="color: #66cc66;">&#41;</span>;
			carrier.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>TransformGestureEvent.<span style="color: #006600;">GESTURE_ROTATE</span>, doRotate<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> final <span style="color: #000000; font-weight: bold;">function</span> doZoom<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:TransformGestureEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			carrier = <span style="color: #0066CC;">e</span>.<span style="color: #0066CC;">target</span> as Sprite;
			carrier.<span style="color: #006600;">scaleX</span> <span style="color: #66cc66;">*</span>=  <span style="color: #0066CC;">e</span>.<span style="color: #006600;">scaleX</span>;
			carrier.<span style="color: #006600;">scaleY</span> <span style="color: #66cc66;">*</span>=  <span style="color: #0066CC;">e</span>.<span style="color: #006600;">scaleY</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> final <span style="color: #000000; font-weight: bold;">function</span> doRotate<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:TransformGestureEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			carrier = <span style="color: #0066CC;">e</span>.<span style="color: #0066CC;">target</span> as Sprite;
			carrier.<span style="color: #006600;">rotation</span> +=  <span style="color: #0066CC;">e</span>.<span style="color: #006600;">rotation</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>I tested it on an iPhone, but there&#8217;s no reason it won&#8217;t work perfectly well on an Android or some other mobile device. Further, I found it to be very responsive. The zooming seemed to work quite well with bitmapped graphics, and so I assumed that it would work just as well, if not better with a vector object in the Library. So I put together a little test symbol using the drawing tools in Flash and stored it as  Sprite class in the Library. (By the way, in case you were not aware, to make a Sprite class in the Library, when you create a New Symbol, just classify it as a MovieClip and in the Base Class window change the type from <strong>flash.display.MovieClip</strong> -> <strong>flash.display.Sprite</strong>. The Library icon turns from Blue to Green to indicate it is now a Sprite.)</p>
<p>I used the following code:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p6415code4'); return false;">View Code</a> ACTIONSCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64154"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</pre></td><td class="code" id="p6415code4"><pre class="actionscript" style="font-family:monospace;">package 
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">TransformGestureEvent</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">ui</span>.<span style="color: #006600;">Multitouch</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">ui</span>.<span style="color: #006600;">MultitouchInputMode</span>;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> PicFlipLib <span style="color: #0066CC;">extends</span> Sprite
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> carrier:Sprite = <span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">var</span> billzVector:Sprite=<span style="color: #000000; font-weight: bold;">new</span> BillzVector<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> PicFlipLib<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			carrier.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">220</span>, carrier.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">350</span>;
			carrier.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>billzVector<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>carrier<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			Multitouch.<span style="color: #006600;">inputMode</span> = MultitouchInputMode.<span style="color: #006600;">GESTURE</span>;
			carrier.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>TransformGestureEvent.<span style="color: #006600;">GESTURE_ZOOM</span>, doZoom<span style="color: #66cc66;">&#41;</span>;
			carrier.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>TransformGestureEvent.<span style="color: #006600;">GESTURE_ROTATE</span>, doRotate<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> final <span style="color: #000000; font-weight: bold;">function</span> doZoom<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:TransformGestureEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			carrier = <span style="color: #0066CC;">e</span>.<span style="color: #0066CC;">target</span> as Sprite;
			carrier.<span style="color: #006600;">scaleX</span> <span style="color: #66cc66;">*</span>=  <span style="color: #0066CC;">e</span>.<span style="color: #006600;">scaleX</span>;
			carrier.<span style="color: #006600;">scaleY</span> <span style="color: #66cc66;">*</span>=  <span style="color: #0066CC;">e</span>.<span style="color: #006600;">scaleY</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> final <span style="color: #000000; font-weight: bold;">function</span> doRotate<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:TransformGestureEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			carrier = <span style="color: #0066CC;">e</span>.<span style="color: #0066CC;">target</span> as Sprite;
			carrier.<span style="color: #006600;">rotation</span> +=  <span style="color: #0066CC;">e</span>.<span style="color: #006600;">rotation</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>One of the features that seemed to make a difference was that instead of having the event listener connected directly to the Library Sprite (<strong>BillzVector</strong>), I used an object container Sprite, <strong>carrier</strong>. Figure 1 shows the zoom and rotation on an iPhone 4S. This was used with both the bitmap and the vector Sprite objects, and they both worked quite well.<br />
<div id="attachment_6460" class="wp-caption alignnone" style="width: 510px"><a href="http://www.as3dp.com/wp-content/uploads/2012/01/rotateZoom.png"><img src="http://www.as3dp.com/wp-content/uploads/2012/01/rotateZoom.png" alt="rotate" title="rotateZoom" width="500" height="372" class="size-full wp-image-6460" /></a><p class="wp-caption-text">Figure 1: Both rotation and zoom worked fined with the vector-based Sprite</p></div></p>
<p><strong>Back to Design Patterns</strong></p>
<p>I was going to post my final matrix motion solution, but I got jammed up with event handling. Next time, I should be able to post the next stage in my Samurai game. It uses a State design pattern to move through nine cells in a 3 X 3 matrix. Everything was working well except that my event handlers were not as crisp as I wanted. I&#8217;ll have a chance to see now whether the time-out with AS3 event handlers was enough. The Design Pattern does its job; I just was not getting the event handlers to do theirs. In the next post you&#8217;ll be able to see whether they are all working well together in a mobile environment.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.as3dp.com%2F2012%2F01%2Factionscript-3-0-gestureevent-working-with-gestures-on-mobile%2F&amp;title=ActionScript%203.0%20GestureEvent%3A%20Working%20with%20Gestures%20on%20Mobile" id="wpa2a_2"><img src="http://www.as3dp.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.as3dp.com/2012/01/actionscript-3-0-gestureevent-working-with-gestures-on-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ActionScript Design Patterns Transcend Changes at Adobe</title>
		<link>http://www.as3dp.com/2011/11/actionscript-design-patterns-transcend-changes-at-adobe/</link>
		<comments>http://www.as3dp.com/2011/11/actionscript-design-patterns-transcend-changes-at-adobe/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 20:15:05 +0000</pubDate>
		<dc:creator>William B. Sanders</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.as3dp.com/?p=6299</guid>
		<description><![CDATA[A lot of you may have heard the announcement from Adobe about dropping support for mobile browsers. It&#8217;s been a year and a half since we posted the article about the spat between Adobe and Apple, and now again, an announcement from Adobe has shaken things up. According to The Economist (Oct 8-14, 2011), in [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_6301" class="wp-caption alignleft" style="width: 260px"><img src="http://www.as3dp.com/wp-content/uploads/2011/11/ShiftAdobe.png" alt="If you think everyone is heading for HTML5 now, you&#039;re nuts!" title="ShiftAdobe" width="250" height="274" class="size-full wp-image-6301" /><p class="wp-caption-text">If you think everyone is heading for HTML5 now, you're nuts!</p></div>A lot of you may have heard the <a href="http://blogs.adobe.com/conversations/2011/11/flash-focus.html">announcement from Adobe</a> about dropping support for mobile browsers. It&#8217;s been a year and a half since we posted the article about the <a href="http://www.as3dp.com/2010/04/29/actionscript-3-0-developers-caught-in-the-middle/">spat between Adobe and Apple</a>, and now again, an announcement from Adobe has shaken things up.</p>
<p>According to <em>The Economist</em> (Oct 8-14, 2011), in 1993 there were 100 million PCs. By 2008, PCs had topped 1 billion. Many of us tapped into that market one way or another, and some of us came out well rewarded—Adobe certainly did. By 2020 (barely 8 years from now), they expect 10 billion mobile connected devices. In looking at the number consider this: The current #1 Free App on iOS devices is called &#8216;Hair Plucker&#8217; and who knows how many people bought &#8216;Angry Birds&#8217;, 2010&#8242;s top paid for app? Among other apps I saw was a &#8216;Halloween Mouth&#8217; selling for 99¢&#8211;it&#8217;s a picture of a mouth you hold up to your face. (How long would that take to create?) Another popular app is not one, <em>but several</em>, that make farting sounds&#8211;with prices ranging from free to $1.99.</p>
<blockquote><p>
<strong>Latest Update on Flex&#8217;s Fate!</strong>: Because so many questions about Flex were asked (e.g. Is this the end of Flex?) Adobe posed the following:</p>
<p><a href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html">Adobe settles concerns about Flex and Flash.</a></p>
</blockquote>
<p>Now let&#8217;s say, that you create a simple app using a Factory Method. You&#8217;ve got 10 billion units out there. We&#8217;ll say that you have a &#8216;Sneezing App&#8217; that makes different sneezing sounds, and it sells for 99¢. If just 1% of 1% of 1% of 1% of 1% of 1% bought your app, that&#8217;s $10,000&#8211;a half million Indian rupees. If 1 person in 10,000 bought that app, you&#8217;d be a millionaire. (The good thing about language-independent apps like the &#8216;Halloween Mouth&#8217; and &#8216;Fart Factory&#8217; is that they are language independent.)</p>
<blockquote><p>20 Billion Mobile Connected Devices Can&#8217;t Be Wrong!</p></blockquote>
<p>I have no idea how many people will be using PCs as we know them. Maybe they&#8217;ll go the way of the 5 1/4 inch floppy and all we&#8217;ll have is some kind of tablet that we can connect up to the Internet. Development may be done with apps that we rent from a cloud. What is important and key now and later are mobile devices. At this point in time very few Web developers are actively developing apps for mobile devices, and tools like AIR for iOS, Android and Blackberry provide us with a key opportunity.</p>
<p>So, you can be certain that Adobe did not bow out of the Flash-Player-in-the-Mobile-Browser market because they thought it was not going to be a huge market. Look for Dreamweaver to be optimized for HTML5 and some HTML5 development tools. <em>The development tool </em>from Adobe for mobile, though, will be Flash Builder and Flash Pro working with AIR.</p>
<p><strong>A Browser/AIR Mobile Strategy</strong></p>
<p>Keeping in mind that I have nothing against HTML5 and it&#8217;s ability to do many things Flash has done for years—Canvas features some great elements and attributes—let&#8217;s look at a new strategy for development in Flash (including AS3 and the different flavors of AIR).</p>
<p>First off, if you&#8217;ve done much with with mobile browsers, you must have learned they have little to offer, and they are a mixed bag of HTML5 implementation. (The non-mobile browsers are an equal mixed bag as far as having implemented HTML5.) It&#8217;s <strong>only</strong> the <em>mobile browsers</em> that Adobe is no longer supporting. Not too many years ago, there were no mobile browsers; so basically, Adobe is doing what it has always done as far as providing a Flash plugin for the browsers on our computers. It&#8217;s just not going to make them for mobile browsers. I developed several apps for iOS, and while most have been simple and small, I was able to use the same programming structures I did for &#8220;regular&#8221; AS3.</p>
<p>Second, Adobe has been making big strides with Flash Builder and Flash Professional in creating AIR tools for working with mobile devices. This allows us to create ActionScirpt 3.0 apps for mobile devices—forget Web pages. Imagine knocking together an app that does something useful (like calculating the best point in relationship to a parabolic mirror to place a kettle to boil water) that can be used worldwide. Or even a game using some of the little structures we&#8217;ve been developing and discussing on this blog that you can sell for 99¢ (or more!). So quit thinking of yourself as just a &#8220;Web site developer/designer.&#8221; <em>You&#8217;re an app developer/designer</em>.</p>
<p><strong>Everyone Runs to HTML5! Not!</strong></p>
<p>Earlier this year I wrote a book (<em>Smashing HTML5</em>) published by Wiley, and one of the chores I encountered was testing the examples against several different browsers, including mobile ones. There was not a lot of compatibility, and most mobile browsers  were successful with only a small subset of the HTML5 elements. Over time, let&#8217;s hope this improves because if it doesn&#8217;t we&#8217;ll enter the Second Dark Age of incompatible browsers.</p>
<p>In order to get most of the cooler stuff to work, you need either JavaScript or PHP, and so I included chapters on both. (PHP seems to be more compatible for all browsers than anything else&#8211;probably because of the simpler subset of HTML it generates.) I added as much OOP to both as possible, and some of the reviewers didn&#8217;t like the fact that it was not more oriented to the DOM or that I didn&#8217;t use more procedural examples in the PHP/JavaScript section. What I was trying to do was to write an HTML5 book for 2011 and not 2001, which meant that I used several examples of dealing with a mobile environment. Further, some OOP in JavaScript/PHP is a good thing; so I hope that will move some folks towards structure in both JavaScript and PHP.</p>
<p>However, without Flash in the mix, creating Web apps and pages is frustrating, not because JavaScript and PHP aren&#8217;t good programming tools but rather because of browser incompatibility.  I&#8217;ve got a feeling that to effectively use HTML5 and all of the related CSS3, developers are going to be spending a lot of JavaScript code determining which browser is being used and making the appropriate accommodations. Who wants to sub-code for every possible browser? This includes mobile browsers.  My hunch is that they&#8217;ll all head for the lowest common denominator, which is probably one of the mobile browsers that is just slightly better than HTML4.</p>
<p>So, I&#8217;ve started thinking &#8220;Build an App; Not a Web Page.&#8221; Let&#8217;s hear your thoughts on Adobe&#8217;s decisions.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.as3dp.com%2F2011%2F11%2Factionscript-design-patterns-transcend-changes-at-adobe%2F&amp;title=ActionScript%20Design%20Patterns%20Transcend%20Changes%20at%20Adobe" id="wpa2a_4"><img src="http://www.as3dp.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.as3dp.com/2011/11/actionscript-design-patterns-transcend-changes-at-adobe/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>ActionScript 3.0 Design Patterns and iOS:  A New Home for Apps</title>
		<link>http://www.as3dp.com/2011/08/actionscript-3-0-design-patterns-and-ios-a-new-home-for-apps/</link>
		<comments>http://www.as3dp.com/2011/08/actionscript-3-0-design-patterns-and-ios-a-new-home-for-apps/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 13:42:26 +0000</pubDate>
		<dc:creator>William B. Sanders</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Decorator]]></category>
		<category><![CDATA[Factory Method]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.as3dp.com/?p=6123</guid>
		<description><![CDATA[It&#8217;s Easy Once You Get Your Certificate and Provisioning Profile Having finally got my magical combination of permissions set up just so, the process began coming fairly easily. The problem is not Adobe, but rather getting the files from Apple just right. Once you get the files, you can use them over an over. One [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_6124" class="wp-caption alignleft" style="width: 330px"><img src="http://www.as3dp.com/wp-content/uploads/2011/08/apps.PNG" alt="Make Your Own Apps with Design Patterns" title="apps" width="320" height="480" class="size-full wp-image-6124" /><p class="wp-caption-text">Make Your Own Apps with Design Patterns</p></div><strong>It&#8217;s Easy Once You Get Your  Certificate and Provisioning Profile</strong></p>
<p>Having finally got my magical combination of permissions set up just so, the process began coming fairly easily. The problem is not Adobe, but rather getting the files from Apple just right. Once you get the files, you can use them over an over. One is a certificate file with a .p12 extension, and the other is a provisioning file. It looks like a lot of people are having the same problem because when I finally found a <a href="http://stackoverflow.com/questions/999313/iphone-app-signing-a-valid-signing-identity-matching-this-profile-could-not-be-f">solution on the Web at StackOverflow</a> several other developers indicated (with heart-felt thanks) that they were encountering the same problem. (The solution that worked for me was to start over and delete all provisioning profiles and login keychain.)  So if you got your Apple iOS Developer ticket ($99 or free to University students/faculty), that&#8217;s just the first part. The next part is to hook up your iOS device (mine is a 3S iPhone) and using the Xcode development tools, go through a process that generates the files you need. The following image shows what these little gems look like. If you put those two files in with your AIR iOS files, it&#8217;s a piece of cake. (Go ahead and download the files as well.) <div id="attachment_6127" class="wp-caption alignleft" style="width: 259px"><img src="http://www.as3dp.com/wp-content/uploads/2011/08/FigA.png" alt="Same files can be used with different apps" title="FigA" width="249" height="102" class="size-full wp-image-6127" /><p class="wp-caption-text">Same files can be used with different apps</p></div><br />
<a href="http://www.mwd.hartford.edu/mwd11/downloads/MWDdownloads.php" target="_blank"><img src="http://www.as3dp.com/wp-content/uploads/2009/11/kilroy.png" alt="kilroy" title="kilroy" width="112" height="56" class="alignnone size-full wp-image-2020" /></a></p>
<p><a href="http://developer.apple.com/devcenter/ios/index.action">Apple provides videos and a whole slew of tools and aids</a>, and if you follow the instructions, you should be able to develop the right files. (Sad experience had led me to suggest that you take your time and follow instructions carefully.) Anyway, whether you get the certificate and provisioning files on the first time or whether you struggle like I did, once you&#8217;ve got them; they&#8217;re good for about four months. You can develop on either a Mac or Windows PC and re-use the same files on different apps. (I haven&#8217;t gone through the process that Apple has for getting an app in the App Store; so you&#8217;re on your own in that department.)  The image on the right is a screenshot taken with an iPhone:<div id="attachment_6134" class="wp-caption alignright" style="width: 260px"><img src="http://www.as3dp.com/wp-content/uploads/2011/08/cartoonVG.png" alt="Animated tween, text and graphic" title="cartoonVG" width="250" height="375" class="size-full wp-image-6134" /><p class="wp-caption-text">Animated tween, text and graphic</p></div></p>
<p><strong>Step-By-Step</strong></p>
<p>This section walks you through the process of working with a Flash Pro project set up for use with iOS. In the previous post on iOS, the sample project was to create banners that can be used in a Factory Method context by loading external .SWF files. On the iPhone, that didn&#8217;t work.  The problem seemed to be the mobile device&#8217;s inability to grab the external .SWF files even though, the .SWF files were included in the General settings for the Included files window. So, using the same tweens, I created MovieClips and put them in the Flash Pro library and then set them up as classes. Then in the concrete product files, I just instantiated classes with the tweens instead of loading external .SWF files, and the rest of the program was unchanged. (That is where design patterns really shine—easy to make changes.)</p>
<p>Okay, now to step through the process. This was all done using AIR 3.0, Flash Player 11 public betas on a iMac running the new Lion OS.  After you open a new AIR for iOS and write all of your code and add any graphics and text, the first step is to select the FLA file, make sure that nothing is selected on the stage and then click the little wrench icon next to the Player selection where it should indicate &#8216;AIR for iOS.&#8217; That will open the AIR for iOS Settings window as shown in Figure 1:<br />
<div id="attachment_6142" class="wp-caption alignnone" style="width: 510px"><img src="http://www.as3dp.com/wp-content/uploads/2011/08/Fig1.png" alt="&lt;em&gt;&lt;strong&gt;Figure 1:&lt;/strong&gt; General Settings of AIR for iOS&lt;/em&gt;" title="Fig1" width="500" height="694" class="size-full wp-image-6142" /><p class="wp-caption-text"><em><strong>Figure 1:</strong> General Settings of AIR for iOS</em></p></div></p>
<p>For getting started, choose Full screen instead of Auto orientation. Use the CPU for the Rendering processor, specify your device and choose the Standard resolution. The included files will be an .SWF and .XML file. Leave those alone, and for this app, you do not need to add any others.</p>
<p>For this next step, you&#8217;ll need both the certificate and provisioning files in the same folder with the other class files.  So if you haven&#8217;t created those files and linked them to the device you&#8217;re testing it on; do so now. The click the Deployment button next to the General button at the top of the AIR for iOS Settings window. Figure 2 shows the deployment settings:<br />
<div id="attachment_6155" class="wp-caption alignnone" style="width: 510px"><img src="http://www.as3dp.com/wp-content/uploads/2011/08/Fig2.png" alt="&lt;em&gt;&lt;strong&gt;Figure 2:&lt;/strong&gt; Deployment window&lt;/em&gt;" title="Fig2" width="500" height="694" class="size-full wp-image-6155" /><p class="wp-caption-text"><em><strong>Figure 2:</strong> Deployment window</em></p></div></p>
<p>The password for the certificate is the one you entered when you created the certificate—not one associated with your computer. Use the search folder to find your Provisioning profile file.  The App ID is the name you gave your initial FLA file—I&#8217;m in the habit of calling all of mine &#8220;Client,&#8221; but now I&#8217;ve got to think about what users will see on their mobile device..</p>
<p>This post does not get into the iOS deployment beyond the local development stage. So, select the &#8220;Quick publishing for device testing&#8221; or &#8220;Quick publishing for device debugging.&#8221; I selected the former because I chose to do the debugging using the standard Flash tools. After all I went through to get the certificate and mobile provision files to work right, I wasn&#8217;t about to tempt fate just yet and do more than the minimum.</p>
<p>This final step is fun. You can easily create your own iOS icon. Here&#8217;s what you need to do to get started:</p>
<ol>
<li>Create a square image with your logo or some symbol  you want to use to identify you application. Save it as a .PNG file. (In the image at the top of this post, you can see the two application icons using the Sandlight logo.) Be sure that the image has equal width and height.</li>
<li>Save three images in sizes 29 pixel square, 57 pixel square and 512 pixel square. Depending on the mobile device, you may want to create other sizes as well.  I started off with the Adobe Illustrator version and saved each size as a PNG file.</li>
<li>Place the three image files in a folder named &#8220;icons&#8221; and place the icons folder in the directory where you are creating your mobile app.</li>
</ol>
<p>In Figure 3, you can see the preview window showing the image used for the application described in this post.</p>
<div id="attachment_6158" class="wp-caption alignnone" style="width: 510px"><img src="http://www.as3dp.com/wp-content/uploads/2011/08/Fig3.png" alt="&lt;em&gt;&lt;strong&gt;Figure 3:&lt;/strong&gt; Assigning icons for app image</em>&#8221; title=&#8221;Fig3&#8243; width=&#8221;500&#8243; height=&#8221;694&#8243; class=&#8221;size-full wp-image-6158&#8243; /><p class="wp-caption-text"><em><strong>Figure 3:</strong> Assigning icons for app image</strong></p></div>
<p></em>Be sure to click each icon size for each of the three sizes and load the URL (icons/iconXX.png) before you click OK. Note also that two of the icons are settings for iPads, and so if you have an iPad, create image files for those as well.</p>
<p><strong>Installing your iOS on your Mobile Device</strong></p>
<p>Now you&#8217;re set to Publish your files required for an iOS mobile app. When you click &#8220;Publish&#8221; you will find that it takes a while to process everything. Once you&#8217;re finished, you will see all the files generated for your iOS device. Figure 4 shows the files you will see—including the all-important .IPA file.<br />
<div id="attachment_6165" class="wp-caption alignnone" style="width: 510px"><img src="http://www.as3dp.com/wp-content/uploads/2011/08/folder.png" alt="&lt;em&gt;&lt;strong&gt;Figure 4:&lt;/strong&gt; Files used and generated&lt;/em&gt;" title="folder" width="500" height="305" class="size-full wp-image-6165" /><p class="wp-caption-text"><em><strong>Figure 4:</strong> Files used and generated</em></p></div></p>
<p>As you can see in Figure 4, one of the files is named <strong>BannerFactory.ipa</strong>. That is the file that will install your app onto your iOS mobile device. Connect your iPhone or iPad or iWhatever that runs on iOS, and double-click the IPA file and it will upload your app into the iTunes Apps folder.  (On your iTunes, click <strong>Apps</strong> in the LIBRARY folder, and you should see your new application as shown in Figure 5.)</p>
<div id="attachment_6167" class="wp-caption alignnone" style="width: 510px"><img src="http://www.as3dp.com/wp-content/uploads/2011/08/Fig5.png" alt="&lt;em&gt;&lt;strong&gt;Figure 5:&lt;/strong&gt; iTunes Apps folder&lt;/em&gt;" title="Fig5" width="500" height="252" class="size-full wp-image-6167" /><p class="wp-caption-text"><em><strong>Figure 5:</strong> iTunes Apps folder</em></p></div>
<p>If you see your application icon and file, you&#8217;ve been successful—up to this point. The last step is to install your app onto your mobile device. The final step is to select your device and then check your application Sync. Figure 6 shows  iTunes with your application selected (checkbox) and ready for Sync.</p>
<div id="attachment_6169" class="wp-caption alignnone" style="width: 510px"><img src="http://www.as3dp.com/wp-content/uploads/2011/08/Fig6.png" alt="&lt;em&gt;&lt;strong&gt;Figure 6&lt;/strong&gt;App set for installing in iPhone&lt;/em&gt;" title="Fig6" width="500" height="252" class="size-full wp-image-6169" /><p class="wp-caption-text"><em><strong>Figure 6:</strong> App set for installing in iPhone</em></p></div>
<p>Note in Figure 6 that the iOS device is selected under DEVICES in the left panel and that the new application (BannerFactory) has a check next to it. Click the Sync button (or Apply and then Sync) and if you have your device properly identified, you will see your icon and app on your mobile device.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.as3dp.com%2F2011%2F08%2Factionscript-3-0-design-patterns-and-ios-a-new-home-for-apps%2F&amp;title=ActionScript%203.0%20Design%20Patterns%20and%20iOS%3A%20%20A%20New%20Home%20for%20Apps" id="wpa2a_6"><img src="http://www.as3dp.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.as3dp.com/2011/08/actionscript-3-0-design-patterns-and-ios-a-new-home-for-apps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Developing an AIR ActionScript 3.0 Design Pattern Catalog and the AIR Magic Table</title>
		<link>http://www.as3dp.com/2009/06/the-developing-an-air-actionscript-30-design-pattern-catalog-and-the-air-magic-table/</link>
		<comments>http://www.as3dp.com/2009/06/the-developing-an-air-actionscript-30-design-pattern-catalog-and-the-air-magic-table/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 13:49:05 +0000</pubDate>
		<dc:creator>William B. Sanders</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Catalog]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Design Patterns at Work]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.as3dp.com/?p=1070</guid>
		<description><![CDATA[Gentle Reader, this post includes one completed application and one in the works. The AIR ActionScript 3.0 Design Pattern Catalog is meant to be a developer’s aid, and so your ideas of what to include in the catalog is important. We would really appreciate your comments on what you think would be useful in developing [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.as3dp.com/wp-content/uploads/2009/06/magicapp.png" alt="magicapp" title="magicapp" width="111" height="65" class="alignleft size-full wp-image-1071" /><br />
<em><strong>Gentle Reader,</strong> this post includes one completed application and one in the works. The AIR ActionScript 3.0 Design Pattern Catalog is meant to be a developer’s aid, and so your ideas of what to include in the catalog is important. We would really appreciate your comments on what you think would be useful in developing an information template to be used for all of the design patterns.</em></p>
<p>I recently returned from a trip to Prague in the Czech Republic, and I went to work creating a video player for my HD videos I made using a Flip Mino HD camcorder (http://www.sandlight.net/prague). Rather than pulling out and reusing my trusty State Design Pattern player (see Chapter 10), I decided to start from scratch and create a player not using a design pattern. Then I would take the completed video player and use it as an example to show how to refactor a program to a design pattern. (<em>This will be in an upcoming post.</em>) Since I’ve never had to refactor the original program (tweak, maybe but not refactor), and I hadn’t worked with a State pattern lately, I found myself digging up all of the materials on the State Design Pattern. What I wished I had was a handy desktop app that I could click that would show me the essentials of the different design patterns. It would be an <strong>abbreviated design pattern catalog</strong> that could be used like the little <a href="http://www.as3dp.com/2009/02/26/oop-designs-pattern-principles-ready-for-work/">Design Pattern Principles and Lunch Bucket Rules</a> AIR app. Then when I need a quick reference I could use the desktop app to look up the essentials of the pattern.<br />
<span id="more-1070"></span><br />
<strong>What Does a Design Pattern Catalog Need?</strong></p>
<p>Right off the top of my head I came up with the following elements for a quick look-up:</p>
<ul>
<li>Class diagram</li>
<li>Description of what elements vary</li>
<li>Component roles</li>
<li>Common usage </li>
<li>Chapter/Blog reference</li>
<li>Key Code examples</li>
</ul>
<p>The catalog is meant to be a quick reference for someone who has some idea design patterns and wants to check out some elements of different patterns to see if it&#8217;s appropriate for a project. It is not meant to be a complete reference and certainly not a tutorial. Like the little AIR application that brings up the principles in abbreviated format, this application is meant to be a simple guide that will save time over pouring through Web searches or books and articles for basic design pattern information. Figure 1 shows an idea of what each page of the application would look like (given the above criteria). We’d like your comments on further ideas both in content and design. <em>I’m not a designer</em>.<br />
<img src="http://www.as3dp.com/wp-content/uploads/2009/06/catalog.png" alt="catalog" title="catalog" width="500" height="500" class="alignnone size-full wp-image-1072" /></p>
<p><em><strong>Figure 1:</strong> Proposed Template for ActionScript 3.0 Design Pattern Catalog</em></p>
<p>Take a look at Figure 1 and see if you have any suggestions as to how we could make it more useful without going into a detailed explanation of the pattern. Would it be handy? Should anything be added or deleted? Is there a better design? Send in your comments.</p>
<p><strong>The Magic Table in AIR</strong></p>
<p>A while back we had a post on this blog that included what I called <a href="http://www.as3dp.com/2009/03/10/variation-table/"> The Magic Table</a>.  It is a reference to the Gang of Four’s table where they list all of the design patterns and what can vary for the pattern. Anyway, I’ve always found that table useful, and so I created one using a simple DataGrid component. You can <a href="http://www.sandlight.com/magic/">download it here</a>. You can put the AIR app on your desktop and quickly find what can vary with each design pattern. Figure 2 shows what you’ll see.<br />
<!--more--><br />
<img src="http://www.as3dp.com/wp-content/uploads/2009/06/vary.png" alt="vary" title="vary" width="630" height="522" class="alignnone size-full wp-image-1073" /></p>
<p><em><strong>Figure 2:</strong> Encapsulate what varies—Design Pattern Variation Table in AIR</em></p>
<p>If you can make something with better aesthesis, please do so, and we’ll be glad to make it available to our blog readers if it is sent in an AIR file.  In the meantime, we’d like to get your comments on the utility of such tools and ideas to improve them.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.as3dp.com%2F2009%2F06%2Fthe-developing-an-air-actionscript-30-design-pattern-catalog-and-the-air-magic-table%2F&amp;title=The%20Developing%20an%20AIR%20ActionScript%203.0%20Design%20Pattern%20Catalog%20and%20the%20AIR%20Magic%20Table" id="wpa2a_8"><img src="http://www.as3dp.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.as3dp.com/2009/06/the-developing-an-air-actionscript-30-design-pattern-catalog-and-the-air-magic-table/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>OOP &amp; Designs Pattern Principles: Ready for Work</title>
		<link>http://www.as3dp.com/2009/02/oop-designs-pattern-principles-ready-for-work/</link>
		<comments>http://www.as3dp.com/2009/02/oop-designs-pattern-principles-ready-for-work/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 22:44:21 +0000</pubDate>
		<dc:creator>William B. Sanders</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Design Patterns at Work]]></category>
		<category><![CDATA[Principles]]></category>

		<guid isPermaLink="false">http://www.as3dp.com/?p=731</guid>
		<description><![CDATA[This post is going to be short and sweet. I worked up a little application that you can see here. Also, I created an AIR version, and it now seems to work on Mac, Windows 7, Windows Vista and Windows XP. You&#8217;re welcome to download it here (AIR version) and put it someplace handy where [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.as3dp.com/wp-content/uploads/2009/02/airimg.png" alt="airimg" title="airimg" width="104" height="69" class="alignleft size-full wp-image-736" />This post is going to be short and sweet. I worked up a little application that you can see <a href="http://poobah.mwd.hartford.edu/wsanders/principles/">here</a>. Also, I created an AIR version, and it now seems to work on Mac, Windows 7, Windows Vista and Windows XP.  You&#8217;re welcome to download it <a href="http://poobah.mwd.hartford.edu/wsanders/principles/AIRmenu.air.zip">here (AIR version)</a> and put it someplace handy where you can quickly look up the main principles guiding OOP and design patterns.</p>
<p><strong>Principles in Your Lunch Bucket</strong></p>
<p>Here&#8217;s the whole idea of why I started this project in the first place. We need something that makes it easy to remember and use good practices at work. The posts reviewing OOP and DP principles on this blog is one resource, but something simpler (and sillier) would be helpful to have available when cranking out code under a deadline.</p>
<p><strong>Yes, I practiced what is preached</strong></p>
<p>When developing this little application, I started off the wrong way, and decided that no! Never again! I&#8217;d start off right, and it wasn&#8217;t any more difficult. I used a Strategy pattern, and later I&#8217;ll put the whole thing up here with an explanation of how this &#8220;work&#8221; project was done by following the dictums I was writing about.</p>
<p>So take a look and let me get your valuable (as always) feedback.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.as3dp.com%2F2009%2F02%2Foop-designs-pattern-principles-ready-for-work%2F&amp;title=OOP%20%26amp%3B%20Designs%20Pattern%20Principles%3A%20Ready%20for%20Work" id="wpa2a_10"><img src="http://www.as3dp.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.as3dp.com/2009/02/oop-designs-pattern-principles-ready-for-work/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Transitioning to the Desktop with Adobe AIR</title>
		<link>http://www.as3dp.com/2007/08/transitioning-to-the-desktop-with-adobe-air/</link>
		<comments>http://www.as3dp.com/2007/08/transitioning-to-the-desktop-with-adobe-air/#comments</comments>
		<pubDate>Fri, 10 Aug 2007 15:24:50 +0000</pubDate>
		<dc:creator>Chandima Cumaranatunge</dc:creator>
				<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://www.as3dp.com/2007/08/10/transitioning-to-the-desktop-with-adobe-air/</guid>
		<description><![CDATA[Video of Lee Brimelow’s session from AIR Camp Denver titled Transitioning to the Desktop with Adobe AIR.

In his session Lee talks about some of the things he has learned while working with Adobe AIR, demo’s some apps he has been working on, and shows how to use Flash Authoring to create AIR applications.]]></description>
			<content:encoded><![CDATA[<p><a href="http://onair.adobe.com/blogs/videos/2007/08/01/lee-brimelow-transitioning-to-the-desktop-with-adobe-air/">Video</a> of <a href="http://www.theflexblog.com/">Lee Brimelow’s</a> session from <a href="http://onair.adobe.com/schedule/cities/denver.php">AIR Camp Denver</a>. Lee does a fantastic job of placing Adobe Air in the crowded field of Flash, Flex, Microsoft&#8217;s Silverlight and desktop apps. He demos several apps showing the capabilities of AIR apps including custom chrome and most importantly, the impressive speed of AIR apps running on the desktop, including several that use the <a href="http://www.papervision3d.org">Papervision3D</a> library. He also shows how to create AIR apps using the excellent <a href="http://gskinner.com/blog/archives/2007/07/creating_air_pr.html">AIR Panel</a> developed by the folks at gskinner.com (<strong>Note:</strong> Adobe now has an <a href="http://labs.adobe.com/wiki/index.php/AIR:Flash_CS3_Professional_Update">update</a> for creating AIR apps from Flash CS3).</p>
<p>AIR opens a whole new discussion about best practices on developing desktop apps integrating ActionScript, HTML, Javascript and PDF and how to integrate design patterns that work seamlessly across multiple development frameworks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.as3dp.com/2007/08/transitioning-to-the-desktop-with-adobe-air/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

