<?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>Kenny Bunch</title>
	<atom:link href="http://www.kennybunch.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kennybunch.com</link>
	<description>thoughts from a software dev and business owner</description>
	<lastBuildDate>Fri, 15 Jun 2012 19:18:01 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>OSMF getBitrateForIndex bug</title>
		<link>http://www.kennybunch.com/2011/02/osmf-getbitrateforindex-bug/</link>
		<comments>http://www.kennybunch.com/2011/02/osmf-getbitrateforindex-bug/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 05:21:28 +0000</pubDate>
		<dc:creator>kbunch</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=305</guid>
		<description><![CDATA[At Dreamsocket, we have been working on an OSMF based video player for one of our clients. An important aspect of the player is that it provides visual QOS (quality of service) information to the user about what is going on. For example, what the current stream bitrate is, the buffer length, frame rate, and [...]]]></description>
				<content:encoded><![CDATA[<p>At <a href="http://dreamsocket.com">Dreamsocket</a>, we have been working on an OSMF based video player for one of our clients. An important aspect of the player is that it provides visual QOS (quality of service) information to the user about what is going on. For example, what the current stream bitrate is, the buffer length, frame rate, and other metrics are shown on screen so a user can self diagnose what is going on. If a customer is having issues and calls customer service, this information can be very helpful.</p>
<h2>The Problem</h2>
<p>Unfortunately, in using OSMF, we were constantly seeing incorrect bitrates being reported for the current stream. It was obvious that it was playing a 1400kbps stream when OSMF was telling us that it was a 300kbps stream. If you have ever worked with video at a low level in Flash, you will know that you can never expect events to fire exactly how you want. That turned out to be the case here. OSMF internally was looking only for NetStream.Play.TransitionComplete code being fired in for a onPlayStatus event. Well good luck with that. You can simply do a seek at the start of a video right before it does a transition, or do a few seeks while it is transitioning and you&#8217;ll never see that get fired off. </p>
<h2>The Solution</h2>
<p>Although the onPlayStatus handler doesn&#8217;t always fire, a NetStatusEvent event with a NetStream.Play.Start code does fire when a new bitrate begins. Therefore if you introspect the details property (which gives you the stream name) of the info object in that event and the stream is different than the current bitrate, you can concur that the bitrate has switched. One quirk here is that in some cases a NetStream.Play.Start can fire with event.info.details being null, so you have to watch out for that.</p>
<p>So how can you apply this to OSMF? Given OSMF is so black boxed, the error has to be fixed in a core class. To make it simple, we only touched a single function onNetStatus in org.osmf.net.NetStreamDynamicStreamTrait.</p>
<p>we added a var definition at the top of the function</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="actionscript"><pre class="de1"><span class="kw2">var</span> <span class="kw3">index</span>:<span class="kw3">int</span>;</pre></div></div></div></div></div></div></div>


<p>we added an additional case statement</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="actionscript"><pre class="de1"><span class="kw1">case</span> NetStreamCodes.<span class="me1">NETSTREAM_PLAY_START</span>:
	<span class="kw1">if</span><span class="br0">&#40;</span>event.<span class="me1">info</span>.<span class="me1">details</span><span class="br0">&#41;</span>
	<span class="br0">&#123;</span>  <span class="co1">// don't try to grab the index if there is no stream name</span>
		<span class="kw3">index</span> = dsResource.<span class="me1">indexFromName</span><span class="br0">&#40;</span>event.<span class="me1">info</span>.<span class="me1">details</span><span class="br0">&#41;</span>;
&nbsp;
                <span class="co1">// if starting a stream that is not the current index, let the system know that it is transitioning</span>
		<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">index</span> <span class="sy0">!</span>= <span class="kw3">this</span>.<span class="me1">currentIndex</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			inSetSwitching = <span class="kw2">true</span>;
			setSwitching<span class="br0">&#40;</span><span class="kw2">true</span>, <span class="kw3">index</span><span class="br0">&#41;</span>;
			inSetSwitching = <span class="kw2">false</span>;
		<span class="br0">&#125;</span>
                <span class="co1">// notify the system that the stream has transitioned</span>
		setSwitching<span class="br0">&#40;</span><span class="kw2">false</span>, <span class="kw3">index</span><span class="br0">&#41;</span>;
	<span class="br0">&#125;</span>
	<span class="kw1">break</span>;</pre></div></div></div></div></div></div></div>


<p>within the transition start statement, we put a lock on the system to only indicate a stream was switching if the index was changing</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="actionscript"><pre class="de1">	<span class="kw3">index</span> = dsResource.<span class="me1">indexFromName</span><span class="br0">&#40;</span>event.<span class="me1">info</span>.<span class="me1">details</span><span class="br0">&#41;</span>;
	<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">index</span> <span class="sy0">!</span>= <span class="kw3">this</span>.<span class="me1">currentIndex</span><span class="br0">&#41;</span>
		setSwitching<span class="br0">&#40;</span><span class="kw2">true</span>, <span class="kw3">index</span><span class="br0">&#41;</span>;</pre></div></div></div></div></div></div></div>


<p>So there you go, correct bitrate reporting with OSMF. Hopefully someone on the team will see this and they fix the issue in the core vs us having to mod their code. Hope this helps someone.</p>
<p>[UPDATE 2-16]<br />
To be clear, this really is a bug with the Flash Player and FMS. The Flash Player itself is not firing the onPlayStatus event with a NetStream.Play.TransitionComplete code. This would effect any non OSMF player as well that relied only on that code to determine what stream was switched to. The bug with OSMF is that it just doesn&#8217;t account for this quirk. Also, this happens in all OSMF versions that I&#8217;m aware of. We were using 1.5.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/2011/02/osmf-getbitrateforindex-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing the as3for2 framework (an AS3 emulation layer in AS2)</title>
		<link>http://www.kennybunch.com/2010/12/introducing-the-as3for2-framework-an-as3-emulation-layer-in-as2/</link>
		<comments>http://www.kennybunch.com/2010/12/introducing-the-as3for2-framework-an-as3-emulation-layer-in-as2/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 15:21:10 +0000</pubDate>
		<dc:creator>kbunch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=297</guid>
		<description><![CDATA[Is ActionScript 2 still used? We rarely have ActionScript 2 based projects these days at Dreamsocket, but a few still pop up now and again. Most of the time when they do it is because the project had some limitation that required it to be ActionScript 2. Recently we had two projects that had this [...]]]></description>
				<content:encoded><![CDATA[<h2>Is ActionScript 2 still used?</h2>
<p>We rarely have ActionScript 2 based projects these days at <a href="http://dreamsocket.com">Dreamsocket</a>, but a few still pop up now and again. Most of the time when they do it is because the project had some limitation that required it to be ActionScript 2. Recently we had two projects that had this type of limitation. One was using <a href="http://scaleform.com">ScaleForm</a>, a C++ Flash implementation which is typically used to create UIs for games (on platforms like the PS3, XBOX, etc). In our case we were creating a UI for a set top box platform. The other was for a random banner ad that needed to play nice in foreign environments. In both cases we turned to our as3for2 framework.</p>
<h2>What is as3for2?</h2>
<p>The moment ActionScript 3 came out, it was clear the new language was much simpler and cleaner to work with. Having a lot of large ActionScript 2 projects at the time that we wanted to port, we created a framework that wrapped ActionScript 2 to emulate the new ActionScript 3 objects and interfaces. It enabled us to slowly port chunks of code over to the point we just had to change a few syntax points and the code was now running atop ActionScript 3. That definitely was helpful but it was more of a short term transitional usage of the framework. Where it has been invaluable are projects like the ones mentioned above where we have to step back in time because of limitations that won&#8217;t allow us to use ActionScript 3. The sad thing is we&#8217;ve sat on this code base for about 5 years without sharing it. I guess it is better late than never. So today we are <a href="https://github.com/dreamsocket/actionscript-as3for2">releasing the framework under an MIT license</a> for anyone who still has to dabble in ActionScript 2.</p>
<h2>What is in the framework?</h2>
<p>- AS3 style event framework with bubbling, priorities, scoping, phases, formal events<br />
- display package with DisplayObject, Graphics, Sprite, Stage, etc that hold the same AS3 APIs<br />
- NetStream, NetConnection, SoundTransform<br />
- Timer</p>
<h2>Where do I get it?</h2>
<p>All the code is up on <a href="https://github.com/dreamsocket/actionscript-as3for2">https://github.com/dreamsocket/actionscript-as3for2</a>. So go <a href="https://github.com/dreamsocket/actionscript-as3for2">grab it now</a>! It may be something useful on a project, fun for a stroll down memory lane, or educational as you port things over to JavaScript.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/2010/12/introducing-the-as3for2-framework-an-as3-emulation-layer-in-as2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simplifying StageVideo with StageVideoProxy</title>
		<link>http://www.kennybunch.com/2010/12/simplifying-stagevideo-with-stagevideoproxy/</link>
		<comments>http://www.kennybunch.com/2010/12/simplifying-stagevideo-with-stagevideoproxy/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 04:05:19 +0000</pubDate>
		<dc:creator>kbunch</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=284</guid>
		<description><![CDATA[Adobe recently took a large step in changing the way video gets rendered in the Flash player. For the most part the player has always taken a large role in rendering video to the screen. With the release of Flash player 10.2 this has all changed. Now if you explicitly tell the player to, you [...]]]></description>
				<content:encoded><![CDATA[<p>Adobe recently took a large step in changing the way video gets rendered in the Flash player. For the most part the player has always taken a large role in rendering video to the screen. With the release of <a href="http://labs.adobe.com/technologies/flashplayer10/">Flash player 10.2</a> this has all changed. Now if you explicitly tell the player to, you can offload the video completely to the hardware which decreases CPU usage (literally to 0%), lowers memory usage, enables higher frame rates, and overall enables greater pixel fidelity and video quality.  </p>
<p>Obviously with all the upcoming phones, tablets, and connected TVs this has an even higher impact on a video applications experience. At <a href="http://dreamsocket.com">Dreamsocket </a>we&#8217;ve been fortunate enough to be an early adopter with projects on these platforms. From developing video player&#8217;s tailored for Android phones to creating <a href="http://cartoonnetwork.com/leanback">Cartoon Network</a> and <a href="http://adultswim.com/leanback">Adult Swim&#8217;s</a> GoogleTV apps, we&#8217;ve been able to see the impact this new change has, in addition to figuring out the best way to integrate it into existing applications.</p>
<p>All that said, the one thing that really struck us was how unique the new StageVideo API is. I say unique because it is a completely new API and is completely different than working with the Video object. I understand the differences, however do you really need to force someone to go back and recode everything just to use it? I know it forces a user to explicitly think and spend time putting StageVideo into an app, but why? It should be EASY. I mean really EASY.</p>
<p>Enter StageVideoProxy. We wanted to go into all of our video applications and simply swap out a Video object reference for a new Class that would use StageVideo if present and fallback to using a standard Video object if it failed. By having a simple class that extended Video, we could just swap out the instance and proxy all the calls to StageVideo when it was available. This made it EXTREMELY easy to retro fit any existing application with StageVideo functionality. In addition, we kept all 10.2 API references in places that would not get called in players below 10.2, making the code backwards compatible. </p>
<p>Super right? Well we did find a few limitations. First, StageVideo doesn&#8217;t really have a way to clear the video, so we had set the size to 0 width and 0 height to &#8220;clear&#8221; it. Second, we don&#8217;t really know depth of display objects vs other display objects easily, so we don&#8217;t have a way to determine z depth for the videos. The second step doesn&#8217;t really matter though, given the implementation currently only supports a single StageVideo instance. I&#8217;d like to add support for multi videos, but I&#8217;m still unclear on how many I can have and what dictates that. I understand how to know when they are there and when you hit your limit, but I&#8217;d still like to fully understand it before I add it in.</p>
<p>Regardless, this is super useful code so merry nerdmas! Here you go in all its MIT licensed glory</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="actionscript"><pre class="de1"><span class="coMULTI">/**
* Copyright (c) 2010 Dreamsocket Incorporated.
* All rights reserved.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the &quot;Software&quot;), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
**/</span>
&nbsp;
&nbsp;
package com.<span class="me1">dreamsocket</span>.<span class="me1">media</span> 
<span class="br0">&#123;</span>
	<span class="kw3">import</span> flash.<span class="me1">events</span>.<span class="me1">Event</span>;
	<span class="kw3">import</span> flash.<span class="me1">events</span>.<span class="me1">StageVideoEvent</span>;
	<span class="kw3">import</span> flash.<span class="me1">events</span>.<span class="me1">StageVideoAvailabilityEvent</span>;
	<span class="kw3">import</span> flash.<span class="me1">events</span>.<span class="me1">VideoEvent</span>;
	<span class="kw3">import</span> flash.<span class="me1">geom</span>.<span class="me1">Rectangle</span>;
	<span class="kw3">import</span> flash.<span class="me1">media</span>.<span class="me1">StageVideo</span>;
	<span class="kw3">import</span> flash.<span class="me1">media</span>.<span class="me1">StageVideoAvailability</span>;
	<span class="kw3">import</span> flash.<span class="me1">media</span>.<span class="kw3">Video</span>;
	<span class="kw3">import</span> flash.<span class="me1">net</span>.<span class="kw3">NetStream</span>;
&nbsp;
	<span class="kw3">public</span> <span class="kw2">class</span> StageVideoProxy <span class="kw3">extends</span> <span class="kw3">Video</span>
	<span class="br0">&#123;</span>
		protected <span class="kw2">var</span> m_netStream:<span class="kw3">NetStream</span>;
		protected <span class="kw2">var</span> m_stageVideo:<span class="kw3">Object</span>;
&nbsp;
&nbsp;
		<span class="kw3">public</span> <span class="kw2">function</span> StageVideoProxy <span class="br0">&#40;</span>p_width:<span class="kw3">int</span> = <span class="nu0">320</span>, p_height:<span class="kw3">int</span> = <span class="nu0">240</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			<span class="kw3">super</span><span class="br0">&#40;</span>p_width, p_height<span class="br0">&#41;</span>;
&nbsp;
			<span class="kw3">this</span>.<span class="me1">addEventListener</span><span class="br0">&#40;</span>Event.<span class="me1">ADDED_TO_STAGE</span>, <span class="kw3">this</span>.<span class="me1">onAddedToStage</span><span class="br0">&#41;</span>;
			<span class="kw3">this</span>.<span class="me1">addEventListener</span><span class="br0">&#40;</span>Event.<span class="me1">REMOVED_FROM_STAGE</span>, <span class="kw3">this</span>.<span class="me1">onRemovedFromStage</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		override <span class="kw3">public</span> <span class="kw2">function</span> <span class="kw3">set</span> <span class="kw3">height</span><span class="br0">&#40;</span>p_value:<span class="kw3">Number</span><span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>
			<span class="kw1">if</span><span class="br0">&#40;</span>p_value <span class="sy0">!</span>= <span class="kw3">this</span>.<span class="kw3">height</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="kw3">super</span>.<span class="kw3">height</span> = p_value;
				<span class="kw3">this</span>.<span class="me1">layoutView</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		override <span class="kw3">public</span> <span class="kw2">function</span> <span class="kw3">get</span> videoHeight<span class="br0">&#40;</span><span class="br0">&#41;</span>:<span class="kw3">int</span>
		<span class="br0">&#123;</span>
			<span class="kw1">return</span> <span class="kw3">this</span>.<span class="me1">m_stageVideo</span> ? <span class="kw3">this</span>.<span class="me1">m_stageVideo</span>.<span class="me1">videoHeight</span> : <span class="kw3">super</span>.<span class="me1">videoHeight</span>;
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		override <span class="kw3">public</span> <span class="kw2">function</span> <span class="kw3">get</span> videoWidth<span class="br0">&#40;</span><span class="br0">&#41;</span>:<span class="kw3">int</span>
		<span class="br0">&#123;</span>
			<span class="kw1">return</span> <span class="kw3">this</span>.<span class="me1">m_stageVideo</span> ? <span class="kw3">this</span>.<span class="me1">m_stageVideo</span>.<span class="me1">videoWidth</span> : <span class="kw3">super</span>.<span class="me1">videoWidth</span>;
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		override <span class="kw3">public</span> <span class="kw2">function</span> <span class="kw3">set</span> <span class="kw3">width</span><span class="br0">&#40;</span>p_value:<span class="kw3">Number</span><span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>
			<span class="kw1">if</span><span class="br0">&#40;</span>p_value <span class="sy0">!</span>= <span class="kw3">this</span>.<span class="kw3">width</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="kw3">super</span>.<span class="kw3">width</span> = p_value;
				<span class="kw3">this</span>.<span class="me1">layoutView</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		override <span class="kw3">public</span> <span class="kw2">function</span> <span class="kw3">set</span> x<span class="br0">&#40;</span>p_value:<span class="kw3">Number</span><span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>
			<span class="kw1">if</span><span class="br0">&#40;</span>p_value <span class="sy0">!</span>= <span class="kw3">this</span>.<span class="me1">x</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="kw3">super</span>.<span class="me1">x</span> = p_value;
				<span class="kw3">this</span>.<span class="me1">layoutView</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		override <span class="kw3">public</span> <span class="kw2">function</span> <span class="kw3">set</span> y<span class="br0">&#40;</span>p_value:<span class="kw3">Number</span><span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>
			<span class="kw1">if</span><span class="br0">&#40;</span>p_value <span class="sy0">!</span>= <span class="kw3">this</span>.<span class="me1">y</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="kw3">super</span>.<span class="me1">y</span> = p_value;
				<span class="kw3">this</span>.<span class="me1">layoutView</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		override <span class="kw3">public</span> <span class="kw2">function</span> attachNetStream<span class="br0">&#40;</span>p_stream:<span class="kw3">NetStream</span><span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>
			<span class="kw1">if</span><span class="br0">&#40;</span>p_stream <span class="sy0">!</span>= <span class="kw3">this</span>.<span class="me1">m_netStream</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="kw3">this</span>.<span class="me1">m_netStream</span> = p_stream;
				<span class="kw3">this</span>.<span class="me1">teardownStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
				<span class="kw3">this</span>.<span class="me1">setupStageVideo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
&nbsp;
		protected <span class="kw2">function</span> setupSpriteVideo<span class="br0">&#40;</span><span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>		
			<span class="kw3">this</span>.<span class="me1">m_stageVideo</span> = <span class="kw2">null</span>;
			<span class="kw3">super</span>.<span class="me1">attachNetStream</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="me1">m_netStream</span><span class="br0">&#41;</span>;		
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		protected <span class="kw2">function</span> setupStageVideo<span class="br0">&#40;</span><span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>	<span class="co1">// only setup the view when video is on stage and there is a netstream attached</span>
			<span class="co1">// this helps prevent as much as possible the time when a StageVideo is initialized</span>
			<span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="kw3">this</span>.<span class="kw3">stage</span> <span class="sy0">||</span> <span class="sy0">!</span><span class="kw3">this</span>.<span class="me1">m_netStream</span><span class="br0">&#41;</span> <span class="kw1">return</span>;
&nbsp;
			<span class="kw3">try</span>
			<span class="br0">&#123;</span>
				<span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="kw3">this</span>.<span class="me1">m_stageVideo</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">this</span>.<span class="kw3">stage</span>.<span class="me1">stageVideos</span>.<span class="kw3">length</span> <span class="sy0">&gt;</span>= <span class="nu0">1</span><span class="br0">&#41;</span>
				<span class="br0">&#123;</span>
					<span class="kw3">this</span>.<span class="me1">m_stageVideo</span> = <span class="kw3">this</span>.<span class="kw3">stage</span>.<span class="me1">stageVideos</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>;
					<span class="kw3">this</span>.<span class="me1">m_stageVideo</span>.<span class="me1">addEventListener</span><span class="br0">&#40;</span>StageVideoEvent.<span class="me1">RENDER_STATE</span>, <span class="kw3">this</span>.<span class="me1">onRenderStateChanged</span><span class="br0">&#41;</span>;
					<span class="kw3">this</span>.<span class="me1">layoutView</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
				<span class="br0">&#125;</span>
&nbsp;
				<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="me1">m_stageVideo</span><span class="br0">&#41;</span>
				<span class="br0">&#123;</span>
					<span class="kw3">this</span>.<span class="me1">m_stageVideo</span>.<span class="me1">attachNetStream</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="me1">m_netStream</span><span class="br0">&#41;</span>;
				<span class="br0">&#125;</span>
				<span class="kw1">else</span>
				<span class="br0">&#123;</span>
					<span class="kw3">this</span>.<span class="me1">setupSpriteVideo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
				<span class="br0">&#125;</span>
			<span class="br0">&#125;</span>
			<span class="kw3">catch</span><span class="br0">&#40;</span><span class="kw3">error</span>:<span class="kw3">Error</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="kw3">this</span>.<span class="me1">setupSpriteVideo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		protected <span class="kw2">function</span> teardownStream<span class="br0">&#40;</span><span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>	
			<span class="kw3">try</span>
			<span class="br0">&#123;</span>
				<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="me1">m_stageVideo</span><span class="br0">&#41;</span>
				<span class="br0">&#123;</span>
					<span class="kw3">this</span>.<span class="me1">m_stageVideo</span>.<span class="me1">viewPort</span> = <span class="kw2">new</span> Rectangle<span class="br0">&#40;</span><span class="kw3">this</span>.<span class="me1">x</span>, <span class="kw3">this</span>.<span class="me1">y</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;
					<span class="kw3">this</span>.<span class="me1">m_stageVideo</span>.<span class="me1">attachNetStream</span><span class="br0">&#40;</span><span class="kw2">null</span><span class="br0">&#41;</span>;
				<span class="br0">&#125;</span>
				<span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="me1">m_netStream</span><span class="br0">&#41;</span>
				<span class="br0">&#123;</span>
					<span class="kw3">super</span>.<span class="me1">attachNetStream</span><span class="br0">&#40;</span><span class="kw2">null</span><span class="br0">&#41;</span>;
					<span class="kw3">this</span>.<span class="kw3">clear</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
				<span class="br0">&#125;</span>
&nbsp;
			<span class="br0">&#125;</span>
			<span class="kw3">catch</span><span class="br0">&#40;</span><span class="kw3">error</span>:<span class="kw3">Error</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="br0">&#125;</span>
		<span class="br0">&#125;</span>	
&nbsp;
&nbsp;
		protected <span class="kw2">function</span> layoutView<span class="br0">&#40;</span><span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>
			<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">this</span>.<span class="me1">m_stageVideo</span><span class="br0">&#41;</span>
				<span class="kw3">this</span>.<span class="me1">m_stageVideo</span>.<span class="me1">viewPort</span> = <span class="kw2">new</span> Rectangle<span class="br0">&#40;</span><span class="kw3">this</span>.<span class="me1">x</span>, <span class="kw3">this</span>.<span class="me1">y</span>, <span class="kw3">this</span>.<span class="kw3">width</span>, <span class="kw3">this</span>.<span class="kw3">height</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		protected <span class="kw2">function</span> onAddedToStage<span class="br0">&#40;</span>p_event:Event<span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>
			<span class="co1">//this.stage.addEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY, this.onStageVideoAvailabilityChanged);</span>
			<span class="kw3">this</span>.<span class="me1">setupStageVideo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
			<span class="kw3">this</span>.<span class="me1">layoutView</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		protected <span class="kw2">function</span> onRemovedFromStage<span class="br0">&#40;</span>p_event:Event<span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>	
			<span class="co1">//this.stage.removeEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY, this.onStageVideoAvailabilityChanged);</span>
			<span class="kw3">this</span>.<span class="me1">teardownStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		protected <span class="kw2">function</span> onRenderStateChanged<span class="br0">&#40;</span>p_event:Event<span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>
			<span class="kw1">switch</span><span class="br0">&#40;</span>StageVideoEvent<span class="br0">&#40;</span>p_event<span class="br0">&#41;</span>.<span class="kw3">status</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="kw1">case</span> VideoEvent.<span class="me1">RENDER_STATUS_UNAVAILABLE</span>: 
					<span class="kw3">this</span>.<span class="me1">teardownStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
					<span class="kw3">this</span>.<span class="me1">setupStageVideo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
					<span class="kw1">break</span>;
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
&nbsp;
&nbsp;
		protected <span class="kw2">function</span> onStageVideoAvailabilityChanged<span class="br0">&#40;</span>p_event:Event<span class="br0">&#41;</span>:<span class="kw3">void</span>
		<span class="br0">&#123;</span>
			<span class="kw3">this</span>.<span class="me1">teardownStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
			<span class="kw3">this</span>.<span class="me1">setupStageVideo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/2010/12/simplifying-stagevideo-with-stagevideoproxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tablets</title>
		<link>http://www.kennybunch.com/2010/11/tablets/</link>
		<comments>http://www.kennybunch.com/2010/11/tablets/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 20:45:03 +0000</pubDate>
		<dc:creator>kbunch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=277</guid>
		<description><![CDATA[Why a Tablet? The tablet seemed to be a niche product until Steve Jobs came along and said the iPad was the most revolutionary computing device since the personal PC. Most of the vocal web responded with shock in thinking Steve and finally fallen off his rocker. Had he finally come out with a flop [...]]]></description>
				<content:encoded><![CDATA[<h2>Why a Tablet?</h2>
<p>The tablet seemed to be a niche product until Steve Jobs came along and said the iPad was the most revolutionary computing device since the personal PC. Most of the vocal web responded with shock in thinking Steve and finally fallen off his rocker. Had he finally come out with a flop for Apple? or was he on to something? </p>
<p>If you step back for a moment and look at what the tablet represents, you realize it is definitely the next step in casual mass web consumption. Why do I say that? Take your average Joe Somebody internet user, he is very different than your vocal web user. Your vocal web user, which is probably you if you are reading this entry, publishes the web, they don&#8217;t consume it. They use their computer heavily to enter complex data and interact with everything digital. Joe Somebody on the other end consumes the web. He just uses it to view content. Though he may publish content to it as well, it is simple content (email, video, photos, etc.). Therefore Joe doesn&#8217;t need a complex device to interact with what he consumes or publishes. In fact, the simpler the device and more convenient the better. A tablet is much easier to use than a lap top. It is smaller, it doesn&#8217;t have to be opened and situated on a surface, and it is simpler to interact with. Try using either in a small environment like a plane (in Coach) and the differences will stand out dramatically.</p>
<h2>Here they come</h2>
<p>Even though the vocal web was somewhat dismissive of the iPad, device manufacturers understood what was going on.<br />
The message is simple &#8211; <b>Mass markets will ditch their PCs and laptops for tablets once they realize the convenience</b>. </p>
<p>In Q4 of 2010, we are now seeing what the device manufacturers are responding with. The tablets are coming in like the waves of a hurricane. So we are all left to sift thru device after device wondering which one will be our initial purchase. A devices true success over another completely depends on what it feels like to interact with it versus another. Joe Somebody doesn&#8217;t care what software is running on the system or what runs and what doesn&#8217;t. He just wants it to be a beautiful experience. The better the device feels in his hand, the smoother/faster it appears to run, the more of his content that he can consume, the elegance of the interface and how easy it is to use all play into this experience. The device that does it the best will win. </p>
<h2>iPad vs the competition</h2>
<p>The iPad is nice, Apple focuses on experience first and they were the first to really put their stamp on this space so they have a lead. However, it all boils down to experience. If someone beats Apple at this game they win. With a ton of competition sitting in the distance, will someone come along and grab the pie? Android tablets are marching in like a CGI scene in Star Wars, but the Android OS still feels like a nerd put Linux on a touch screen. Don&#8217;t get me wrong, I&#8217;m a nerd, I like the under pinnings of the OS, but PLEASE Google use your $ and get some serious UI and interaction designers. Oddly, the one that seems to stand above the others is BlackBerry&#8217;s Playbook. You have to ask yourself, really? I mean BlackBerry the BlackBerry who seems primarily focused on business? Oddly enough, yes. The device is smaller, thinner, faster, and its interface seems like a visual motion masterpiece. You can read the specs and it seemingly dwarfs the iPad, but at the end of that day that doesn&#8217;t matter to a mass market. Probably the only specifications they ever read are on food containers. Point blank, it seems like a nicer experience.  Sitting across from Martha Stewart at a conference who could probably be a decent gauge for for Sally Somebody, her reactions seemed to agree. When the Playbook was presented, her interest peaked and her questions went flying. Consumers want pretty things that are a joy to use. Apple gets it, now even the suits at BlackBerry get it. Given the amount of mobile and tablet work we are doing at Dreamsocket, you can bet we&#8217;ll have a stockpile of play toys. It is fitting that the Playbook tops our list for the most anticipated device. However, in the end only time will tell and the device that feels the best will win.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/2010/11/tablets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embedding JavaScript into a SWF</title>
		<link>http://www.kennybunch.com/2009/09/embedding-javascript-into-a-swf/</link>
		<comments>http://www.kennybunch.com/2009/09/embedding-javascript-into-a-swf/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 16:11:59 +0000</pubDate>
		<dc:creator>kbunch</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=272</guid>
		<description><![CDATA[Developers that have been using Flex should be pretty familiar by now with the Embed metadata tag which allows you to embed assets into a SWF (like images, SWFs, XML, etc). This option has also been added to CS4 (CS4 uses the Flex SDK to complete this task). What some of you may not know [...]]]></description>
				<content:encoded><![CDATA[<p>Developers that have been using Flex should be pretty familiar by now with the <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=embed_3.html">Embed metadata tag</a> which allows you to embed assets into a SWF (like images, SWFs, XML, etc). This option has also been added to CS4 (CS4 uses the Flex SDK to complete this task). </p>
<p>What some of you may not know or though of, is that you can actually embed JavaScript libraries into your SWF and have your SWF write those libs to the pages DOM. We&#8217;ve been using this technique for a while. However, when someone asked for a reference on the subject, I searched the web and didn&#8217;t find one. So here we are <img src='http://www.kennybunch.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>This technique is quite simple. The basics of it are that you embed the JavaScript library using the embed syntax, then create a Class that references it when instantiated, instantiate that class, get the string representation of the instance, and send that string to the page to be embedded using a JavaScript eval statement.</p>
<p>To illustrate this, lets create a JavaScript file called hello.js which has a single function hello that throws an JS alert.</p>
<p>Hello.js</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="javascript"><pre class="de1"><span class="kw2">function</span> hello<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
     <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;hello&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p>Now lets create the ActionScript file that embeds the JS into a SWF, writes it to the page, and calls the hello function in the lib.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="actionscript"><pre class="de1">package 
<span class="br0">&#123;</span>
	<span class="kw3">import</span> flash.<span class="me1">display</span>.<span class="me1">Sprite</span>;
	<span class="kw3">import</span> flash.<span class="me1">external</span>.<span class="me1">ExternalInterface</span>;
&nbsp;
	<span class="kw3">public</span> <span class="kw2">class</span> EmbeddedJavaScriptExample <span class="kw3">extends</span> Sprite
	<span class="br0">&#123;</span>
		<span class="co1">// embed the JavaScript into the SWF</span>
		<span class="br0">&#91;</span>Embed<span class="br0">&#40;</span>source=<span class="st0">&quot;hello.js&quot;</span>, mimeType=<span class="st0">&quot;application/octet-stream&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
		<span class="co1">// create a class that can instantiate the JavaScript for embedding</span>
		<span class="kw3">private</span> <span class="kw3">static</span> const HelloJS:<span class="kw2">Class</span>;
&nbsp;
		<span class="kw3">public</span> <span class="kw2">function</span> EmbeddedJavaScriptExample<span class="br0">&#40;</span><span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			<span class="kw1">if</span> <span class="br0">&#40;</span>ExternalInterface.<span class="me1">available</span><span class="br0">&#41;</span>
			<span class="br0">&#123;</span>
				<span class="co1">// embed the JavaScript to the page</span>
				ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;eval&quot;</span>, <span class="kw2">new</span> HelloJS<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="kw3">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
				<span class="co1">// the embedded JavaScript has a function call named hello</span>
				<span class="co1">// now that it has been embedded to the page call it</span>
				ExternalInterface.<span class="kw3">call</span><span class="br0">&#40;</span><span class="st0">&quot;hello&quot;</span><span class="br0">&#41;</span>;
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p>You can <a href='http://www.kennybunch.com/blog/wp-content/uploads/2009/09/embeddedjavascriptexample.zip'>download the full example here.</a></p>
<p>Pretty nifty eh? Hope this shows you a neat little trick to use in distributing some of your SWF/JS libraries.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/2009/09/embedding-javascript-into-a-swf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bear on a Wire (previously Poor Bear) IPhone game released</title>
		<link>http://www.kennybunch.com/2009/09/bear-on-a-wire-previously-poor-bear-iphone-game-released/</link>
		<comments>http://www.kennybunch.com/2009/09/bear-on-a-wire-previously-poor-bear-iphone-game-released/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 14:57:22 +0000</pubDate>
		<dc:creator>kbunch</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[IPhone]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=267</guid>
		<description><![CDATA[Bear on a Wire Trailer from bearzo on Vimeo. The Game Our first IPhone game, previously code named Poor Bear is officially available in the app store today under the name Bear on a Wire. For those of you who followed the progression of the game on our site (1, 2, 3, 4) know that [...]]]></description>
				<content:encoded><![CDATA[<p><object width="400" height="267"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6367707&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6367707&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="267"></embed></object>
<p><a href="http://vimeo.com/6367707">Bear on a Wire Trailer</a> from <a href="http://vimeo.com/user2239705">bearzo</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<h2>The Game</h2>
<p>Our <a href="http://bearonawire.com">first IPhone game</a>, previously code named Poor Bear is officially <a href="http://itunes.com/app/bearonawire">available in the app store today</a> under the name Bear on a Wire. For those of you who followed the progression of the game on our site (<a href="http://dreamsocket.com/news/category/development/annoucing-project-codename-poor-bear">1</a>,  <a href="http://dreamsocket.com/news/category/development/poor-bear-stage-2-design">2</a>, <a href="http://dreamsocket.com/news/category/development/poor-bear-update-3-development-progress">3</a>, <a href="http://dreamsocket.com/news/category/development/poor-bear-update-4-collision-detection">4</a>) know that this game didn&#8217;t start with designs, requirements, deadlines, or the promise of gold bars. Instead it was built on the premise that we could make something fun that we molded just how we wanted it.  That mold shifted and turned over time. Even at the starting gate, we didn&#8217;t even know what type of game we were making. The game really grew organically and took on a life of its own.  I&#8217;m personally blown away with the outcome, especially considering this was Chad&#8217;s (the developer)  first game and he went into it not knowing Objective C.  The design is a work of art as well. However, for those of you know <a href="http://tvmstudio.com">Trevor (the designer)</a>, know that you could expect nothing less. Words can&#8217;t do justice to what 1 designer and 1 developer have done with this game. It is simply amazing and even though it is our own game, none of us can stop playing. That was the point though. We built something we loved. We hope you will too!</p>
<h2>Support Us</h2>
<p>We appreciate any support you can give us. For those with an IPhone grab the game now, rate it, and review it!<br />
APP STORE: <a href="http://itunes.com/app/bearonawire">http://itunes.com/app/bearonawire</a></p>
<p>For those wanting to get the word out. Here are some links to blog, twitter, AIM, tell someone on a subway, etc. We will have flyers too that you can print and post on bathroom walls, telephone polls, and anywhere in eyes view.<br />
SHARE THE BEAR!</p>
<p>APP STORE: <a href="http://itunes.com/app/bearonawire">http://itunes.com/app/bearonawire</a><br />
SITE: <a href="http://bearonawire.com">http://bearonawire.com</a><br />
TWITTER: <a href="http://twitter.com/bearonawire">http://twitter.com/bearonawire</a><br />
VIMEO: <a href="http://www.vimeo.com/6367707">http://www.vimeo.com/6367707</a><br />
YOUTUBE: <a href="http://www.youtube.com/dreamsocket">http://www.youtube.com/dreamsocket</a></p>
<h2>Press Release</h2>
<p>Dreamsocket &#038; TVM Studio are excited to announce they have just released Bear On A Wire. </p>
<p>URL: <a href="http://bearonawire.com/">http://bearonawire.com/</a></p>
<p>Apple app store link: <a href="http://itunes.com/app/bearonawire">http://itunes.com/app/bearonawire</a></p>
<p>About the game:<br />
Our green hero, Bearzo, has had it! No more performing for &#8220;THE MAN&#8221; day in and day out. What! Do you think he is some kind of dancing bear? NO&#8230; he is a high wire bear, and it&#8217;s time for him to make his great escape from the Big Top. He loves his fans and his work, but he just wants to be free and feel his scarf blow in the wind as he shreds wire with the most insane moves ever attempted &#8230; on a Moped&#8230; on top of high voltage power lines. Get ready to feel the power of the 49cc, two stroke, and single cylinder stallion!</p>
<p>As you tear off on the wire, try to balance Bearzo and keep him from fallingdown into the 1.21 gigawatts that alternate through the wires below him (Ah, the smell of burnt bear hair). While balancing on the wire, acquire crazy mad points by using the different stunt key combinations to generate some MOPED MAYHEM (ECO..ECo..eco) Bearzo&#8217;s stunts include no hands, half twist, full twist, bear buck, back roll, front roll, jump roll, grinder, spin roll, spin buck, spin buck grinder, coat tail, coat tail kick, and the next to impossible coat tail kick spin grinder. Combine these stunts with full flips, double flips&#8230; triple flips&#8230;? Now you are just being crazy! Collect coins and rack up even more points. I know&#8230;you never saw collectable coins coming. Don&#8217;t get caught hibernating b/c it&#8217;s about to get all GRIZZLY up in here!</p>
<p>Get pumped for BEAR ON A WIRE.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/2009/09/bear-on-a-wire-previously-poor-bear-iphone-game-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presenting at the Flex User group in Atlanta tonight</title>
		<link>http://www.kennybunch.com/2009/04/presenting-at-the-flex-user-group-in-atlanta-tonight/</link>
		<comments>http://www.kennybunch.com/2009/04/presenting-at-the-flex-user-group-in-atlanta-tonight/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 15:51:38 +0000</pubDate>
		<dc:creator>kbunch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=264</guid>
		<description><![CDATA[Its late notice, but better late than never. I will be presenting along with Alan Queen tonight at Atlanta&#8217;s Flex User Group in Buckhead. Alan will begin the night with talking about dynamic audio with Flex/Flash/Air and then I&#8217;ll close it out talking about general media applications and our framework. The meeting starts at 6:30 [...]]]></description>
				<content:encoded><![CDATA[<p>Its late notice, but better late than never. I will be presenting along with Alan Queen tonight at Atlanta&#8217;s Flex User Group in Buckhead. Alan will begin the night with talking about dynamic audio with Flex/Flash/Air and then I&#8217;ll close it out talking about general media applications and our framework.</p>
<p>The meeting starts at 6:30 and is at<br />
Echo Eleven&#8217;s offices<br />
3525 Piedmont Rd NE<br />
Building 7, Suite 400<br />
Atlanta, GA 30305</p>
<p>The <a href="http://www.meetup.com/atlflex/calendar/9984133/">meetup site has more details</a>. Definitely come out if you can, it looks to be a great meeting! If you do, <a href="http://www.meetup.com/atlflex/calendar/9984133/">make sure to RSVP</a> as it looks like the list is pretty large right now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/2009/04/presenting-at-the-flex-user-group-in-atlanta-tonight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Collision Detection and Poor Bear</title>
		<link>http://www.kennybunch.com/2009/04/collision-detection-and-poor-bear/</link>
		<comments>http://www.kennybunch.com/2009/04/collision-detection-and-poor-bear/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 20:39:04 +0000</pubDate>
		<dc:creator>kbunch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=262</guid>
		<description><![CDATA[Chad posted a nice article on Dreamsocket.com outlining some problems he was trying to solve with doing collision detection and his solution. It is an interesting read and gives you some technical insight into some of our development process with Project Poor Bear. Check it out when you get a chance.]]></description>
				<content:encoded><![CDATA[<p>Chad posted a <a href="http://dreamsocket.com/news/category/development/poor-bear-update-4-collision-detection">nice article on Dreamsocket.com</a> outlining some problems he was trying to solve with doing collision detection and his solution. It is an interesting read and gives you some technical insight into some of our development process with Project Poor Bear.  <a href="http://dreamsocket.com/news/category/development/poor-bear-update-4-collision-detection">Check it out</a> when you get a chance. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/2009/04/collision-detection-and-poor-bear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Media Framework license and pricing changes</title>
		<link>http://www.kennybunch.com/2009/04/media-framework-license-and-pricing-changes/</link>
		<comments>http://www.kennybunch.com/2009/04/media-framework-license-and-pricing-changes/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 18:52:14 +0000</pubDate>
		<dc:creator>kbunch</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=255</guid>
		<description><![CDATA[Today we introduced a new license and pricing model for the Dreamsocket Media Framework. The new license model: $99 &#8211; Individual $350 &#8211; Small Business (2 &#8211; 20 employees) $895 &#8211; Midsize Business (21 -50 employees) $1895 &#8211; Large Business (51+ employees) To see all the details of the change and why we did it, [...]]]></description>
				<content:encoded><![CDATA[<p>Today we introduced a <a href="http://dreamsocket.com/news/category/general/media-framework-license-and-price-changes">new license and pricing model</a> for the <a href="http://dreamsocket.com/products/actionscript-media-framework/overview">Dreamsocket Media Framework</a>. </p>
<h2>The new license model:</h2>
<ul>
<li>$99   &#8211; Individual</li>
<li>$350 &#8211; Small Business (2 &#8211; 20 employees)</li>
<li>$895 &#8211; Midsize Business (21 -50 employees)</li>
<li>$1895 &#8211; Large Business (51+ employees)</li>
</ul>
<p>To see all the details of the change and why we did it, <a href="http://dreamsocket.com/news/category/general/media-framework-license-and-price-changes">check the post over on our site</a>.</p>
<p>If you haven&#8217;t <a href="http://dreamsocket.com/products/actionscript-media-framework/overview">checked out or grabbed your copy of the product</a>, now is a great time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/2009/04/media-framework-license-and-pricing-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clean Media Framework Documentation on Dreamsocket.com and in AS2 1.1.68 and AS3 1.1.84 release</title>
		<link>http://www.kennybunch.com/2009/04/clean-media-framework-documentation-on-dreamsocketcom-and-in-as2-1168-and-as3-1184-release/</link>
		<comments>http://www.kennybunch.com/2009/04/clean-media-framework-documentation-on-dreamsocketcom-and-in-as2-1168-and-as3-1184-release/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 18:12:01 +0000</pubDate>
		<dc:creator>kbunch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kennybunch.com/blog/?p=253</guid>
		<description><![CDATA[We updated all the ActionScript Media Framework documentation on the site today along with all the documentation in the product downloads. Though we put out a new release, nothing really changed but the docs and those changes were simple. We removed all uncommented private/protected class properties from the documentation. This makes reading the documentation less [...]]]></description>
				<content:encoded><![CDATA[<p>We updated all the <a href="http://dreamsocket.com/support/documentation">ActionScript Media Framework documentation on the site</a> today along with all the documentation in the <a href="http://dreamsocket.com/products/actionscript-media-framework/overview">product downloads</a>. Though we put out a new release, nothing really changed but the docs and those changes were simple. We removed all uncommented private/protected class properties from the documentation. This makes reading the documentation less of a headache since its less clutter.</p>
<p><a href="http://dreamsocket.com/news/category/development/modified-as2api-source-code">Anyone that saw our earlier post on the as2api source code changes</a>, some of the capabilites that allowed us to selectively clean up the ActionScript 2 code base are in that post. Good times <img src='http://www.kennybunch.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Stay tuned for more goodies!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kennybunch.com/2009/04/clean-media-framework-documentation-on-dreamsocketcom-and-in-as2-1168-and-as3-1184-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.110 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-06-19 18:09:08 -->
