<?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>Eric Schleeper</title>
	<atom:link href="http://www.ericschleeper.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ericschleeper.com</link>
	<description>Web Developer</description>
	<lastBuildDate>Mon, 07 Feb 2011 22:21:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Rustoleum</title>
		<link>http://www.ericschleeper.com/portfolio/rustoleum</link>
		<comments>http://www.ericschleeper.com/portfolio/rustoleum#comments</comments>
		<pubDate>Sat, 05 Feb 2011 18:01:43 +0000</pubDate>
		<dc:creator>ericschleeper</dc:creator>
				<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://www.ericschleeper.com/?p=244</guid>
		<description><![CDATA[Rustoleum Transformations Flash Virtual Cabinet and Countertops Rustoleum hired Vivid Ascent to make a microsite to promote a new product, Rustoleum Transformations, a treatment for cabinets and countertops. One of the features that Vivid Ascent wanted to include in the &#8230; <a href="http://www.ericschleeper.com/portfolio/rustoleum">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h4><strong>Rustoleum Transformations</strong><strong> </strong>Flash Virtual Cabinet and Countertops</h4>
<p>Rustoleum hired Vivid Ascent to make a microsite to promote a new product, Rustoleum Transformations, a treatment for cabinets and countertops. One of the features that Vivid Ascent wanted to include in the microsite, was an interactive tool to demonstrate combinations of different colors of the product. My job was to create this interactive tool based on functionality requirements and a design specification provided by Vivid Ascent. I was the sole developer of this tool and used ActionScript 3.0, php, and xml.</p>
<p><a title="Click here to see the site" href="http://cabinets.rustoleumtransformations.com/virtual-tool/#/kitchen1/" target="_blank">Click here to see the site</a></p>
<h4><a href="http://www.ericschleeper.com/wp-content/uploads/2011/02/rust-transform-full.jpg" rel="lightbox[244]"><img class="alignnone size-full wp-image-253" title="rust-transform" src="http://www.ericschleeper.com/wp-content/uploads/2011/02/rust-transform1.jpg" alt="" /></a></h4>
<p><span id="more-244"></span></p>
<h4><strong>Rustoleum Cabinet Transformations Product Line Includes 70 Different Colors-</strong> combine that with 5 different colors in the Rustoleum Coutertop Transformations, that is 350 different combinations of products</h4>
<p>To ensure the best look, the creative director at Vivid Ascent insisted that each example image was prepared in Photoshop. My biggest concern was file size, to keep this Flash tool lean, there could not be 350, or even 70 different full scale images in the library. So, the solution was to load images dynamically as needed.</p>
<h4><strong>Utilizes Browser History and Reload Buttons-</strong> when the page is shared, the recipient will receive a link that brings them to the page displaying the selection made by the sender</h4>
<p>Everytime the user changes the selected swatches, the hash value of the url is updated to reflect the new selection. If the user pushes the back button in the browser, the last selection made will be displayed.</p>
<p><a href="http://www.ericschleeper.com/wp-content/uploads/2011/02/rust-transform-full2.jpg" rel="lightbox[244]"><img class="alignnone size-full wp-image-260" title="rust-transform2" src="http://www.ericschleeper.com/wp-content/uploads/2011/02/rust-transform2.jpg" alt="" width="500" height="397" /></a></p>
<h4><strong>Functionality Requirements Included Ability to Print, Save and Email</strong> an image of the kitchen with selected product images applied</h4>
<p>If the user clicks print, their OS will open a dialogue box with print options, if the user clicks Save, their browser will open a dialogue box that will ask whether they want to save the image or open the image. If they click email, a simple form will slide up, the image will be sent as an attachment to the email address specified.</p>
<p>Tools I used while working on this:</p>
<ul>
<li>Flash CS3</li>
<li>FlashDevelop</li>
<li>ActionScript 3.0</li>
<li>PureMVC</li>
<li>Caurina Tweener</li>
<li>Bulkloader</li>
<li>SWFAddress</li>
<li>php</li>
<li>GD graphics library</li>
<li>SMTP / mailTo()</li>
<li>JavaScript (framework independent)</li>
<li>CSS</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ericschleeper.com/portfolio/rustoleum/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>University of Michigan Health System</title>
		<link>http://www.ericschleeper.com/portfolio/university-of-michigan-health-system</link>
		<comments>http://www.ericschleeper.com/portfolio/university-of-michigan-health-system#comments</comments>
		<pubDate>Sun, 21 Nov 2010 23:45:52 +0000</pubDate>
		<dc:creator>ericschleeper</dc:creator>
				<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://dev.ericschleeper.com/?p=182</guid>
		<description><![CDATA[CMS Integration I was part of the team that created this site in Fatwire University of Michigan Health Systems wanted to move their site off of a homegrown Coldfusion CMS into something with more features. They chose to have Element &#8230; <a href="http://www.ericschleeper.com/portfolio/university-of-michigan-health-system">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h4><strong>CMS Integration </strong>I was part of the team that created this site in Fatwire</h4>
<p>University of Michigan Health Systems wanted to move their site off of a homegrown Coldfusion CMS into something with more features. They chose to have Element 115 develop the site in Fatwire because we already have a lot of Fatwire code with features designed for a large Health-Care System like UMHS. I contributed all the CSS during development time. After the site was released to the public, the CSS was handed off to their internal developers. In addition to the CSS, I contributed a large amount of the JavaScript.</p>
<div id="attachment_183" class="wp-caption alignnone" style="width: 510px"><a href="http://dev.ericschleeper.com/wp-content/uploads/2010/11/umhome_full.jpg" rel="lightbox[182]"><img class="size-full wp-image-183 " title="umhome" src="http://dev.ericschleeper.com/wp-content/uploads/2010/11/umhome.jpg" alt="UMHS Home Page" width="500" height="419" /></a><p class="wp-caption-text">UMHS Home Page</p></div>
<h4><span id="more-182"></span><strong>During the Development of the Site, </strong>the team was also trying to improve the code base that is reused for other clients</h4>
<p>I was able to take all JavaScript off of the page and place it into external files. When the site was released there was nothing like &#8220;onclick=func();&#8221; anywhere on the page. Even better, all JavaScript was in namespaces / objects similiar to the new code that others had been developing. I also created CSS sprites.</p>
<h4><strong>UMHS Requires Their Site to Meet Accessibility Requirements</strong> UMHS received a grant that required us to develop a website that was accessible</h4>
<p>Developers at Element115 have spent years tweaking their code base to contain text equivalents for images, labels for lists and general good development for web standards. The HTML structure, particularly the order the content appears in the HTML is optimized to show content first, and utilities like the search bar and global navigation at the bottom, this way users with no CSS, screen readers or mobile devices will get the content first. A new feature that I contributed to the UMHS site was closer attention to CSS active states and focus states, and also tab-index. A user can easily navigate the site using the tab key. It is clear to the user what element has focus.</p>
<h4><strong>Find a Doctor</strong> History enabled Ajax application</h4>
<p>One of my first projects at Element 115 was work on the JavaScript for Find a Doctor. The other front end developers worked hard to create this search application that uses Ajax to refresh only part of the page. A search can be filtered and the results will update without a full page refresh. There was a problem though, some clients did not like that fact that the back button would not work. I have made history enabled Flash sites before, so I said that I was up to the challenge of making the back button work.</p>
<p><a title="Click here to experience this" href="http://www.uofmhealth.org/Find+a+Physician" target="_blank">Click here to experience this</a></p>
<p><a href="http://www.ericschleeper.com/wp-content/uploads/2011/02/find-a-doctor-full.jpg" rel="lightbox[182]"><img class="alignnone size-full wp-image-270" title="find-a-doctor" src="http://www.ericschleeper.com/wp-content/uploads/2011/02/find-a-doctor.jpg" alt="" width="500" height="605" /></a></p>
<p>Here is a little piece of the JavaScript that I am particularly proud of. My strategy was to keep all the name value pairs of all the form elements in the url behind the hash. We use the Prototype JavaScript library on these sites. To put the value in the url I use Form.serialize() to get name value pairs. When the new results come in, I need to make the values of the form elements match what is in the url. I was able to set the values of each form element, without hardcoding a single form element in the JavaScript. To do this, when the ajax oncomplete handler runs, this piece of JavaScript runs:</p>
<pre class="brush: javascript">

// hashParams is set to an object with name value pairs equal to the hash value of the url
var hashParams = SWFAddress.getValue().toQueryParams();
// loop through each input in the filter form
$(&#039;filter_form&#039;).select(&#039;input&#039;).each(function(element){
	// see if the object has this value
	if(hashParams[element.name]){
		// set the value of the form element equal to this
		element.value=hashParams[element.name];
	}
});
</pre>
<p>Tools I used while working on this:</p>
<ul>
<li>Eclipse / Aptana</li>
<li>SVN</li>
<li>JavaScript (prototype / script.aculo.us)</li>
<li>CSS (sprites)</li>
<li>JSP</li>
<li>Photoshop CS4</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ericschleeper.com/portfolio/university-of-michigan-health-system/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gogo Inflight Internet</title>
		<link>http://www.ericschleeper.com/portfolio/gogo-inflight-internet</link>
		<comments>http://www.ericschleeper.com/portfolio/gogo-inflight-internet#comments</comments>
		<pubDate>Sat, 20 Nov 2010 01:48:13 +0000</pubDate>
		<dc:creator>ericschleeper</dc:creator>
				<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://dev.ericschleeper.com/?p=162</guid>
		<description><![CDATA[Email Marketing I worked freelance on and off over the course of a year developing Email marketing materials for the Gogo Inflight Internet product owned by Aircell The campaign has a reach of almost 300,000 contacts and is managed through &#8230; <a href="http://www.ericschleeper.com/portfolio/gogo-inflight-internet">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h4><strong>Email Marketing</strong> I worked freelance on and off over the course of a year developing Email marketing materials for the Gogo Inflight Internet product owned by Aircell</h4>
<p>The campaign has a reach of almost 300,000 contacts and is managed through the powerful marketing automation software Eloqua.</p>
<div id="attachment_167" class="wp-caption alignnone" style="width: 510px"><a href="http://dev.ericschleeper.com/wp-content/uploads/2010/11/email_full.jpg" rel="lightbox[162]"><img class="size-full wp-image-167 " title="email" src="http://dev.ericschleeper.com/wp-content/uploads/2010/11/email.jpg" alt="Gogo Inflight Internet Email" width="500" height="397" /></a><p class="wp-caption-text">Gogo Inflight Internet Email</p></div>
<p><span id="more-162"></span></p>
<h4><strong>Eloqua Allows Contacts to be Placed in Different Groups to Target Each Individually</strong> Aircell offers different types of promotions to different contacts based on past purchases</h4>
<p>There are many challenges involved with developing HTML emails. Design Specs were created by a local Interactive Marketing and Aircell was expecting the emails to look like the design spec across all email clients. Now, I thought developing for all the different web browsers was tough, this is an entirely different story.</p>
<h4><strong>When Creating HTML Emails </strong>it is important to make all the information accessible if the sender views the email without images.</h4>
<p>Luckily the design studio understood this and created designs that made it possible to use text for the copy. If a recipient viewed the email with no images, they would still see all the copy, and also see all the links.</p>
<div id="attachment_175" class="wp-caption alignnone" style="width: 510px"><a href="http://dev.ericschleeper.com/wp-content/uploads/2010/11/landing_p_somemessages_full.jpg" rel="lightbox[162]"><img class="size-full wp-image-175     " title="landing_p_somemessages" src="http://dev.ericschleeper.com/wp-content/uploads/2010/11/landing_p_somemessages.jpg" alt="Landing Page" width="500" height="252" /></a><p class="wp-caption-text">Gogo Inflight Landing Page</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ericschleeper.com/portfolio/gogo-inflight-internet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting the domain name of the page displaying the swf</title>
		<link>http://www.ericschleeper.com/deving/getting-the-domain-name-of-the-page-displaying-the-swf</link>
		<comments>http://www.ericschleeper.com/deving/getting-the-domain-name-of-the-page-displaying-the-swf#comments</comments>
		<pubDate>Wed, 05 Aug 2009 18:40:41 +0000</pubDate>
		<dc:creator>ericschleeper</dc:creator>
				<category><![CDATA[Deving]]></category>

		<guid isPermaLink="false">http://www.ericschleeper.com/?p=86</guid>
		<description><![CDATA[I was recently involved with a project that required tracking links from a Flash widget marketing campaign. The problem is, that Flash player does not send the referer in the header or allow the referer to be set programatically. So &#8230; <a href="http://www.ericschleeper.com/deving/getting-the-domain-name-of-the-page-displaying-the-swf">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was recently involved with a project that required tracking links from a Flash widget marketing campaign. The problem is, that Flash player does not send the referer in the header or allow the referer to be set programatically. So the solution is to set up a campaign that includes the referer as a GET string in the url. So, how do you get the domain name of the page that the Flash is embedded on? Well a good way is to use the ExternalInterface class. Like this:</p>
<pre class="brush: javascript">

referer = ExternalInterface.call(&#039;eval&#039;, &#039;window.location.hostname&#039;);
</pre>
<p>Then you just concat the referer var onto the end of your URLrequests. Simple right? Not quite. See, the client was encouraging their associates to put the widget onto social networking sites and personal blogs. Well apparently many of these sites strip out the allowScriptAccess=&#8217;always&#8217; param of the embed/object tags. So Flash Player would pop up a screen that says:</p>
<p>ActionScript Security Error 2060: Security sandbox violation: ExternalInterface caller http://www.whateverdomain.com/whatever.swf<br />
cannot access</p>
<p>http://www.whateverotherdomain.com/</p>
<p>So, what&#8217;s the fix?</p>
<p><span id="more-86"></span></p>
<p>I was able to work around this by using a try/catch block. I caught the security error and ran a couple string.split()&#8217;s:</p>
<pre class="brush: javascript">

var referer:String;

try
{
referer = ExternalInterface.call(&#039;eval&#039;, &#039;window.location.hostname&#039;);
}
// We can get the domain name out of the Security Violation error message
catch (e:SecurityError)
{
trace(e);
// just run some string.split&#039;s and we got it
var splitter:Array = emessage.split(&#039;//&#039;);
if (splitter.length &gt; 2)
{
var splitter2:Array = splitter[2].split(&#039;/&#039;);
referer = splitter2[0];
}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ericschleeper.com/deving/getting-the-domain-name-of-the-page-displaying-the-swf/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working with the Flex consumer class and datagrids</title>
		<link>http://www.ericschleeper.com/deving/working-with-the-flex-consumer-class-and-datagrids</link>
		<comments>http://www.ericschleeper.com/deving/working-with-the-flex-consumer-class-and-datagrids#comments</comments>
		<pubDate>Thu, 21 May 2009 00:20:17 +0000</pubDate>
		<dc:creator>ericschleeper</dc:creator>
				<category><![CDATA[Deving]]></category>

		<guid isPermaLink="false">http://www.ericschleeper.com/?p=76</guid>
		<description><![CDATA[I was recently working on a Flex app that showed delayed stock quotes and charts. The client was using Blaze DS on the backend. It is one of the best ways to hook Flash/Flex to a data source and absolutely &#8230; <a href="http://www.ericschleeper.com/deving/working-with-the-flex-consumer-class-and-datagrids">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was recently working on a Flex app that showed delayed stock quotes and charts. The client was using Blaze DS on the backend. It is one of the best ways to hook Flash/Flex to a data source and absolutely perfect for this project. We were using the consumer class in Flex and once the subscribe method was called, new poll results were coming in every second. The poll results were in the form of an array collection and were displayed in multiple datagrids nested inside containers behind a TabNavigator and others in an Accordion.</p>
<p>I pulled these controls into seperate components and used binding to get the data to &#8220;trickle&#8221; down into the controls. The Accordion had four different panes, each with a datagrid, and each had a different filter for the data. Easy, assign a filter function and call the refresh function on the accordion change event.</p>
<p>The problem that we ran into was that we were losing our selected item in the datagrid every time new poll results came in. What I found to be the best solution: Create a variable that holds the value of the selected index of the datagrid. Assign it when the change event is triggered. Then create a setter for the array collection and assign the selected index of the datagrid to the value of the variable that holds your selectedIndex.</p>
<p>Click through to see the code.</p>
<p><span id="more-76"></span></p>
<pre class="brush: javascript">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Canvas xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;
show=&quot;initGrid()&quot; width=&quot;100%&quot;&gt;
&lt;mx:Script&gt;

&lt;![CDATA[
import mx.collections.ArrayCollection;
import mx.events.ListEvent;

/*
* Accessor here keeps the right index selected
*/
[Bindable]
public var _dataForAccordion:ArrayCollection = new ArrayCollection();

[Bindable]
public function set dataForAccordion(val:ArrayCollection):void
{
if (dataGrid != null ) {
this._dataForAccordion = val;
dataGrid.selectedIndex = this.selectedItem;
}
}
public function get dataForAccordion():ArrayCollection
{
return this._dataForAccordion;
}

/*
* Other vars
*/
private var selectedItem:int = 0;

/*
* This causes the first item in the datagrid to be selected
* when it is first displayed
*/
public function initGrid():void
{
dataGrid.selectedIndex = this.selectedItem;
}
/*
* This function commits a selection on a DataGird rollover
*/
private function handleRollOver(event:ListEvent):void
{
this.selectedItem = event.rowIndex;
event.target.selectedIndex = event.rowIndex;
}

]]&gt;

&lt;/mx:Script&gt;
&lt;mx:DataGrid id=&quot;dataGrid&quot; itemRollOver=&quot;handleRollOver(event)&quot;
width=&quot;468&quot; height=&quot;210&quot; dataProvider=&quot;{_dataForAccordion}&quot; &gt;
&lt;mx:columns&gt;
&lt;mx:DataGridColumn dataField=&quot;property1&quot;
width=&quot;45&quot; headerText=&quot;property1&quot;/&gt;

&lt;mx:DataGridColumn dataField=&quot;property2&quot;
width=&quot;45&quot; headerText=&quot;property2&quot;/&gt;

&lt;mx:DataGridColumn dataField=&quot;property3&quot;
width=&quot;45&quot; headerText=&quot;property3&quot;/&gt;

&lt;mx:DataGridColumn dataField=&quot;property4&quot;
width=&quot;45&quot; headerText=&quot;property4&quot;/&gt;
&lt;/mx:columns&gt;
&lt;/mx:DataGrid&gt;
&lt;/mx:Canvas&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ericschleeper.com/deving/working-with-the-flex-consumer-class-and-datagrids/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More new things&#8230;</title>
		<link>http://www.ericschleeper.com/none/more-new-things</link>
		<comments>http://www.ericschleeper.com/none/more-new-things#comments</comments>
		<pubDate>Wed, 18 Mar 2009 19:20:07 +0000</pubDate>
		<dc:creator>ericschleeper</dc:creator>
				<category><![CDATA[none]]></category>

		<guid isPermaLink="false">http://www.ericschleeper.com/?p=32</guid>
		<description><![CDATA[This week I started working on a new Flash/Flex based application that allows users to create a playlist, upload songs, put the songs in a playlist, and then be able to embed the Music Player on their blog/myspace/website etc&#8230; http://www.mymusicplayer.ericschleeper.com/ &#8230; <a href="http://www.ericschleeper.com/none/more-new-things">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This week I started working on a new Flash/Flex based application that allows users to create a playlist, upload songs, put the songs in a playlist, and then be able to embed the Music Player on their blog/myspace/website etc&#8230;</p>
<p><a href="http://www.mymusicplayer.ericschleeper.com/">http://www.mymusicplayer.ericschleeper.com/</a></p>
<p>This is actually three swf&#8217;s that connect to the same AMFPHP gateway. One is a fairly secure login/account create page, one is the admin page, and the last is the actual player.<br />
To see more and download some of the source code, keep reading</p>
<p><span id="more-32"></span><br />
The login page connects to the gateway and checks the user name to the password. If there is a match, the password is encrypted into a session variable and the user&#8217;s email address is stored in a session variable and the admin page loads.</p>
<p>I created the admin page with the Flex 3 SDK and a sweet text editor called Flash Develop. Flash Develop is an open source project and it also makes a great editor for Flash projects because it has Visual Studio-esque intellisense. So there are less typing errors and I can immediately tell if a variable or method was not initialized properly or if it is out of scope. Even for my custom classes. Plus it imports classes as you type. This makes programming faster and easier.</p>
<p><a href="http://www.ericschleeper.com/flex_samples/musicplayeradmin.zip">Click here to download the source of the admin page</a></p>
<p>These are log in credentials with filler data:<br />
email: jim@morrison.com<br />
password: thedoors</p>
<p>The DB is normalized and relational, but fairly simple. A user has many songs and many playlists, but songs can be on multiple playlists so there is a play lists to songs table. Also, the HTML page contains an Iframe where the upload page is, and an AJAX (prototype.js) call to display the player. This makes it so the page never refreshes.<br />
The actually player is kind of sort of simple. I am using MVC in a similar manor I have used in the past (See my code section). All that the embed code has is a Flash variable that holds the id of the playlist. The php contains a select statement with a join to return URL&#8217;s and Song Names based on the playlist number. The actual player is the place I have the most work remaining, it is a little bit buggy and could use better design elements and functionality. I also plan on making more players and the user can pick which player they would like to use.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericschleeper.com/none/more-new-things/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New things&#8230;</title>
		<link>http://www.ericschleeper.com/none/new-things</link>
		<comments>http://www.ericschleeper.com/none/new-things#comments</comments>
		<pubDate>Mon, 16 Mar 2009 17:37:38 +0000</pubDate>
		<dc:creator>ericschleeper</dc:creator>
				<category><![CDATA[none]]></category>

		<guid isPermaLink="false">http://www.ericschleeper.com/?p=20</guid>
		<description><![CDATA[I&#8217;ve been busy with some things for Goose Dog Designs. We are excited about the next launch of Cerqua Rivera Dance Theatre&#8217;s new site. They were very happy with what we gave them at the end of 2008 that they &#8230; <a href="http://www.ericschleeper.com/none/new-things">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been busy with some things for Goose Dog Designs. We are excited about the next launch of Cerqua Rivera Dance Theatre&#8217;s new site. They were very happy with what we gave them at the end of 2008 that they wanted some more features and content. My new app uses MVC design. A sneak peak can be seen here:</p>
<p><a href="http://www.cerquarivera.org/revamp/">http://www.cerquarivera.org/revamp</a></p>
<p>Also, I created a music mashup site that uses the MTV content API, the lyrics fly API, and Amazon Web Associates API. I got some design help from a friend and we are happy with what we made. I am using WordPress for about 50% of the backend. However I am completely overriding the admin page and creating posts from Flash. Unfortunately, I just found out that MTV decided to remove the part of their API that returns the embed code for the video. A few weeks ago I noticed that it wasn&#8217;t working right, then it was working right again. So I don&#8217;t know what the future of this site will be..</p>
<p><a href="http://www.videodelite.com/">http://www.videodelite.com/</a></p>
<p>Also, I have been doing some spec work for a photographer. I created a php site with an admin page that uses flex. The page is fairly simple:</p>
<p><a href="http://www.ericschleeper.com/visexpressdev/">http://www.ericschleeper.com/visexpressdev/</a></p>
<p>but my admin page uses Flex with remoting to php and it even looks up maps on Google Maps API.</p>
<p><a href="http://www.ericschleeper.com/visexpressdev/admin.html">http://www.ericschleeper.com/visexpressdev/admin.html</a></p>
<p>To work on my design skills I made a &#8220;fake&#8221; gourmet food store:</p>
<p><a href="http://www.gourmetfood.ericschleeper.com/">http://www.gourmetfood.ericschleeper.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericschleeper.com/none/new-things/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>code.ericschleeper.com</title>
		<link>http://www.ericschleeper.com/none/codeericschleepercom</link>
		<comments>http://www.ericschleeper.com/none/codeericschleepercom#comments</comments>
		<pubDate>Sun, 08 Feb 2009 22:32:56 +0000</pubDate>
		<dc:creator>ericschleeper</dc:creator>
				<category><![CDATA[none]]></category>

		<guid isPermaLink="false">http://www.ericschleeper.com/?p=18</guid>
		<description><![CDATA[I created this page as a place to store a template for my Flash Projects. I have been using Model View Controller and I have quickly found that I am writing a lot of the same things over. Whenever i &#8230; <a href="http://www.ericschleeper.com/none/codeericschleepercom">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I created this page as a place to store a template for my Flash Projects. I have been using Model View Controller and I have quickly found that I am writing a lot of the same things over. Whenever i start a new project I begin by opening up old ones and stripping things out and changing things around and looking in the nerd bible to remember how/why I did something a certain way. Instead, I now have a zipped file in the subdomain that is a great starting point for a Flash app. I made these available for anyone and I have some explanation on how they work and how to implement them. My latest experiment involves putting a factory on a composite view. I have been doing this a lot on this project I have been wokring on and found it to be very effective. I plan on adding some more, like a basic MVC app that connects to an AMFPHP gateway. Please take a look:</p>
<p><a href="http://www.code.ericschleeper.com">http://www.code.ericschleeper.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericschleeper.com/none/codeericschleepercom/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Observer Pattern in Actionscript 3</title>
		<link>http://www.ericschleeper.com/deving/simple-observer-pattern-in-actionscript-3</link>
		<comments>http://www.ericschleeper.com/deving/simple-observer-pattern-in-actionscript-3#comments</comments>
		<pubDate>Sun, 08 Feb 2009 19:06:06 +0000</pubDate>
		<dc:creator>ericschleeper</dc:creator>
				<category><![CDATA[Deving]]></category>

		<guid isPermaLink="false">http://www.ericschleeper.com/?p=6</guid>
		<description><![CDATA[I was just posting on a forum on kirupa.com that started with someone asking about how to listen for a variable to change values. I thought about how this is a key part of the MVC design so I wrote &#8230; <a href="http://www.ericschleeper.com/deving/simple-observer-pattern-in-actionscript-3">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was just posting on a forum on kirupa.com that started with someone asking about how to listen for a variable to change values. I thought about how this is a key part of the MVC design so I wrote a couple classes and posted them. After I did this I realized that it was most likely a good example of the observer pattern and after consulting my newest nerd bible I realized that I had it down, except for implementing the interfaces.</p>
<p><a href="http://www.kirupa.com/forum/showthread.php?t=316482">Click Here to See the Thread on kirupa.com</a></p>
<p>Anyways I thought I would post these classes here.</p>
<p><span id="more-6"></span><br />
This is the Subject Class:</p>
<pre class="brush: javascript">
package
{
import flash.events.*;
public class Subject extends EventDispatcher
{
private var yourVariable:String;
public function getYourVariable():String
{
return yourVariable;
}
public function setYourVariable(newOne:String):void
{
yourVariable = newOne;
this.update();
}
protected function update():void
{
dispatchEvent(new Event(Event.CHANGE));
}
}
}
</pre>
<p>This is the Subscriber Class:</p>
<pre class="brush: javascript">

package
{
import flash.events.*;
public class Subscriber
{
private var variableHolder:VariableHolder;
private var theOneInTheHolder:String;
//this will take the VariableHolder as a parameter when instantiated
public function Subscriber(vHolder:VariableHolder)
{
this.variableHolder = vHolder;
}
public function update(event:Event = null):void
{
theOneInTheHolder = variableHolder.getYourVariable();
trace(theOneInTheHolder);
}
}
}
</pre>
<p>The next code is what goes on the timeline, After you build it the output will say:<br />
new Variable<br />
new Variable<br />
new Variable2<br />
new Variable2</p>
<pre class="brush: javascript">

import VariableHolder;
import ListensForEvent;

var theHolder:VariableHolder = new VariableHolder();

var listener1:ListensForEvent = new ListensForEvent(theHolder);
theHolder.addEventListener(Event.CHANGE, listener1.update);

var listener2:ListensForEvent = new ListensForEvent(theHolder);
theHolder.addEventListener(Event.CHANGE, listener2.update);

theHolder.setYourVariable(’new Variable’);
theHolder.setYourVariable(’new Variable2′);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ericschleeper.com/deving/simple-observer-pattern-in-actionscript-3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Singleton Pattern Actionscript Music Player</title>
		<link>http://www.ericschleeper.com/deving/singleton-pattern-actionscript-music-player</link>
		<comments>http://www.ericschleeper.com/deving/singleton-pattern-actionscript-music-player#comments</comments>
		<pubDate>Sun, 08 Feb 2009 19:04:00 +0000</pubDate>
		<dc:creator>ericschleeper</dc:creator>
				<category><![CDATA[Deving]]></category>

		<guid isPermaLink="false">http://www.ericschleeper.com/?p=4</guid>
		<description><![CDATA[A designer I do some work for hired me to make a Music Player for a Flash web page. The requirements were to have the page start playing a song from frame 1 of the time line while an intro &#8230; <a href="http://www.ericschleeper.com/deving/singleton-pattern-actionscript-music-player">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A designer I do some work for hired me to make a Music Player for a Flash web page. The requirements were to have the page start playing a song from frame 1 of the time line while an intro animation was playing. After the animation, there would be a button that allowed the user to play and pause a song. I chose to use the Singleton Design Pattern because frame one of the time line could create the instance, then a MovieClip Symbol could get the same instance later and call its functions without anything strange occurring (like the song playing again, while the first song played, also). The code is in the rest of the entry.</p>
<p><span id="more-4"></span>
<pre class="brush: js">
package {
import flash.net.URLRequest;
import flash.media.*;
import flash.events.Event;

public class MusicPlayer
{
private var soundReq:URLRequest;
private var sound:Sound;
private var soundControl:SoundChannel;
private var isPlaying:Boolean;

private static var _instance:MusicPlayer;

public function MusicPlayer(pvt:PrivateClass)
{
}

public static function getInstance():MusicPlayer
{
if(MusicPlayer._instance == null)
{
MusicPlayer._instance = new MusicPlayer(new PrivateClass);
}
return MusicPlayer._instance;
}

public function startMusic():void
{
sound = new Sound();
soundReq = new URLRequest(&quot;sounds/song.mp3&quot;)
sound.load(soundReq);
soundControl = sound.play();
isPlaying = true;
soundControl.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
}
public function handleClick():String
{
var pausePosition:int = soundControl.position;

if(isPlaying == true)
{
soundControl.stop();
isPlaying = false;
return &#039;play&#039;;
}
else
{
soundControl = sound.play(pausePosition);
soundControl.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
isPlaying = true;
return &#039;pause&#039;;
}

}
private function soundCompleteHandler(e:Event):void
{
// this makes the song play again from the beginning
soundControl = sound.play(0);
soundControl.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
isPlaying = true;
}

}
}

class PrivateClass
{
public function PrivateClass()
{
//trace(&#039;Music Player initialized&#039;);
}
}
</pre>
<p>To use this, all you need to do first is get it and start the music:<br />
var musicPlayer:MusicPlayer;<br />
musicPlayer = MusicPlayer.getInstance();<br />
musicPlayer.startMusic();<br />
And then from anywhere else you can get it by using:</p>
<p>var musicPlayer:MusicPlayer;<br />
musicPlayer = MusicPlayer.getInstance();<br />
var whatWillItDoNextTimeICallhandleClick:String = musicPlayer.handleClick();</p>
<p>You can use this code for your own personal growth and feel free to leave a comment!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericschleeper.com/deving/singleton-pattern-actionscript-music-player/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

