<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4075508897186367008</id><updated>2010-04-23T15:12:02.369-07:00</updated><title type='text'>GraphNick Design</title><subtitle type='html'>Graphic Design and Flash with dynamic Actionscript using XML and CSS. Print and Web design service.</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='207.55.250.5'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-3214736441857801096</id><published>2010-04-23T14:21:00.003-07:00</published><updated>2010-04-23T15:12:02.376-07:00</updated><title type='text'>Web Design of the Year 2009</title><content type='html'>&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://graphnickdesign.com/portfolio/demo/roche/index.html"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 147px;" src="http://graphnickdesign.com/blog/uploaded_images/roche_lg-762588.jpg" border="0" alt="" /&gt;&lt;/a&gt;O.C. Tanner had its annual Designing in the Trenches year-end competition a little while back. The winner for the Print category for the Design of the Year was Dave Clark for some Amtrak collateral pieces. The competition was tough for the Non-Print/Web category. Some designers had multiple  pieces submitted, while I only had one design that was as finalist. When they called the winner they announced the designer with the piece that was designed. When the piece was unveiled, I knew right away they made a mistake. Somehow they announced the right designer but wrong developer. Mike Overton was the designer, who had submitted another piece with Chase Maxfield, another Flash Developer, but that was not the piece that was unveiled. The winning design was for Roche, the one I did the development on with Mike as the Designer. &lt;/p&gt;
&lt;p&gt;I was at a loss what I should do. Chase had already made his way to the front and was being handed the trophy. I leaned over to those at my table and said, &amp;quot;That is the one I did!&amp;quot; I then decided to walk up to the front to tell our VP that he had made a mistake. It was a little embarrasing for both of us. I had to take the trophy away from Chase, a trophy that did have my name already engraved on it. &lt;/p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://graphnickdesign.com/blog/uploaded_images/web_design_of_the_year_2009-727063.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://graphnickdesign.com/blog/uploaded_images/web_design_of_the_year_2009-727060.jpg" border="0" alt="" /&gt;&lt;/a&gt;
    &lt;p&gt;In addition to receiving the trophy and gaining the Web Design of the Year title (for the second year in a row now), I also received a gift of my choosing. I picked a nice Dyson vacuum. It was a nice honor to be given this opportunity to win two years in a row. Is everyone tired of me winning yet?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-3214736441857801096?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/3214736441857801096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=3214736441857801096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/3214736441857801096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/3214736441857801096'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2010/04/web-design-of-year-2009.html' title='Web Design of the Year 2009'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-4548901536819395736</id><published>2010-01-07T15:21:00.003-07:00</published><updated>2010-01-08T08:13:07.154-07:00</updated><title type='text'>Odd TypeErrors When Loading and Parsing XML in AS3</title><content type='html'>&lt;p&gt;Recently I was running into this issue with three TypeErrors when loading an XML file. The following errors were:&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;TypeError: Error #1088: The markup in the document following the root element must be well-formed.&lt;/li&gt;
      &lt;li&gt;TypeError: Error #1089: Assignment to lists with more than one item is not supported.&lt;/li&gt;
      &lt;li&gt;TypeError: Error #1090: XML parser failure: element is malformed.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;The errors that were getting thrown were not consistent and made no sense as the XML file was, in fact, well formed.I did a bit of research and found some interesting things out on the erros. The most common errors were #1088 and #1090, but each time the Flash was published, it hit a little differently. At times it would even parse correctly and may data could be used as desired.&lt;/p&gt;
    &lt;p&gt;At first I thought it was occuring upon the load of my XML file. I attempted to use &lt;span class="code"&gt;xmlLoader.addEventListener(ErrorEvent.ERROR, xmlError)&lt;/span&gt;; However, the error was never being traced within the Loader Error handler. I then did further tests to see when at which point it was actually happening. It was definitely not an IO_Error  that was occuring either, for the XML file was being seen and always loaded. The error turned out to be not on the load of the XML, but after it was fully loaded.&lt;/p&gt;
    &lt;p&gt;So, on the &lt;span class="code"&gt;xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded),&lt;/span&gt; I found that something was happening when putting the data into the XML Object:&lt;/p&gt;
    &lt;div class="codeBox"&gt;&lt;span class="red"&gt;function&lt;/span&gt;&lt;span class="code1"&gt; xmlLoaded(evt:&lt;/span&gt;&lt;span class="blue"&gt;Event&lt;/span&gt;&lt;span class="code1"&gt;):&lt;/span&gt;&lt;span class="red"&gt;void&lt;/span&gt;&lt;span class="code1"&gt; {&lt;/span&gt;
      &lt;p class="code2"&gt;&lt;span class="blue"&gt;trace&lt;/span&gt;(evt.&lt;span class="blue"&gt;target.data&lt;/span&gt;) &lt;span class="comment"&gt;// data shows up&lt;/span&gt;&lt;/p&gt;
      &lt;p class="code2"&gt;programXML = &lt;span class="blue"&gt;XML&lt;/span&gt;(evt.&lt;span class="blue"&gt;target.data&lt;/span&gt;);&lt;/p&gt;
      &lt;p class="comment"&gt;// error gets thrown here&lt;/p&gt;
      &lt;p class="code1"&gt;}&lt;/p&gt;
    &lt;/div&gt;
    &lt;p&gt;&amp;nbsp;&lt;/p&gt;
    &lt;h2&gt;My Solution for Bad Parsing&lt;/h2&gt;
    &lt;p&gt;I thought there was an Asynchronous way to add an event listener to an XML object llike you can with a Loader object to listen for an error, but there is not. It must be done in a synchronous way. In other words you cannot put a listener on an XML Object to listen for an Error Event. It must be done as a synchronous catch event:&lt;/p&gt;
    &lt;div class="codeBox"&gt;&lt;span class="red"&gt;function&lt;/span&gt;&lt;span class="code1"&gt; xmlLoaded(evt:&lt;/span&gt;&lt;span class="blue"&gt;Event&lt;/span&gt;&lt;span class="code1"&gt;):&lt;/span&gt;&lt;span class="red"&gt;void&lt;/span&gt;&lt;span class="code1"&gt; {&lt;/span&gt;
      &lt;p class="code2"&gt;&lt;span class="red"&gt;try&lt;/span&gt;{&lt;/p&gt;
      &lt;p class="code3"&gt;programXML = &lt;span class="blue"&gt;XML&lt;/span&gt;(evt.&lt;span class="blue"&gt;target.data&lt;/span&gt;);&lt;/p&gt;
      &lt;p class="code3"&gt;setData(programXML);&lt;/p&gt;
      &lt;p class="code2"&gt;} &lt;span class="red"&gt;catch&lt;/span&gt; (error:&lt;span class="blue"&gt;TypeError&lt;/span&gt;){&lt;/p&gt;
      &lt;p class="code3"&gt;xmlLoader.&lt;span class="blue"&gt;load&lt;/span&gt;(xmlURL);&lt;/p&gt;
      &lt;p class="code2"&gt;&lt;span class="comment"&gt;//trace(&amp;quot;A TypeError has occurred : \r\t&amp;quot; + error); &lt;/span&gt;&lt;/p&gt;
      &lt;p class="code2"&gt;}&lt;/p&gt;
      &lt;p class="code1"&gt;}&lt;/p&gt;
    &lt;/div&gt;
    &lt;p&gt;Since it made no sense to me why it was so buggy I decided to reload the XML file and try to parse it into the XML Object until there was no errors. Granted, this could end up being an infinite loop if the XML at some point ended up being malformed. Therefore, it would be a good idea to put a timout or counter on the loop to stop trying to reload the XML file and do something else. I'm not sure this is best practice, but it was a way around this crazy error that would sometimes hit and sometimes run just fine.&lt;/p&gt;
    &lt;h2&gt;Conclusion&lt;/h2&gt;
    &lt;p&gt;Strange things happen when trying to parse a simple XML file. It is a good idea to use a catch in your code, especially when the code must be run in a syncrynous order. When you have a bug, the error is not always where you think it is coming from.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-4548901536819395736?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/4548901536819395736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=4548901536819395736' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/4548901536819395736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/4548901536819395736'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2010/01/odd-typeerrors-when-loading-and-parsing.html' title='Odd TypeErrors When Loading and Parsing XML in AS3'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-8493294870075615143</id><published>2009-11-01T21:36:00.006-07:00</published><updated>2010-01-08T08:14:52.284-07:00</updated><title type='text'>Designing in the Trenches Web Design Winners</title><content type='html'>&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://graphnickdesign.com/blog/uploaded_images/mikeoverton_nickharoldsen-765429.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 132px;" src="http://graphnickdesign.com/blog/uploaded_images/mikeoverton_nickharoldsen-765425.jpg" border="0" alt="" /&gt;&lt;/a&gt; Recently we had the quarterly &lt;span class="emphasis2"&gt;&amp;quot;Designing in the Trenches&amp;quot;&lt;/span&gt; competition at O.C. Tanner. The competition was as always tough as we have many great designers at Tanner's. Through a joint effort with Mike Overton as the key designer and myself as the Flash Animator, we pulled off a win in the non-print category of the competition. &lt;/p&gt;
    &lt;h2&gt;The Design&lt;/h2&gt;
    &lt;p&gt;The design was for the global pharmaceutical  company F. Hoffmann-La Roche (aka &lt;span class="emphasis1"&gt;Roche&lt;/span&gt;). It includes interactive rollover to engage the user with different typography as they explore the various programs within the navigation. It was a solution that wouldn't have been pulled off as well without the strong typography the rollover effects created.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://graphnickdesign.com/portfolio/demo/roche/index.html"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 294px;" src="http://graphnickdesign.com/blog/uploaded_images/roche-786620.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://graphnickdesign.com/portfolio/demo/roche/"&gt;View Site&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;All in all, everything came together well as Mike and I collaborated on this project. Thank you all who participated in this quarter's tough competition. Everyone's work was outstanding.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-8493294870075615143?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/8493294870075615143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=8493294870075615143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/8493294870075615143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/8493294870075615143'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2009/11/designing-in-trenches-win.html' title='Designing in the Trenches Web Design Winners'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-7906678898946538617</id><published>2009-10-23T12:58:00.006-07:00</published><updated>2009-10-23T13:50:44.070-07:00</updated><title type='text'>Actionscript 3: reference to stage is null</title><content type='html'>&lt;p&gt;While writing a custom Class in Actionscript 3 today I came across an issue that took me a little bit to figure out where the compile error was coming from. I was getting the wonderful error: &lt;/p&gt;
&lt;div class="codeBox"&gt;&lt;p&gt;TypeError: Error #1009: Cannot access a property or method of a null object reference.&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;After a bit of troubleshooting I discovered that a reference to the stage in my Class was returning null. I did some research and found that the stage is really a DisplayObject's reference to the stage &lt;span class="code"&gt;DisplayObject.stage&lt;/span&gt;. However, if that DisplayObject is not yet added to the stage, the stage of the DisplayObject is not instantiated yet and returns a null value. In my case, the class was a Sprite I was adding to the stage at runtime.&lt;/p&gt;
&lt;p&gt;I then discovered that my Class shouldn't get initialized until it was fully added to the stage since I had calls to the the stage class such as stage listeners and stage properties. I then determined that it was essential to add an event listener for my Sprite to be added to the stage:&lt;/p&gt;
&lt;div class="codeBox"&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p class="code1"&gt;&lt;span class="red"&gt;public function&lt;/span&gt; myClass()&lt;br/&gt;
  {&lt;/p&gt;
   &lt;p class="code2"&gt;&lt;span class="blue"&gt;addEventListener&lt;/span&gt;(&lt;span class="blue"&gt;Event.ADDED_TO_STAGE&lt;/span&gt;, init);&lt;/p&gt;
  &lt;p class="code1"&gt;}&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;/div&gt;
&lt;p style="clear:both"&gt;Once the Object is added to the stage, you can initialize the rest of the Class. This was an easy fix to the issue that I hope others find useful.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-7906678898946538617?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/7906678898946538617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=7906678898946538617' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/7906678898946538617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/7906678898946538617'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2009/10/actionscript-3-reference-to-stage-is.html' title='Actionscript 3: reference to stage is null'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-9211809019840413319</id><published>2009-08-24T13:19:00.014-07:00</published><updated>2009-10-03T20:20:09.955-07:00</updated><title type='text'>Flash AS3 Garbage Collection</title><content type='html'>&lt;p&gt;New developers and/or Flash designers make the mistake of forgetting to clear an object when it is finished being used so that it is available for garbage collection. Many noobs simply don't understand the importance and/or rules behind the Flash Player Garbage Collector. Some think that if you simply remove a child object from the stage, or simply made an object null, all is done and memory is automatically freed up. This is a misnomer and if you continually add large objects at runtime, especially with bitmaps and video, you quickly see a performance hit to the processor. This slowness is evident more quickly on slower computers, like the one I have at work, than on newer/faster computers. Sometimes it is a good thing to test on slower computers to help indicate if your application is overly obtuse due to poor garbage collection.&lt;/p&gt;
&lt;p&gt;I have made many of common errors of non-garbage collection myself and have found it imperative to clear any (even weak) reference to an object. I found that it is easiest to do this early on in development while you are adding the reference to think of the way it will be removed. For example, when you add and event listener, know when that event listener is finished and remove that event listener:&lt;/p&gt;
&lt;div class="codeBox"&gt;
&lt;p class="code1"&gt;var image:&lt;span class="blue"&gt;Loader&lt;/span&gt; = &lt;span class="red"&gt;new&lt;/span&gt; Loader();&lt;/p&gt;
&lt;p class="code1"&gt;var urlReq:&lt;span class="blue"&gt;URLRequest&lt;/span&gt; = &lt;span class="red"&gt;new&lt;/span&gt; &lt;span class="blue"&gt;URLRequest&lt;/span&gt;("image.jpg");&lt;/p&gt;
&lt;p class="code1"&gt;image.&lt;span class="blue"&gt;load&lt;/span&gt;(urlReq)
&lt;p class="code1"&gt;image.&lt;span class="blue"&gt;contentLoaderInfo.addEventListener&lt;/span&gt;(&lt;span class="blue"&gt;Event.COMPLETE&lt;/span&gt;, completeHandler);&lt;/p&gt;
&lt;p class="code1"&gt;&lt;span class="red"&gt;function&lt;/span&gt; completeHandler(event:&lt;span class="blue"&gt;Event&lt;/span&gt;){&lt;/p&gt;
&lt;p class="comment"&gt;//once image is loaded you can stop listening for it to load&lt;/p&gt;
&lt;p class="code2"&gt;&lt;span class="blue"&gt;event.target.removeEventListener&lt;/span&gt;(&lt;span class="blue"&gt;Event.COMPLETE&lt;/span&gt;, completeHandler);&lt;/p&gt;
&lt;p class="code1"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I have found that it is best to set up a class for an image loader as it is something that gets used over and over. One thing for certain to use within your ImageLoader class is an unload listener that will remove all soft references to the object so that it will be available for garbage collection.&lt;/p&gt;
&lt;div class="codeBox"&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p class="code1"&gt;&lt;span class="red"&gt;function&lt;/span&gt; unLoadHandler(&lt;span class="blue"&gt;event:Event&lt;/span&gt;) {&lt;/p&gt;
&lt;p class="comment"&gt;// remove any listener you have created if you want it to be disposed of durring GC.&lt;/p&gt;
&lt;p class="code2"&gt;&lt;span class="blue"&gt;event.target.removeEventListener&lt;/span&gt;(&lt;span class="blue"&gt;Event.UNLOAD&lt;/span&gt;, completeHandler);&lt;/p&gt;
&lt;p class="comment"&gt;// you should have set up a error handler listener. Be sure to remove it as well&lt;/p&gt;
&lt;p class="code2"&gt;&lt;span class="blue"&gt;event.target.removeEventListener&lt;/span&gt;(&lt;span class="blue"&gt;IOErrorEvent.IO_ERROR&lt;/span&gt;, ioErrorHandler);&lt;/p&gt;
&lt;p class="code1"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This way when you say &lt;span class="code"&gt;image.unload()&lt;/span&gt;, your Loader Object will remove all listeners to that object so that it can be disposed of automatically when the Garbage Collector hits. Personally I think this should be automatic by default and remove any and all references to the object, but it is not and it is up to the programmer to set it up that way.&lt;/p&gt;
&lt;p&gt;Once you make a conscious effort to be aware of the way the garbage collector works, you will more readily be able to remove all references to the object. If you add the code to remove the listener while it is on your mind to add the listener, you can keep your application cleaner and leaner for a better end-user experience.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-9211809019840413319?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/9211809019840413319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=9211809019840413319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/9211809019840413319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/9211809019840413319'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2009/08/garbage-collection.html' title='Flash AS3 Garbage Collection'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-2685652025885499642</id><published>2009-08-19T21:04:00.009-07:00</published><updated>2009-08-19T21:52:24.114-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='garbage collection'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><title type='text'>Johnson &amp; Johnson Design</title><content type='html'>&lt;p&gt;Lately I have been doing some Flash development for one of our larger clients at OC Tanner, Johnson &amp;amp; Johnson. It is great to do work for such big clients, but with it comes great responsibility. If I fail to deliver good design with a solid implementation of that design, it affects so many parts of our business. I am up for the challenge as I am used to doing such important work for the big guns. I find I deliver more polished work when under greater pressure.&lt;/p&gt;
&lt;p&gt;The current J&amp;amp;J design, one of which I am not yet at liberty to disclose, includes some intense Flash and Actionscript 3 programming. It is getting pretty slick the way it pulls dynamic content through XML to engage the user. It will help the user considerably from the current program. I have been learning so many things with garbage collection, classes, keeping my code clean, and such. It is easy to slip into sloppy practices, but with some discipline I keep things somewhat organized. I know there are many AS3 best practices that I may not be following, but I think I am doing pretty good for being completely self-taught.&lt;/p&gt;
&lt;p&gt;I hope to do a blog on some of the things I have learned in AS3 this past little while. Some things include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Garbage Collection&lt;/li&gt;
&lt;li&gt;Parent Scope (i.e. MovieClip(parent))&lt;/li&gt;
&lt;li&gt;Class Organization&lt;/li&gt;
&lt;li&gt;Event Listeners&lt;/li&gt;
&lt;li&gt;Actionscript vs. Javascript&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;...to name a few.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-2685652025885499642?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/2685652025885499642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=2685652025885499642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/2685652025885499642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/2685652025885499642'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2009/08/johnson-johnson-design.html' title='Johnson &amp; Johnson Design'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-1434517460068322811</id><published>2009-07-28T21:38:00.004-07:00</published><updated>2009-07-28T21:45:46.591-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Freelance'/><category scheme='http://www.blogger.com/atom/ns#' term='eLance'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>eLance Work</title><content type='html'>&lt;p&gt;I have been attempting to get a little freelance work via &lt;a href="http://elance.com"&gt;eLance&lt;/a&gt;. I am not yet convinced that it is worth my time it takes to bid for jobs that I most likely will get outbid by. There are too many people out there worldwide that are willing to work for pennies that I simply cannot beat their low bids. I understand that people want inexpensive work, but at what cost are they agreeing to have work done for them that is shoddy with no guarantee of quality delivery? I cannot work for so little people out there are bidding on. It is why the reported overall revenue generated through eLance is lower than one would think. I think I will stick to bettering my portfolio and going after real prospects for my contract work.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-1434517460068322811?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/1434517460068322811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=1434517460068322811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/1434517460068322811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/1434517460068322811'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2009/07/elance-work.html' title='eLance Work'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-3712193287651990252</id><published>2009-04-03T09:43:00.009-07:00</published><updated>2009-08-24T14:20:05.922-07:00</updated><title type='text'>Timer Class in Actionscript 3.0</title><content type='html'>&lt;p&gt;I have been playing with the Timer Class in Actionscript 3.0. It replaces setInterval from AS2. It seems to work about the same. It is a bit more robust; you quite a bit more control over it. Here is a sample of code I have been testing: &lt;/p&gt;
    &lt;div class="codeBox"&gt;
 &lt;p&gt;_myTimer = &lt;span class="red"&gt;new&lt;/span&gt; &lt;span class="blue"&gt;Timer&lt;/span&gt;(_delay, _repeatCount);&lt;/p&gt;
 &lt;p class="comment"&gt; //  _repeatCount is optional, if no value then it do the Timer forever&lt;/p&gt;
 &lt;p class="code2"&gt;_myTimer.&lt;span class="blue"&gt;addEventListener&lt;/span&gt;(&lt;span class="blue"&gt;TimerEvent.TIMER&lt;/span&gt;, timerHandler);&lt;/p&gt;
 &lt;p class="code2"&gt;_myTimer.&lt;span class="blue"&gt;addEventListener&lt;/span&gt;(&lt;span class="blue"&gt;TimerEvent.TIMER_COMPLETE&lt;/span&gt;, completeHandler);&lt;/p&gt;
 &lt;p class="code2"&gt;_myTimer.&lt;span class="blue"&gt;start()&lt;/span&gt;;&lt;/p&gt;
 &lt;p&gt;&amp;nbsp;&lt;/p&gt;
 &lt;p&gt; &lt;span class="red"&gt;private function&lt;/span&gt; timerHandler(e:&lt;span class="blue"&gt;TimerEvent&lt;/span&gt;):&lt;span class="red"&gt;void&lt;/span&gt;{&lt;/p&gt;
 &lt;p class="code2"&gt;lastIndex=curIndex;&lt;/p&gt;
 &lt;p class="code2"&gt;trace(lastIndex: &amp;quot;+lastIndex);&lt;/p&gt;
 &lt;p class="code2"&gt;curIndex+=1;&lt;/p&gt;
 &lt;p class="code2"&gt;trace(&amp;quot;curIndex: &amp;quot;+curIndex);&lt;/p&gt;
   }&lt;/p&gt;
 &lt;p&gt; &lt;span class="red"&gt;private function&lt;/span&gt; completeHandler(e:&lt;span class="blue"&gt;TimerEvent&lt;/span&gt;):&lt;span class="red"&gt;void&lt;/span&gt; {&lt;/p&gt;
    &lt;p class="comment"&gt;//complete after _repeatCount is complete;&lt;/p&gt;
    &lt;p class="comment"&gt; //kill listeners for garbage collection&lt;/p&gt;
    &lt;p class="code2"&gt;_myTimer.&lt;span class="blue"&gt;removeEventListener&lt;/span&gt;(&lt;span class="blue"&gt;TimerEvent.TIMER&lt;/span&gt;, timerHandler);&lt;/p&gt;
 &lt;p class="code2"&gt;_myTimer.&lt;span class="blue"&gt;removeEventListener&lt;/span&gt;(&lt;span class="blue"&gt;TimerEvent.TIMER_COMPLETE&lt;/span&gt;, completeHandler);&lt;/p&gt;
    &lt;p class="comment"&gt;// null out _myTimer only if you want to&lt;/p&gt;
    &lt;p class="comment"&gt; // completely remove the timer&lt;/p&gt;
    &lt;p class="code2"&gt;_myTimer = null &lt;/p&gt;
     &lt;p&gt; }&lt;/p&gt;
    &lt;/div&gt;
    &lt;p&gt;Now, the timer works fine by itself, but when you add interaction with it such as a button, you need to use a little care on how you stop or kill the timer so it doesn't interfere with the button interaction. I found that &lt;span class="code"&gt;_myTimer.stop()&lt;/span&gt;works well if you want to eventually restart the Timer. I have further testing to do where if I completely remove the Timer listener and set &lt;span class="code"&gt;_myTimer=null&lt;/span&gt; (for garbage collection), I hit errors that do not allow for me to allow for the same interaction any longer. I'm sure it is a bug of my own creation, but as I am still figuring this new syntax out, I will be doing numerous experiments to perfect this little issue.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-3712193287651990252?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/3712193287651990252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=3712193287651990252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/3712193287651990252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/3712193287651990252'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2009/04/timer-class-in-actionscript-30.html' title='Timer Class in Actionscript 3.0'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-8797029512322818579</id><published>2009-02-21T14:46:00.032-07:00</published><updated>2009-02-24T14:55:18.702-07:00</updated><title type='text'>2008 Designs of the Year</title><content type='html'>&lt;h2&gt;Designing in the Trenches&lt;/h2&gt;
    &lt;p&gt;During the year since April, 2008, we had mini competitions each month between the designers; this competition became know as &lt;span class="emphasis2"&gt;&amp;quot;Designing in the Trenches.&amp;quot; &lt;/span&gt; For each competition there was a print and a web category and were judged within our own group. The competitions were a great way to put forth our best work, better ourselves, and better the company. &lt;/p&gt;
&lt;div class="box" style="float:none; margin:12px"&gt;The underlying purpose of these competitions is three-fold:
&lt;ul&gt;
&lt;li&gt;To appreciate, motivate and encourage excellence in design.&lt;/li&gt;
&lt;li&gt;To create an atmosphere of continuous improvement in order to deliver a superior product to customers.&lt;/li&gt;
&lt;li&gt;To inspire confidence and develop strong working relationships with our customers in which we can enhance their  branding, culture and create a spirit of excellence.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
    &lt;p&gt;At the end of the year the designers voted on favorites from previous competitions throughout the year. Five finalists from a print category and five finalists from a web category were submitted. The finalist works went to outside groups within and and outside the company; they consisted of selected managers, sales offices, other non-designer groups, and outside design consultants. The results were kept quite secret until the final reveal.&lt;/p&gt;
    &lt;h2&gt;And the 2008 Design Winners Are...&lt;/h2&gt;
    &lt;p&gt;On Friday, February 13, we had a luncheon at O.C. Tanner to discover the winners for the &lt;span class="emphasis1"&gt;design competition&lt;/span&gt; of the year. Many of the top leaders of the company attended. I hadn't realized this event was going to be such an important event. Never before had O.C. Tanner done something like this for the designer group. Many leaders spoke to us expressing their appreciation for design and the effective role it plays in the sales field. &amp;quot;Design is truly what &lt;span class="emphasis2"&gt;differentiates&lt;/span&gt; O.C. Tanner from the competition,&amp;quot; they said.&lt;/p&gt;
    &lt;p&gt;&lt;span class="emphasis1"&gt;Mike Overton&lt;/span&gt;, a designer with O.C. Tanner for 15 years, won the design for print category. He always does great work and it came as no surprise to myself. The surprising thing came when they reveald the winner of the web category. The competition was tight and the results could have gone in any direction; all designs were &lt;span class="emphasis2"&gt;top notch&lt;/span&gt;. When they called my name I was so in shock I didn't really know what to think. I floated up to the front to receive my trophy and graciously thanked everyone as quickly as I could. To be quite honest I was a little embarrassed to have won such a great award. With very little words I went back to my seat. Perhaps next time I will know better to try and think of a few words to say in such a situation.&lt;/p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://graphnickdesign.com/portfolio/demo/millward_brown"&gt;&lt;img style="clear:both; float:right; margin:0 10px 30px 6px;cursor:pointer; cursor:hand;width: 300px; height: 225px;" src="http://graphnickdesign.com/blog/uploaded_images/millward_brown-751015.jpg" border="0" alt="Millward Brown" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://graphnickdesign.com/blog/uploaded_images/nick_trophy-790788.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 6px;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://graphnickdesign.com/blog/uploaded_images/nick_trophy-790784.jpg" border="0" alt="Crystal Trophy" /&gt;&lt;/a&gt;
&lt;p&gt;The &lt;a href="http://graphnickdesign.com/portfolio/demo/millward_brown"&gt;web design of the year&lt;/a&gt; was for an advertising agency based in the Mid-West, &lt;span class="emphasis3"&gt;&lt;a href="http://www.millwardbrown.com"&gt;Millward Brown&lt;/a&gt;&lt;/span&gt;. I took their current branding and applied it to a recognition gateway built entirely in Flash. It helps to have a strongly branded company going into design concept. I did find it a little nerving designing for a company that knows and understands design. I was pleased to hear that the design was well received not only by my peers and other judges, but also by those whom it was intended for. 
&lt;/p&gt;
&lt;p&gt;Along with the beautiful personalized crystal trophy they gave us both a Platinum-level award to choose an additional gift from a variety of great products. I chose the &lt;span class="emphasis1"&gt;iPod Touch&lt;/span&gt; (32 GB). I have a difficult time putting it down.&lt;/p&gt;

    &lt;h2&gt;A Few Words of Thanks&lt;/h2&gt;
    &lt;p&gt;I wish to send out my appreciation to O.C. Tanner for everything they do for me. I would also like to thank all the designers for helping me push myself to exceed. It is great to work with such talent around me. There is great synergy that comes with such surroundings. I hope this momentum for the Designer Group at O.C. Tanner will continually pick up speed into this year and into the future. &lt;span class="emphasis1"&gt;Thank you all again.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-8797029512322818579?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/8797029512322818579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=8797029512322818579' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/8797029512322818579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/8797029512322818579'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2009/02/2008-web-design-of-year.html' title='2008 Designs of the Year'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-1222407772322307072</id><published>2009-01-15T16:41:00.003-07:00</published><updated>2009-01-15T16:46:21.877-07:00</updated><title type='text'>Learning Actionscript 3.0</title><content type='html'>&lt;p&gt;Lately, I have been pushing myself to do more and more of my Flash Projects using &lt;span class="emphasis1"&gt;Actionscript 3.0&lt;/span&gt;. I know I am a bit behind climbing aboard, but learning new stuff is (I must admit) kinda scary. I am a designer by trade, but am not too afraid to learn new things. I try to keep up on the necessary technologies for my industry.&lt;/p&gt;
    &lt;p&gt;Now that the at least &lt;span class="emphasis2"&gt;Flash Player 9&lt;/span&gt; penetration is used in most browsers, corporations are more willing to publish AS3 code. This has been true for a little while now, but some companies are difficult to convince that the adoption rate for the newer players has exponentially gotten quicker and quicker. Now there are simply no more excuses not to learn the new technology; I simply must learn it.&lt;/p&gt;
    &lt;p&gt;I have been converting some &lt;span class="emphasis3"&gt;Actionscript 2.0&lt;/span&gt; code I wrote three years ago to parse through an XML file display the hundreds of products a user can choose from to order. The order is sent through a form using LoadVars. That experience was such a great learning experience for me that it boosted my confidence to continue forth learning more and more Actionscript. AS3 does such a better job at parsing XML. It is so fast and easy to use. Instead of iterating through each of the Child Nodes of the XML Object, you can access them directly using dot syntax. This  makes working with XML a breeze.&lt;/p&gt;
    &lt;p&gt;The learning curve for AS3 has been a little bitt of a &lt;span class="emphasis2"&gt;challenge&lt;/span&gt;, but coming from a good base &lt;span class="emphasis1"&gt;knowledge&lt;/span&gt; of AS2 has made it easier. Some designers have come up to me and asked if they should learn AS2 or just jump right into learning AS3. I am a little torn on the issue because I feel that AS2 was easier to learn the simple things such as button interaction and URL linking. Yet soon AS2 will be a thing of the past and they will eventually have to learn AS3 anyway. They are different enough that it is almost like learning a new language, although simple &lt;span class="emphasis3"&gt;programming&lt;/span&gt; concepts are the same such as loops and setting variables.&lt;/p&gt;
    &lt;p&gt;I love an article by &lt;span class="emphasis2"&gt;Collin Mook&lt;/span&gt; published  on &lt;em&gt;O’Reilly InsideRIA&lt;/em&gt; titled &amp;quot;&lt;a href="http://www.insideria.com/2008/07/the-charges-against-actionscri.html"&gt;The Charges against ActionScript 3.0&lt;/a&gt;.&amp;quot; It really nails many of the issues I was having with AS3. The biggest challenge I was running into was with his number 3, &amp;quot;Casting DisplayObject.parent makes controlling movie clips hard.&amp;quot; This is so true. Why wouldn't the player be able to recognize what type of Display Object it is, it should be implicit and already know, because it is a child of the parent. Parents should tell their Children about their ancestors (it is important to the Chinese) it should be the case for the Flash Player. You would think type casting would help with this, but it doesn't. To reference a parent you need to specify its type. For example, if it is a Sprite use: Sprite(parent). If it is a custom class even based on a Sprite you need to state the Class Type: MyCustomClass(parent). For backing up two levels the Class Type you need to reference is the one that is two levels back. Within the comments one writer wrote that he teaches his students not to even use parent at all in writing a program. I'm not sure how this could be done, unless everything resided in one Class. What would be the purpose of multiple classes then?&lt;/p&gt;
    &lt;p&gt;I will continually push forward on my AS3 skills and am &lt;span class="emphasis3"&gt;confident&lt;/span&gt; that it will pay off in the long run. I am tying to stay ahead of the curve. I don't know how designers that use Flash, HTML, and other such technologies can survive without understanding the capabilities out there they can design for. They are only hurting their own designs buy limiting their knowledge of the limitless possibilities yet to be discovered through technologies. I am a creator. I know no limits.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-1222407772322307072?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/1222407772322307072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=1222407772322307072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/1222407772322307072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/1222407772322307072'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2009/01/lately-i-have-been-pushing-myself-to-do.html' title='Learning Actionscript 3.0'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-7696857104601290263</id><published>2009-01-14T11:40:00.004-07:00</published><updated>2009-01-14T13:53:33.843-07:00</updated><title type='text'>Wacom Tablet in Photoshop</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://graphnickdesign.com/blog/uploaded_images/soccerPlayer-700724.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://graphnickdesign.com/blog/uploaded_images/soccerPlayer-700712.jpg" border="0" alt="" /&gt;&lt;/a&gt;

&lt;p&gt;I have had a bit of extra time lately to dabble around with the Wacom tablet (6" x 8"). This is something I have been wanting to do for a while now, and just never had the opportunity  to do it. Well, finally one became available at work, so I jumped on the chance to see how good it works. I must say not too shabby for my first time even picking up a Wacom pen.&lt;/p&gt;
&lt;p&gt;When I first picked up the pen I quickly realized that painting everything at 100% opacity with the airbrush simply was not going to work. The main benefit behind the Wacom pen is that it senses how hard you press and changes the opacity accordingly, but if you start out will full pressure, it is more difficult to &lt;span class="emphasis3"&gt;back-off&lt;/span&gt; from that pressure and not be able to blend colors together in the desired way. With a little patience and a few extra strokes, good results start to emerge.&lt;/p&gt;
    &lt;p&gt;Someone paid me a complement when I was accused of scanning in the image and manipulating it that way. They said that they have used the Wacom Tablet before and have never been able to get it to look that good. It does help to have a background in art. I do admit that I did &lt;span class="emphasis1"&gt;borrow&lt;/span&gt; the image from an Addias Ad, but for reference only. It allowed me to get proper proportions and such. &lt;/p&gt;
    &lt;p&gt;Once I was able to transfer the &lt;span class="emphasis3"&gt;proportions&lt;/span&gt; accurately, I went in and added the details with the brush. I enjoyed experimenting with different textures in the cloth and grass. The grass was fun as it came to life creating it with an almost scratch-board technique. With the benefit of Photoshop's different blending modes on the airbrush (Vivid Light in particular) I was able to easily pull the light out of the grass and add the convincing highlights. More experimentation helped me discover how to push the shadows deeper, carving the shapes to life.&lt;/p&gt;
    &lt;p&gt;The &lt;span class="emphasis2"&gt;skin-tones&lt;/span&gt; and texture I found to be a bit of a challenge, but hey it was my first time using the tablet; give me a bit of a break. If I had even more time I could push the picture a little, further, but I think I am satisfied with my first attempt at this exercise.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-7696857104601290263?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/7696857104601290263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=7696857104601290263' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/7696857104601290263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/7696857104601290263'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2009/01/wacom-tablet-in-photoshop.html' title='Wacom Tablet in Photoshop'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4075508897186367008.post-1579292138803822554</id><published>2008-07-23T19:39:00.000-07:00</published><updated>2008-07-27T17:54:32.456-07:00</updated><title type='text'>Flash and Web Design</title><content type='html'>&lt;p&gt;I have discovered a desire to not only design things to look pretty, but also function practically. Somewhere along this persuit of creativity I have become fond of the way programming functions logically. This culmination of form and logic has moved me to a love of Flash and Web Design&amp;mdash;namely the programming that goes behind the scenes. I am working up to the level of “Code Nazi” when it comes to &lt;span class="emphasis2"&gt;Actionscript&lt;/span&gt; and &lt;span class="emphasis2"&gt;HTML&lt;/span&gt;. I get a bit anal with how my code is generated. I don't trust layout programs such as &lt;span class="emphasis1"&gt;GoLive&lt;/span&gt; or &lt;span class="emphasis3"&gt;Dreamweaver&lt;/span&gt; to write all my code. Although, I must admit they are getting better with newer versions. &lt;/p&gt;
&lt;h3&gt;Flash and Actionscript&lt;/h3&gt;&lt;p&gt;Actionscript has come such a long way from the beginnings. My first version of Flash was v4. I quickly upgraded to Flash 5 when it came out. Actionscript was crude and had no real standards. It couldn't do a whole lot. Many people learned bad habits that I still see today. One of my biggest pet-peves of these habits is the attaching code to a button or movieclip using old depracated code to deliver an action.&lt;/p&gt;&lt;p&gt;As my learning of Actionscript continued, I learned some standards and good practices. I pushed myself to learn Actionscript 2.0. I had gotten pretty comfortable with this 2.0 language. When &lt;span class="emphasis1"&gt;Actionscript 3.0&lt;/span&gt; came out I became so involved with other projects that I only dabbled in it here and there. I simply kept with what I knew. And that worked for me. Now, I see more and more the benefits of using the robust 3.0 language (it parsing upwards of ten times faster than 2.0 in many cases), it time for me to &lt;span class="emphasis3"&gt;buckle&lt;/span&gt; down and learn the strict yet robust coding of this language. I know I will benefit from it in the future if I do.&lt;/p&gt;&lt;p&gt;I never used to see myself as a developer nor programmer. I am a designer that knows code. This is how many &lt;span class="emphasis1"&gt;Flashers&lt;/span&gt; have flourished. As Flash has progressed it has attracted more developers, but without good design it doesn't live up to what the viewer designers to use. It takes both strong design and programming development to really come up with something useful.&lt;/p&gt;&lt;p&gt;I have seen way too many Flash sites out there where the functionality simply makes no logical sense. Sure many sites look ok and are fun to play around with, but where is the practicality behind them? This seems to be the concensus on pieces entered in &lt;a href="http://www.commarts.com/Interactive/Interactive.Aspx"&gt;Communication Art's&lt;/a&gt; last year's &lt;span class="emphasis2"&gt;Interactive Annual&lt;/span&gt; competition. They simply are not practical in "real world" application.&lt;/p&gt;
&lt;h3&gt;Dreamweaver vs. GoLive&lt;/h3&gt;&lt;p&gt;Lately, I have been becoming more and more fond of the functionality of Dreamweaver. Even though I do find myself in code-view most of the time, the interface/design-view does a particularly decent job with formatting the code mostly the way you desire. The code is now kept much cleaner and easier to read when you go back to the code-view I despise working in another person’s code where “Best Practices” are fully ignored.&lt;/p&gt;&lt;p&gt;I have found that many designers prefer GoLive over Dreamweaver. I don't really understand why. Those whom I have spoken to usually like GoLive simply on the basis of that is all they know and don't want to learn new software. To me the interface really isn't that different. I used to use GoLive at work until we upgraded to CS3 which included Dreamweaver rather than GoLive in the suite. Most designers kept using the old GoLive on their machines, but I have found that new Dreamweaver is far superior. I have tested the new GoLive 9, but still like Dreamweaver CS3 better. It does make sense that Adobe drop GoLive altogether.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4075508897186367008-1579292138803822554?l=graphnickdesign.com%2Fblog' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/1579292138803822554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4075508897186367008&amp;postID=1579292138803822554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/1579292138803822554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4075508897186367008/posts/default/1579292138803822554'/><link rel='alternate' type='text/html' href='http://graphnickdesign.com/blog/2008/07/flash-and-web-design.html' title='Flash and Web Design'/><author><name>GraphNickDesign</name><uri>http://www.blogger.com/profile/05742721411714810257</uri><email>nick@graphnickdesign.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06383031939535795507'/></author><thr:total>0</thr:total></entry></feed>