<?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>Binary Neuron L.L.C &#187; ActionScript 3</title>
	<atom:link href="http://binaryneuron.com/category/actionscript-3/feed/" rel="self" type="application/rss+xml" />
	<link>http://binaryneuron.com</link>
	<description>Online Portfolio and Blog for Jeremy Wischusen</description>
	<lastBuildDate>Tue, 13 Sep 2011 11:59:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Professional Cairngorm</title>
		<link>http://binaryneuron.com/2009/09/23/professional-cairngorm/</link>
		<comments>http://binaryneuron.com/2009/09/23/professional-cairngorm/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 13:39:48 +0000</pubDate>
		<dc:creator>Jeremy Wischusen</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Application Design and Architecture]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Cairngorm]]></category>
		<category><![CDATA[Wiley]]></category>

		<guid isPermaLink="false">http://visualflowdesigns.com/?p=359</guid>
		<description><![CDATA[So since you can now find this via a Google search, I am guessing it is OK to release to the general public. Here is the book I wrote on using the Cairngorm Framework with Flex. http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470497262.html]]></description>
			<content:encoded><![CDATA[<p>So since you can now find this via a Google search, I am guessing it is OK to release to the general public. Here is the book I wrote on using the Cairngorm Framework with Flex.<br />
<a href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470497262.html">http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470497262.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://binaryneuron.com/2009/09/23/professional-cairngorm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expanding All Tree Nodes</title>
		<link>http://binaryneuron.com/2009/01/23/expanding-all-tree-nodes/</link>
		<comments>http://binaryneuron.com/2009/01/23/expanding-all-tree-nodes/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 16:51:58 +0000</pubDate>
		<dc:creator>Jeremy Wischusen</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[DHTML]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[expand all]]></category>
		<category><![CDATA[Tree]]></category>

		<guid isPermaLink="false">http://visualflowdesigns.com/2009/01/23/expading-all-tree-nodes/</guid>
		<description><![CDATA[I am working on a project that requires the data provider for a tree component to be reloaded periodically. When I would reload the data, the tree would revert to it&#8217;s collapsed state. From a usability point of view, this was not the best of situations. So I started doing some research how to expand [...]]]></description>
			<content:encoded><![CDATA[<p>I am working on a project that requires the data provider for a tree component to be reloaded periodically. When I would reload the data, the tree would revert to it&#8217;s collapsed state. From a usability point of view, this was not the best of situations. So I started doing some research how to expand all of the nodes in a tree. I came across of a couple of places using loops such as:</p>
<blockquote><p> private function expandTree():void{<br />
                        for (var i:int = 0; i < thisTree.dataProvider.length; i ++){<br />
                                thisTree.expandChildrenOf(thisTree.dataProvider[i], true)<br />
                        }<br />
                }<br />
                private function collapseTree():void{<br />
                        for (var i:int = 0; i < thisTree.dataProvider.length; i ++){<br />
                                thisTree.expandChildrenOf(thisTree.dataProvider[i], false)<br />
                        }<br />
                } </p>
</blockquote>
<p>When looking at this, I noticed the name of the function is expandChildrenOf, which to me inferred it would expand all of the children of the given node. So I looked into a bit further and the description for this function in the documentation states (http://livedocs.adobe.com/flex/2/langref/mx/controls/Tree.html#expandChildrenOf()):</p>
<blockquote><p>expandChildrenOf	()	method<br />
public function expandChildrenOf(item:Object, open:Boolean):void</p>
<p>Opens or closes all the tree items below the specified item.<br />
Parameters<br />
	item:Object — the starting item</p>
<p>	open:Boolean — toggles an open or close operation </p>
</blockquote>
<p>So if that is the case and I pass this function the root node of the dataProvider such as in the following:</p>
<blockquote><p>this.myTree.expandChildrenOf(this.myTree.dataProvider[0],true);</p>
</blockquote>
<p>It did as expected and expanded all of the nodes under the root node. No loop required. </p>
]]></content:encoded>
			<wfw:commentRss>http://binaryneuron.com/2009/01/23/expanding-all-tree-nodes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tween Sequencer</title>
		<link>http://binaryneuron.com/2008/09/04/tween-squencer/</link>
		<comments>http://binaryneuron.com/2008/09/04/tween-squencer/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 16:57:56 +0000</pubDate>
		<dc:creator>Jeremy Wischusen</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Open Source Projects]]></category>

		<guid isPermaLink="false">http://visualflowdesigns.com/?p=177</guid>
		<description><![CDATA[Many of the projects I have done have included creating some sort of repeating sequence of tweens. In my early projects I would trigger the next tween using the finished event for each tween. This sucked. So recently I had some time and decided to take a crack at creating a tween sequencing class. Basic [...]]]></description>
			<content:encoded><![CDATA[<p>Many of the projects I have done have included creating some sort of repeating sequence of tweens. In my early projects I would trigger the next tween using the finished event for each tween. This sucked.</p>
<p>So recently I had some time and decided to take a crack at creating a tween sequencing class. Basic idea being that I add a sequence of tweens to a object and then just call a start function to trigger the sequence.</p>
<p>My first idea was to create a collection of tween objects and store references to them in an array. This led me to com up with this:</p>
<blockquote><p>package com.vfd.animation.tweens{<br />
import fl.transitions.TweenEvent;<br />
import fl.transitions.Tween;<br />
public class TweenSequencer {<br />
private var _tweens:Array=new Array  ;</p>
<p>private var index:Number=0;<br />
public var loop:Boolean=false;<br />
public function TweenSequencer() {<br />
trace(&#8220;New Tween Sequencer&#8221;);<br />
}<br />
public function addTween(tween:Tween):void {<br />
tween.stop();<br />
tween.addEventListener(TweenEvent.MOTION_FINISH,nextTween);<br />
this._tweens.push(tween);<br />
}<br />
public function removeTween(tween:Tween):void {<br />
for (var i:Number=0; i &lt; this._tweens.length; i++) {<br />
if (this._tweens[i] == tween) {<br />
this._tweens[i].removeEventListener(TweenEvent.MOTION_FINISH,nextTween);<br />
this._tweens.splice(i,1);<br />
break;<br />
}<br />
}<br />
}<br />
public function start():void {<br />
this.startTween();<br />
}<br />
public function stop():void {<br />
this.pause();<br />
this.reset();<br />
}<br />
public function pause():void {<br />
if (this._tweens[this.index]) {<br />
this._tweens[this.index].stop();<br />
}<br />
}<br />
private function nextTween(event:TweenEvent):void {<br />
trace(&#8220;Index before &#8221; + this.index);<br />
trace(&#8220;Loop : &#8221; + this.loop);<br />
this.index++;<br />
if (this.loop &amp;&amp; this.index &gt;= this._tweens.length) {<br />
this.reset();<br />
}<br />
trace(&#8220;Index after &#8221; + this.index);<br />
this.startTween();</p>
<p>}<br />
private function startTween() {<br />
if (this._tweens[this.index]) {<br />
this._tweens[this.index].play();<br />
} else {<br />
this.reset();<br />
}<br />
}<br />
private function reset():void {<br />
this.index=0;<br />
}<br />
}//end class<br />
}//end package</p></blockquote>
<p>The basic idea worked, but I ran into a couple of problems. I was testing this with a basic ball. I placed the ball in the top right corner of the screen. Every time I ran the thing it would play the tweens in the correct sequence, but the ball always started in the bottom right corner of the screen making the first run through the sequence incorrect. However, after the first run through it played as expected.</p>
<p>This took me a while to figure out, but as it turns out that when I created the tweens, even though I immediately stopped them, it was setting the properties of the ball to the start values of the second set of tweens that were applied to the x and y coordinates.</p>
<p>I tried all sorts of variations including writing my own tween class that overrode the starting behaviors of the standard tween class and I still ended up with the same results (though it is entirely possible that I missed something simple).</p>
<p>I did turn out that if I explicitly set the x and y coordinates of the clip after creating the tweens, it worked as expected. However, I was only testing with many tweens applied to one object. If I was applying tweens to multiple objects I would have to reset all of them and having to explicitly set the coordinates defeated the purposes of placing them on the stage where I wanted them to begin with. Additionally, I ran into this problem with tweens applied to x and y, but if there are other properties that behaved the same way, I would have to reset those as well. This class was intended to make this process sequencing tweens easier, not simply introduce a new set of headaches.</p>
<p>After some time I came up with the idea of using a single tween inside of the sequencer class. Instead of storing multiple tween instances, I would just store sequence of properties and values that I wanted to tween an update the single tween instance. this would keep the tweens property settings from conflicting with one another and throwing the sequence off. This lead to:</p>
<blockquote><p>package com.vfd.animation.tweens{<br />
import fl.transitions.TweenEvent;<br />
import fl.transitions.Tween;<br />
import flash.display.Sprite;<br />
public class TweenSequencer {<br />
private var _tweens:Array=new Array();<br />
private var tween:Tween;<br />
private var index:Number=0;<br />
public var loop:Boolean=false;<br />
private var placeHolderSprite:Sprite   = new Sprite();<br />
public function TweenSequencer() {<br />
trace(&#8220;New Tween Sequencer&#8221;);<br />
this.tween = new fl.transitions.Tween(this.placeHolderSprite,&#8221;alpha&#8221;,null,1,1,1,true);<br />
this.tween.stop();<br />
this.tween.addEventListener(TweenEvent.MOTION_FINISH,nextTween);<br />
}<br />
public function addTween(obj:Object, prop:String, easing:Function, begin:Number, end:Number, duration:Number, useSeconds:Boolean = false):void {<br />
this._tweens.push(arguments);<br />
}<br />
public function start():void {<br />
this.startTween();<br />
}<br />
public function stop():void {<br />
this.tween.rewind();<br />
this.reset();<br />
}<br />
public function pause():void {<br />
this.tween.stop();<br />
}<br />
private function nextTween(event:TweenEvent):void {<br />
this.index++;<br />
if (this.loop &amp;&amp; this.index &gt;= this._tweens.length) {<br />
this.reset();<br />
}<br />
this.startTween();</p>
<p>}<br />
private function startTween() {<br />
this.tween.stop();<br />
if (this._tweens[this.index]) {<br />
this.tween.obj = this._tweens[this.index][0];<br />
this.tween.prop = this._tweens[this.index][1];<br />
if (this._tweens[this.index][2] is Function) {<br />
this.tween.func = this._tweens[this.index][2];<br />
}<br />
this.tween.begin = this._tweens[this.index][3];<br />
this.tween.finish = this._tweens[this.index][4];<br />
this.tween.duration = this._tweens[this.index][5];<br />
this.tween.useSeconds = this._tweens[this.index][6];<br />
this.tween.start();<br />
} else {<br />
this.reset();<br />
}<br />
}<br />
private function reset():void {<br />
this.index=0;<br />
}<br />
public function reverse() {<br />
this._tweens.reverse();<br />
}<br />
}//end class<br />
}//end package</p></blockquote>
<p>So now this:</p>
<blockquote><p>import com.vfd.animation.tweens.TweenSequencer;<br />
var ts:TweenSequencer = new TweenSequencer();<br />
ts.loop = true;<br />
ts.addTween(ball, &#8220;alpha&#8221;, null, 0,1,2,true);<br />
ts.addTween(ball, &#8220;x&#8221;, null, 130,300,2,true);<br />
ts.addTween(ball, &#8220;y&#8221;, null, 130,300,2,true);<br />
ts.addTween(ball, &#8220;x&#8221;, null, 300,130,2,true);<br />
ts.addTween(ball, &#8220;y&#8221;, null, 300,130,2,true);<br />
ts.addTween(ball, &#8220;alpha&#8221;, null, 1,0,2,true);<br />
ts.start();</p></blockquote>
<p>Produces this:</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_tweenSquencer_850712634"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="http://www.visualflowdesigns.com/flash/tweenSquencer.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.visualflowdesigns.com/flash/tweenSquencer.swf"
			name="fm_tweenSquencer_850712634"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://binaryneuron.com/2008/09/04/tween-squencer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Hold on a Second</title>
		<link>http://binaryneuron.com/2008/08/15/hold-on-a-second/</link>
		<comments>http://binaryneuron.com/2008/08/15/hold-on-a-second/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 16:41:21 +0000</pubDate>
		<dc:creator>Jeremy Wischusen</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Open Source Projects]]></category>

		<guid isPermaLink="false">http://visualflowdesigns.com/?p=149</guid>
		<description><![CDATA[You can find a lot of tween libraries for AS2 and AS3. Many of these include some sort of mechanism for delaying the start of a tween. A while back I took my own shot at this based off of another class that I found and came up with: import mx.transitions.Tween; class com.vfd.animation.tweens.DelayedTween extends Tween{ [...]]]></description>
			<content:encoded><![CDATA[<p>You can find a lot of tween libraries for AS2 and AS3. Many of these include some sort of mechanism for delaying the start of a tween. A while back I took my own shot at this based off of another class that I <a title="Original Delayed Tween Class" href="http://timwalling.com/2005/06/22/mxtransitionstween-extended/" target="_blank">found</a> and came up with:</p>
<blockquote><p>import mx.transitions.Tween;<br />
class com.vfd.animation.tweens.DelayedTween extends Tween{</p>
<p>private var intervalID:Number<br />
private var delay:Number = 0;</p>
<p>public function DelayedTween(object, property, easingFunction, start, end, duration, useSeconds, delay) {</p>
<p>super(object, property, easingFunction, start, end, duration, useSeconds);<br />
this.delay = Math.abs(delay*1000);<br />
this.setDelay();</p>
<p>}<br />
private function start() {</p>
<p>}</p>
<p>private function setDelay() {<br />
if (this.delay &gt; 0) {<br />
this.intervalID = setInterval(this, &#8220;startAnimation&#8221;, this.delay);<br />
}else {<br />
this.startAnimation();<br />
}<br />
}</p>
<p>private function startAnimation() {<br />
clearInterval(this.intervalID);<br />
super.start();<br />
}</p>
<p>}</p></blockquote>
<p>This was more or less a simple copy of the class I had found. I got a chance to look at this again today and realized I could simplify it a bit. I ended  up with:</p>
<blockquote><p>/**<br />
* @author Jeremy Wischusen<br />
* This class allows for a delay before starting the animation.<br />
*/<br />
import mx.transitions.Tween;<br />
import mx.utils.Delegate;<br />
class com.vfd.animation.tweens.DelayedTween extends Tween {<br />
/*<br />
Holds the number of seconds to wait before starting the animation.<br />
*/<br />
private var _delay:Number = 0;<br />
/*<br />
Instance variable holding a reference to the start function of the Tween class.<br />
This is needed due to scoping issues when using setTimeout.<br />
*/<br />
private var superStart:Function;<br />
public function DelayedTween(object, property, easingFunction, start, end, duration, useSeconds, delay) {<br />
this.delay = delay;<br />
/*Use the Delegate class to create a reference back to the tween start funciton<br />
that can be used with setTimeout. */<br />
this.superStart = Delegate.create(super, super.start);<br />
super(object,property,easingFunction,start,end,duration,useSeconds);<br />
}<br />
/*Override the default start function so that the delay can be applied.*/<br />
public function start() {<br />
if (this._delay&gt;0) {<br />
_global.setTimeout(this.superStart,this._delay);<br />
} else {<br />
super.start();<br />
}<br />
}<br />
/*Setter function for delay attribute*/<br />
public function set delay(seconds:Number){<br />
this._delay = Math.abs(seconds*1000);<br />
}<br />
}</p></blockquote>
<p>As you can see, I reduced the number of functions, used the simpler setTimeOut and rely more on inheritance and overriding than in the previous version. I also decided to make and AS3 version.</p>
<blockquote><p>package com.vfd.animation.tweens{<br />
import fl.transitions.Tween;<br />
import flash.utils.setTimeout;<br />
/**<br />
* @author Jeremy Wischusen<br />
* This class allows for a delay before starting the animation.<br />
*/<br />
public class DelayedTween extends Tween {<br />
/*<br />
Holds the number of seconds to wait before starting the animation.<br />
*/<br />
private var _delay:Number = 0;<br />
public function DelayedTween(object, property, easingFunction, start, end, duration, useSeconds, delay) {<br />
this.delay = delay ;<br />
super(object,property,easingFunction,start,end,duration,useSeconds);<br />
}<br />
/*Override the default start function so that the delay can be applied.*/<br />
public override function start():void {<br />
if (this._delay&gt;0) {<br />
setTimeout(super.start,this._delay);<br />
} else {<br />
super.start();<br />
}<br />
}<br />
/*Setter function for delay attribute*/<br />
public function set delay(seconds:Number):void {<br />
this._delay = Math.abs(seconds*1000);<br />
}<br />
}<br />
}</p></blockquote>
<p>I have noticed that occasionally the compiler spits out:<br />
<em>The superconstructor must be called first in the constructor body.</em></p>
<p>If you place the super constructor before the delay variable is set, the tween just starts immediately since the variable has a default value of 0. This is what caused the need for the additional functions in the first version. While the compiler may occasionally complain (sometimes it shows the message and other times it does not), it still compiles and works.</p>
<p>Will be committing these to the repository on Google code sometime today.</p>
]]></content:encoded>
			<wfw:commentRss>http://binaryneuron.com/2008/08/15/hold-on-a-second/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cycling Fading Clips Using Tweens</title>
		<link>http://binaryneuron.com/2008/08/12/cycling-fading-clips-using-tweens/</link>
		<comments>http://binaryneuron.com/2008/08/12/cycling-fading-clips-using-tweens/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 13:08:31 +0000</pubDate>
		<dc:creator>Jeremy Wischusen</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>

		<guid isPermaLink="false">http://visualflowdesigns.com/?p=145</guid>
		<description><![CDATA[I did this to answer a post on Flashkit and just to have something to play with. You can see the original post here. The indidividual wanted to have 3 clips fade in and out in sequence and have that sequence rotate. Here is what I came up with: import fl.transitions.Tween; import fl.transitions.TweenEvent; import fl.transitions.easing.*; [...]]]></description>
			<content:encoded><![CDATA[<p>I did this to answer a post on Flashkit and just to have something to play with. You can see the original post <a title="Original Flashkit Post" href="http://board.flashkit.com/board/showthread.php?p=4082978#post4082978" target="_blank">here</a>. The indidividual wanted to have 3 clips fade in and out in sequence and have that sequence rotate. Here is what I came up with:</p>
<blockquote><p>import fl.transitions.Tween;<br />
import fl.transitions.TweenEvent;<br />
import fl.transitions.easing.*;<br />
/*<br />
Create tween objects and immediately stop them so that they can be re-used.<br />
*/<br />
var yellowTween:Tween = new Tween (circle_mc.yellow_mc, &#8220;alpha&#8221;, None.easeInOut, 0 , 1 , 2 , true );<br />
yellowTween.stop();<br />
var blueTween:Tween = new Tween (circle_mc.blue_mc, &#8220;alpha&#8221;, None.easeInOut, 0 , 1 , 2 , true );<br />
blueTween.stop();<br />
var redTween:Tween = new Tween (circle_mc.red_mc, &#8220;alpha&#8221;, None.easeInOut, 0 , 1 , 2 , true);<br />
redTween.stop();<br />
/*Add an event listener to the first tween to trigger the fade in the oposite<br />
direction. Subsequent listeners will be assigned and removed in the event<br />
handler functions.<br />
*/<br />
yellowTween.addEventListener(TweenEvent.MOTION_FINISH, fadeOut);<br />
/*<br />
Since movie clips allow for the creation of dynamic properties (aka variables), simply create a<br />
refence to the next tween that should be triggered directly on the clip. With<br />
this system you could easily add aditional clips by cretaing a new tween and adding<br />
another reference on the new clip to be tweened.<br />
*/<br />
circle_mc.yellow_mc.nextTween = blueTween;<br />
circle_mc.blue_mc.nextTween = redTween;<br />
circle_mc.red_mc.nextTween = yellowTween;<br />
/*<br />
Start the first tween to kick off the sequence. This should be the tween that you<br />
added the event listener to in the previous code.<br />
*/<br />
yellowTween.start();</p>
<p>/*<br />
Create a generic handler for the end of the fade in event. Since the TweenEvent object<br />
holds a reference to the tween that caused the even, we can reference that tween via<br />
the event.target property.<br />
*/<br />
function fadeOut(event:TweenEvent) {<br />
	/*remove the event listener that triggers this function from the tween since we have<br />
	gotten past the point of needed it and we dont want it to complete with the next part<br />
	of the sequence.<br />
	*/<br />
	event.target.removeEventListener(TweenEvent.MOTION_FINISH, fadeOut);<br />
	/*Add a new event listener that will trigger the next part of the sequence*/<br />
	event.target.addEventListener(TweenEvent.MOTION_FINISH, startNext);<br />
	/*Set the begin and finish properties of the tween object to the oposites<br />
	of those we used to create the fade in effect. I had originally tried to do<br />
	this with the built in yoyo function, but it produced un expected results.<br />
	*/<br />
	event.target.begin = 1;<br />
	event.target.finish = 0;<br />
	/*Restart the tween with the new properties, when this tween is finished,<br />
	it will trigger the new event handler we assigned in this function and<br />
	continue the sequence.<br />
	*/<br />
	event.target.start();<br />
}<br />
/*Now that the tween has fadded in and out, start the next tween. Again since TweenEvent<br />
holds a reference to the tween that triggered the event, we can reference that tween.<br />
Additionally, since the tween object holds a reference to the clip being tweened,<br />
we can reference the properties of that clip. In this case we are interested in the<br />
nextTween property we assigned in the previous code as this is what we will use<br />
to start the next tween.<br />
*/<br />
function startNext(event:TweenEvent) {<br />
	/*Removed the event listener that triggered this function.*/<br />
	event.target.removeEventListener(TweenEvent.MOTION_FINISH, startNext);<br />
	/*<br />
	event.target is the tween that tirggred the function. obj is the property on<br />
	the tween objetc that holds a reference to the clip being tweened. hence, we can<br />
	reference the next tween to be triggered by accessing the nextTween property we created.<br />
	*/<br />
	/*<br />
	add a listener to trigger the fade out function completing the logical loop.<br />
	*/<br />
	event.target.obj.nextTween.addEventListener(TweenEvent.MOTION_FINISH, fadeOut);<br />
	/*Reset the values of the tween so that the effect is to fade in.*/<br />
	event.target.obj.nextTween.begin = 0;<br />
	event.target.obj.nextTween.finish = 1;<br />
	/*start the tween and the cycle repeate itself.*/<br />
	event.target.obj.nextTween.start();<br />
}</p></blockquote>
<p>After some playing with it, I was able to get it down to this:</p>
<blockquote><p>import fl.transitions.Tween;<br />
import fl.transitions.TweenEvent;<br />
import fl.transitions.easing.*;<br />
var yellowTween:Tween = new Tween (pics_mc.yellow_mc, &#8220;alpha&#8221;, None.easeInOut, 0 , 1 , 2 , true );<br />
yellowTween.stop();<br />
yellowTween.addEventListener(TweenEvent.MOTION_FINISH,fadeOut);</p>
<p>if (pics_mc.numChildren > 1) {<br />
	for (var c:int = pics_mc.numChildren-1; c>=0; c&#8211;) {<br />
		var clip:Object = pics_mc.getChildAt(c);<br />
		clip.alpha = 0;<br />
		if (c > 0) {<br />
			clip.nextClip = pics_mc.getChildAt(c-1);<br />
		} else {<br />
			clip.nextClip = pics_mc.getChildAt(pics_mc.numChildren-1);<br />
		}<br />
		trace (pics_mc.getChildAt(c).name)<br />
		trace (clip.nextClip.name)<br />
	}<br />
}</p>
<p>yellowTween.start();</p>
<p>function fadeOut(event:TweenEvent) {<br />
	event.target.removeEventListener(TweenEvent.MOTION_FINISH, fadeOut);<br />
	event.target.addEventListener(TweenEvent.MOTION_FINISH, startNext);<br />
	event.target.begin = 1;<br />
	event.target.finish = 0;<br />
	event.target.start();<br />
}<br />
function startNext(event:TweenEvent) {<br />
	event.target.removeEventListener(TweenEvent.MOTION_FINISH, startNext);<br />
	event.target.addEventListener(TweenEvent.MOTION_FINISH, fadeOut);<br />
	event.target.obj = event.target.obj.nextClip;<br />
	event.target.begin = 0;<br />
	event.target.finish = 1;<br />
	event.target.start();<br />
}</p></blockquote>
<p>As long as all of the transitions are to be of the same length this works fine and all you would have to do to continue this would be to add additional clips to the housing clip (pics_mc) and the transition would be applied for you. </p>
]]></content:encoded>
			<wfw:commentRss>http://binaryneuron.com/2008/08/12/cycling-fading-clips-using-tweens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Eventful Revision</title>
		<link>http://binaryneuron.com/2008/08/08/going-public/</link>
		<comments>http://binaryneuron.com/2008/08/08/going-public/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 20:27:02 +0000</pubDate>
		<dc:creator>Jeremy Wischusen</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Open Source Projects]]></category>

		<guid isPermaLink="false">http://visualflowdesigns.com/?p=138</guid>
		<description><![CDATA[I finally got some time to play with my AnimatedClip class. I had a few ideas I wanted to try out. While playing with it, I realized that there was no real way to respond to tween events as all of the tweens resided in private instance variables. So I went back and added getter [...]]]></description>
			<content:encoded><![CDATA[<p>I finally got some time to play with my AnimatedClip class. I had a few ideas I wanted to try out. While playing with it, I realized that there was no real way to respond to tween events as all of the tweens resided in private instance variables. So I went back and added getter methods for the tween that I though people might like to respond to. So now you can do something like this:</p>
<blockquote><p>//ball has com.vfd.animation.AnimatedClip linked to it via the library linkage.</p>
<p>import fl.transitions.easing.*;<br />
import fl.transitions.TweenEvent;<br />
ball.easing= Bounce.easeInOut;<br />
ball.sizeTo(300,300,5);<br />
ball.widthTween.addEventListener(TweenEvent.MOTION_FINISH, motionFinished);<br />
function motionFinished(evt:TweenEvent) {<br />
ball.widthTween.yoyo();<br />
ball.heightTween.yoyo();<br />
}</p></blockquote>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_boing_618465504"
			class="flashmovie"
			width="500"
			height="400">
	<param name="movie" value="http://www.visualflowdesigns.com/flash/boing.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.visualflowdesigns.com/flash/boing.swf"
			name="fm_boing_618465504"
			width="500"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Will add this into the repository when I get home. I am mostly working on the AS3 version at this point.</p>
]]></content:encoded>
			<wfw:commentRss>http://binaryneuron.com/2008/08/08/going-public/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enforcing a Singleton</title>
		<link>http://binaryneuron.com/2008/08/08/enforcing-a-singleton/</link>
		<comments>http://binaryneuron.com/2008/08/08/enforcing-a-singleton/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 13:53:05 +0000</pubDate>
		<dc:creator>Jeremy Wischusen</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://visualflowdesigns.com/?p=133</guid>
		<description><![CDATA[Been doing some research on Cairngorm and in the process came across this little trick for enforcing singletons. ActionScript will not let you set the access modifier for a constructor to private and as such, despite having a singelton architecture, there would be nothing stopping someone from directly calling new Singleton, which defeat the purpose [...]]]></description>
			<content:encoded><![CDATA[<p>Been doing some research on Cairngorm and in the process came across this little trick for enforcing singletons. ActionScript will not let you set the access modifier for a constructor to private and as such, despite having a singelton architecture, there would be nothing stopping someone from directly calling new Singleton, which defeat the purpose of a singleton in the first place. The solution involves using what amounts to a private class that is a required argument of the constructor. This looks like this:</p>
<blockquote><p>package<br />
{</p>
<p>/**<br />
* &#8230;<br />
* @author Jeremy Wischusen &lt;cortex@visualflowdesigns.com&gt;<br />
*/<br />
public class Singleton<br />
{<br />
private static var instance:Singleton;<br />
public function Singleton(enforcer:SingletonEnforcer)<br />
{</p>
<p>}<br />
public static function getInstance():Singleton<br />
{<br />
if (Singleton.instance == null)<br />
{<br />
Singleton.instance = new Singleton(new SingletonEnforcer);<br />
}<br />
return Singleton.instance;</p>
<p>}<br />
}</p>
<p>}<br />
class SingletonEnforcer<br />
{}</p></blockquote>
<p>Notice the class definition for SingletonEnforcer is ourside of the package definition. When you define a class like this in the same file as a another class, it is only available to main class defined in the file (the one inside the package statement).  In other words the class is private. Since the constructor requires an instance of this class, trying to instantiate using new Singleton will throw an error since there is no way that an enforcer can be created and passed to the constructor other than within the Singleton class itself.</p>
<p>Hopefully in future versions of ActionScript we will have private constructors (along with method overloading just in case anyone is listening hint hint), but for now, this should do the trick.</p>
]]></content:encoded>
			<wfw:commentRss>http://binaryneuron.com/2008/08/08/enforcing-a-singleton/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hey Look, a Mouse.</title>
		<link>http://binaryneuron.com/2008/05/26/hey-look-a-mouse/</link>
		<comments>http://binaryneuron.com/2008/05/26/hey-look-a-mouse/#comments</comments>
		<pubDate>Mon, 26 May 2008 19:36:14 +0000</pubDate>
		<dc:creator>Jeremy Wischusen</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://visualflowdesigns.com/blog/?p=35</guid>
		<description><![CDATA[In one of the books I am reading, Foundation Actionscript 3.0 Animation : Making Things Move! by Keith Peters, he has an example of using trig to make an arrow point at the location of the mouse. I decided to play with this a bit and make an animation where the eyes follow the mouse. [...]]]></description>
			<content:encoded><![CDATA[<p>In one of the books I am reading, <a href="http://search.barnesandnoble.com/Foundation-Actionscript-30-Animation/Keith-Peters/e/9781590597910/?itm=8">Foundation Actionscript 3.0 Animation : Making Things Move!</a><em class="nl"> by                         <a class="underline" href="http://search.barnesandnoble.com/booksearch/results.asp?ATH=Keith+Peters">Keith Peters</a></em>, he has an example of using trig to make an arrow point at the location of the mouse. I decided to play with this a bit and make an animation where the eyes follow the mouse. I actully ended up adding this to my animation class, so this (after attaching the class via the library linkage):</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_watcher_836410984"
			class="flashmovie"
			width="289"
			height="289">
	<param name="movie" value="http://visualflowdesigns.com/flash/watcher.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://visualflowdesigns.com/flash/watcher.swf"
			name="fm_watcher_836410984"
			width="289"
			height="289">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>can be accomplished with:</p>
<blockquote>
<p>leftEye.startWatchingMouse();</p>
<p>rightEye.startWatchingMouse();</p>
<p></code></p>
<p>Functions in class:</p>
<p><code></p>
<p>public function startWatchingMouse():void{</p>
<p>stage.addEventListener(MouseEvent.MOUSE_MOVE,watchMouse);</p>
<p>}</p>
<p>public function stopWatchingMouse():void{</p>
<p>stage.removeEventListener(MouseEvent.MOUSE_MOVE,watchMouse);</p>
<p>}</p>
<p>private function watchMouse(event:MouseEvent):void{</p>
<p>var dx:Number = stage.mouseX - this.x;</p>
<p>var dy:Number = stage.mouseY - this.y;</p>
<p>var rad:Number = Math.atan2(dy,dx);</p>
<p>//for some reason the example as written was 90 degrees off, so I added 90 and that fixed it.</p>
<p>this.rotation = rad*180/Math.PI + 90;</p>
<p>}</p>
</blockquote>
<h3>Edit:</h3>
<p>Found a version of the class that has these function in it.</p>
<blockquote>
<p>package com.vfd.animation{<br />
    /**<br />
    * Animation class. Based off of mc_tween2.as project.<br />
    * @author Jeremy Wischusen <cortex@visualflowdesigns.com><br />
    */<br />
    import flash.display.Sprite;<br />
    import fl.transitions.Tween;<br />
    import fl.motion.Color;<br />
    import flash.geom.ColorTransform;<br />
    import fl.transitions.TweenEvent;<br />
    import flash.events.Event;<br />
    import flash.events.MouseEvent;<br />
    public class AnimatedClip extends Sprite {<br />
        private var originalX:Number;<br />
        private var originalY:Number;<br />
        private var xTween:Tween;<br />
        private var yTween:Tween;<br />
        private var alphaTween:Tween;<br />
        private var rotationTween:Tween;<br />
        private var widthTween:Tween;<br />
        private var heightTween:Tween;<br />
        private var eventTween:Tween;<br />
        private var tweenArray:Array;<br />
        private var colorTween:Tween;<br />
        private var colorTrans:ColorTransform;<br />
        private var tweenToColor:Number;<br />
        private var lastColor:Number;<br />
        private var timerClip:Sprite;<br />
        private var orbitAngle:Number = 0;<br />
        private var _orbitVelocity:Number = .5;<br />
        private var _orbitY:Number = stage.stageHeight/2;<br />
        private var _orbitX:Number =  stage.stageWidth/2;<br />
        private var _orbitDistance:Number;</p>
<p>        public function AnimatedClip() {<br />
            this.originalX = this.x;<br />
            this.originalY = this.y;<br />
            this.xTween =  new Tween(this, "x", null, this.x, this.x, 1, true);<br />
            this.yTween =  new Tween(this, "y", null, this.y, this.y, 1, true);<br />
            this.alphaTween =  new Tween(this, "alpha", null, this.alpha, this.alpha, 1, true);<br />
            this.rotationTween =  new Tween(this, "rotation", null, this.rotation, this.rotation, 1, true);<br />
            this.widthTween =  new Tween(this, "width", null, this.width, this.width, 1, true);<br />
            this.heightTween =  new Tween(this, "height", null, this.height, this.height, 1, true);<br />
            this.timerClip = new Sprite();<br />
            this.colorTween = new Tween(this.timerClip,'alpha',null,0,1,1,true);<br />
            this.colorTween.stop();<br />
            this.tweenArray = new Array(this.xTween, this.yTween, this.alphaTween, this.rotationTween, this.widthTween, this.heightTween,this.colorTween);<br />
            this.colorTrans = this.transform.colorTransform;<br />
            this._orbitDistance  = this.width*2;<br />
            this.colorTween.addEventListener(TweenEvent.MOTION_CHANGE, updateColor);</p>
<p>        }<br />
        public function resetPosition():void {<br />
            this.x = this.originalX;<br />
            this.y = this.originalY;<br />
        }<br />
        public function moveToPoint(x:Number, y:Number,duration:Number = 0, loop:Boolean = false):void {<br />
			this.xTween.finish = x;<br />
			this.xTween.duration = duration;<br />
			this.xTween.looping = loop;<br />
			this.yTween.finish = y;<br />
			this.yTween.duration = duration;<br />
			this.yTween.looping = loop;<br />
			this.xTween.start();<br />
			this.yTween.start();<br />
        }<br />
        public function fadeTo(val:Number =0, duration:Number = 0, loop:Boolean = false):void {<br />
            this.alphaTween.finish = val;<br />
            this.alphaTween.duration = duration;<br />
            this.alphaTween.looping=loop;<br />
            this.alphaTween.start();<br />
        }<br />
        public function sizeTo(w:Number, h:Number, duration:Number=0, loop:Boolean = false):void {<br />
            this.widthTween.finish=w;<br />
            this.widthTween.looping = loop;<br />
            this.widthTween.duration = duration;<br />
            this.heightTween.finish = h;<br />
            this.heightTween.looping = loop;<br />
            this.heightTween.duration = duration;<br />
            this.widthTween.start();<br />
            this.heightTween.start();</p>
<p>        }<br />
		public function widthTo(width:Number, duration:Number, loop:Boolean = false):void {<br />
			this.widthTween.finish =width;<br />
			this.widthTween.looping = loop;<br />
			this.widthTween.duration = duration;<br />
			this.widthTween.start();<br />
		}<br />
		public function heightTo(height:Number, duration:Number, loop:Boolean = false):void {<br />
			this.heightTween.finish =height;<br />
			this.heightTween.looping = loop;<br />
			this.heightTween.duration = duration;<br />
			this.heightTween.start();<br />
		}<br />
        public function spinTo(rot:Number= 0, duration:Number = 0, loop:Boolean = false):void {<br />
            this.rotationTween.finish=rot;<br />
            this.rotationTween.duration = duration;<br />
            this.rotationTween.looping = loop;<br />
            this.rotationTween.start();<br />
        }<br />
        public function xTo(x:Number, duration:Number = 0, loop:Boolean = false):void {<br />
            this.xTween.finish = x;<br />
            this.xTween.duration = duration;<br />
            this.xTween.looping = loop;<br />
            this.xTween.start();<br />
        }<br />
        public function yTo(y:Number, duration:Number = 0, loop:Boolean = false):void {<br />
            this.yTween.finish = y;<br />
            this.yTween.duration = duration;<br />
            this.yTween.looping = loop;<br />
            this.yTween.start();<br />
        }<br />
        public function set easing(ease:Function):void {<br />
            for (var tw in this.tweenArray) {<br />
                tweenArray[tw].func = ease;<br />
            }<br />
        }<br />
        public function colorTo(toColor:Number, duration:Number):void {<br />
            this.lastColor = this.transform.colorTransform.color;<br />
            this.tweenToColor = toColor;<br />
            this.colorTween.duration = duration;<br />
            this.colorTween.start();<br />
        }<br />
        private function updateColor(event:TweenEvent):void {<br />
            this.colorTrans.color = Color.interpolateColor(this.lastColor, this.tweenToColor,event.position);<br />
            updateColorTransform();<br />
        }<br />
        public function set currentColor(clr:Number) {<br />
            this.lastColor = clr;<br />
            this.colorTrans.color= clr;<br />
            updateColorTransform();</p>
<p>        }<br />
        public function startOrbit():void {<br />
            this.addEventListener(Event.ENTER_FRAME,orbit);<br />
        }<br />
        public function stopOrbit():void {<br />
            this.removeEventListener(Event.ENTER_FRAME,orbit);<br />
            this.orbitAngle = 0;<br />
        }<br />
        private function orbit(event:Event) {<br />
            this.y = this._orbitY + Math.sin(this.orbitAngle)*this._orbitDistance;<br />
            this.x = this._orbitX + Math.cos(this.orbitAngle)*this._orbitDistance;<br />
            this.orbitAngle += this._orbitVelocity;<br />
        }<br />
        public function startWatchingMouse():void{<br />
        	  stage.addEventListener(MouseEvent.MOUSE_MOVE,watchMouse);<br />
        }<br />
        public function stopWatchingMouse():void{<br />
        	 stage.removeEventListener(MouseEvent.MOUSE_MOVE,watchMouse);<br />
        }<br />
        private function watchMouse(event:MouseEvent):void{<br />
        	var dx:Number = stage.mouseX - this.x;<br />
        	var dy:Number = stage.mouseY - this.y;<br />
        	var rad:Number = Math.atan2(dy,dx);<br />
        	this.rotation = rad*180/Math.PI + 90;<br />
        }<br />
        public function set yEasing(ease:Function) {<br />
            this.yTween.func = ease;<br />
        }<br />
        public function set xEasing(ease:Function) {<br />
            this.xTween.func = ease;<br />
        }<br />
        public function set heightEasing(ease:Function) {<br />
            this.heightTween.func = ease;<br />
        }<br />
        public function set widthEasing(ease:Function) {<br />
            this.widthTween.func = ease;<br />
        }<br />
        public function set alphaEasing(ease:Function) {<br />
            this.alphaTween.func = ease;<br />
        }<br />
        public function set rotationEasing(ease:Function) {<br />
            this.rotationTween.func = ease;<br />
        }<br />
        public function set orbitVelocity(velocity:Number) {<br />
            this._orbitVelocity = velocity;<br />
        }<br />
        public function set orbitY(y:Number) {<br />
            this._orbitY = y;<br />
        }<br />
        public function set orbitX(x:Number) {<br />
            this._orbitX = x;<br />
        }<br />
        public function set orbitDistance(distance:Number) {<br />
            this._orbitDistance = distance;<br />
        }<br />
        public function get currentColor():Number {<br />
            return this.lastColor;<br />
        }<br />
        private function updateColorTransform() {<br />
            this.transform.colorTransform = this.colorTrans;<br />
        }<br />
    }<br />
}
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://binaryneuron.com/2008/05/26/hey-look-a-mouse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flex YouTube Video Search</title>
		<link>http://binaryneuron.com/2008/05/25/flex-youtube-video-search/</link>
		<comments>http://binaryneuron.com/2008/05/25/flex-youtube-video-search/#comments</comments>
		<pubDate>Sun, 25 May 2008 20:07:22 +0000</pubDate>
		<dc:creator>Jeremy Wischusen</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://visualflowdesigns.com/blog/?p=34</guid>
		<description><![CDATA[Since I had such a fun time with the Truveo video search, I decided to do the same type of thing with YouTube. I was originally going to have it play the video, but as it turns out for some reason when loading a YouTube player into a SWFLoader, it only works the first time [...]]]></description>
			<content:encoded><![CDATA[<p>Since I had such a fun time with the Truveo video search, I decided to do the same type of thing with YouTube. I was originally going to have it play the video, but as it turns out for some reason when loading a YouTube player into a SWFLoader, it only works the first time and the fixes I found are a little more than I can to put into something that is basically just an experiment.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_YouTubeVideo_2011818281"
			class="flashmovie"
			width="800"
			height="475">
	<param name="movie" value="http://www.visualflowdesigns.com/flash/YouTubeVideo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.visualflowdesigns.com/flash/YouTubeVideo.swf"
			name="fm_YouTubeVideo_2011818281"
			width="800"
			height="475">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://binaryneuron.com/2008/05/25/flex-youtube-video-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex Truveo Video Search</title>
		<link>http://binaryneuron.com/2008/05/21/flex-truveo-video-search/</link>
		<comments>http://binaryneuron.com/2008/05/21/flex-truveo-video-search/#comments</comments>
		<pubDate>Wed, 21 May 2008 20:36:33 +0000</pubDate>
		<dc:creator>Jeremy Wischusen</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://visualflowdesigns.com/blog/?p=32</guid>
		<description><![CDATA[A few weeks ago someone contacted me about writing about the new APIs that AOL has made available. While looking at the AOL dev site I came accross the Truveo API and decided I would try creating a search application in Flex. 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_Truveo_1124246381"
			class="flashmovie"
			width="400"
			height="475">
	<param name="movie" value="http://visualflowdesigns.com/flash/Truveo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://visualflowdesigns.com/flash/Truveo.swf"
			name="fm_Truveo_1124246381"
			width="400"
			height="475">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago someone contacted me about writing about the new APIs that AOL has made available. While looking at the <a title="AOL Developer Site" href="http://dev.aol.com/" target="_blank">AOL dev site</a> I came accross the <a title="Truveo API" href="http://dev.aol.com/api/truveo" target="_blank">Truveo API</a> and decided I would try creating a search application in Flex.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_Truveo_1127765260"
			class="flashmovie"
			width="400"
			height="475">
	<param name="movie" value="http://visualflowdesigns.com/flash/Truveo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://visualflowdesigns.com/flash/Truveo.swf"
			name="fm_Truveo_1127765260"
			width="400"
			height="475">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
]]></content:encoded>
			<wfw:commentRss>http://binaryneuron.com/2008/05/21/flex-truveo-video-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

