<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Rotaercz's Weblog</title>
	<atom:link href="http://rotaercz.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://rotaercz.wordpress.com</link>
	<description>My Code Collection</description>
	<lastBuildDate>Wed, 02 Feb 2011 22:17:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='rotaercz.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Rotaercz's Weblog</title>
		<link>http://rotaercz.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://rotaercz.wordpress.com/osd.xml" title="Rotaercz&#039;s Weblog" />
	<atom:link rel='hub' href='http://rotaercz.wordpress.com/?pushpress=hub'/>
		<item>
		<title>[AS3] BasicScrollBar (no buttons)</title>
		<link>http://rotaercz.wordpress.com/2011/02/02/as3-basicscrollbar-no-buttons/</link>
		<comments>http://rotaercz.wordpress.com/2011/02/02/as3-basicscrollbar-no-buttons/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 22:17:57 +0000</pubDate>
		<dc:creator>rotaercz</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>

		<guid isPermaLink="false">http://rotaercz.wordpress.com/?p=82</guid>
		<description><![CDATA[package { import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Rectangle; public class BasicScrollBar { private var _mcScrollBar:MovieClip; private var _mcScrollArea:MovieClip; // the area under the scroller private var _mcScroller:MovieClip; // the scroller is the thing that you can drag to scroll private var _mcScrolled:MovieClip; // the area that is actually scrolled private var _mcScrolledMask:MovieClip; // [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=82&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>package {<br />
	import flash.display.MovieClip;<br />
	import flash.events.Event;<br />
	import flash.events.MouseEvent;<br />
	import flash.geom.Rectangle;</p>
<p>	public class BasicScrollBar {<br />
		private var _mcScrollBar:MovieClip;</p>
<p>		private var _mcScrollArea:MovieClip; // the area under the scroller<br />
		private var _mcScroller:MovieClip; // the scroller is the thing that you can drag to scroll<br />
		private var _mcScrolled:MovieClip; // the area that is actually scrolled<br />
		private var _mcScrolledMask:MovieClip; // mask for scrolled</p>
<p>		private var _scrollTrack:Rectangle;</p>
<p>		protected var _nScrollerLocation:Number; // a 0~1 value</p>
<p>		public function BasicScrollBar(mcScrollBar:MovieClip) {<br />
			_mcScrollBar = mcScrollBar;</p>
<p>			_mcScrollArea = _mcScrollBar.getChildByName(&#8220;mcScrollArea&#8221;) as MovieClip;<br />
			_mcScroller = _mcScrollBar.getChildByName(&#8220;mcScroller&#8221;) as MovieClip;<br />
			_mcScrolled = _mcScrollBar.getChildByName(&#8220;mcScrolled&#8221;) as MovieClip;<br />
			_mcScrolledMask = _mcScrollBar.getChildByName(&#8220;mcScrolledMask&#8221;) as MovieClip;<br />
			_mcScrolled.mask = _mcScrolledMask;</p>
<p>			_scrollTrack = new Rectangle(_mcScroller.width/2, 0, 0, _mcScrollArea.height &#8211; _mcScroller.height); // scroll track</p>
<p>			_mcScroller.addEventListener(MouseEvent.MOUSE_DOWN, OnMouseDown);<br />
		}</p>
<p>		private function OnMouseDown(e:MouseEvent):void {<br />
			_mcScroller.startDrag(false, _scrollTrack);</p>
<p>			_mcScrollBar.stage.addEventListener(MouseEvent.MOUSE_MOVE, OnMouseMoveHandler);<br />
			_mcScrollBar.stage.addEventListener(MouseEvent.MOUSE_UP, OnMouseUpHandler);<br />
		}</p>
<p>		private function OnMouseMoveHandler(e:MouseEvent):void {<br />
			_nScrollerLocation = &#8211; (_mcScroller.y) / (_mcScrollArea.height &#8211; _mcScroller.height);<br />
			SetScrolled( _nScrollerLocation );<br />
		}</p>
<p>		private function OnMouseUpHandler(e:MouseEvent):void {<br />
			_mcScroller.stopDrag();</p>
<p>			_mcScrollBar.stage.removeEventListener(MouseEvent.MOUSE_MOVE, OnMouseMoveHandler);<br />
			_mcScrollBar.stage.removeEventListener(MouseEvent.MOUSE_UP, OnMouseUpHandler);<br />
		}</p>
<p>		private function SetScrolled(nLocation:Number):void { // takes values between 0~1<br />
			var nScrollBarTotalHeight:Number = _mcScrollArea.height;<br />
			var nScrollAmountTotal:Number = _mcScrolled.height &#8211; nScrollBarTotalHeight;<br />
			var nNewPosition:Number = nLocation * nScrollAmountTotal;</p>
<p>			if (nNewPosition &lt;= 0) {<br />
				_mcScrolled.y = nNewPosition;<br />
			}<br />
		}<br />
	}<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rotaercz.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rotaercz.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rotaercz.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rotaercz.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rotaercz.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rotaercz.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rotaercz.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rotaercz.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rotaercz.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rotaercz.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rotaercz.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rotaercz.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rotaercz.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rotaercz.wordpress.com/82/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=82&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rotaercz.wordpress.com/2011/02/02/as3-basicscrollbar-no-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4e425a2ecdca3687fe977e4bb22d0db4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rotaercz</media:title>
		</media:content>
	</item>
		<item>
		<title>[AS3] RandomNumber</title>
		<link>http://rotaercz.wordpress.com/2010/08/13/as3-randomnumber/</link>
		<comments>http://rotaercz.wordpress.com/2010/08/13/as3-randomnumber/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 14:49:44 +0000</pubDate>
		<dc:creator>rotaercz</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>

		<guid isPermaLink="false">http://rotaercz.wordpress.com/?p=75</guid>
		<description><![CDATA[private function RandomNumber(low:Number=0, high:Number=1):Number { return Math.floor(Math.random() * (1+high-low)) + low; }<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=75&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>private function RandomNumber(low:Number=0, high:Number=1):Number {<br />
return Math.floor(Math.random() * (1+high-low)) + low;<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rotaercz.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rotaercz.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rotaercz.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rotaercz.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rotaercz.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rotaercz.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rotaercz.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rotaercz.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rotaercz.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rotaercz.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rotaercz.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rotaercz.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rotaercz.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rotaercz.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=75&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rotaercz.wordpress.com/2010/08/13/as3-randomnumber/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4e425a2ecdca3687fe977e4bb22d0db4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rotaercz</media:title>
		</media:content>
	</item>
		<item>
		<title>[AS3] ScrollBar</title>
		<link>http://rotaercz.wordpress.com/2010/08/10/as3-scrollbar/</link>
		<comments>http://rotaercz.wordpress.com/2010/08/10/as3-scrollbar/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 14:29:05 +0000</pubDate>
		<dc:creator>rotaercz</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>

		<guid isPermaLink="false">http://rotaercz.wordpress.com/?p=72</guid>
		<description><![CDATA[package { import __AS3__.vec.Vector; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Rectangle; public class BasicScrollBar extends MovieClip { protected var _mcUpArrow:MovieClip; protected var _mcDownArrow:MovieClip; protected var _mcScroller:MovieClip; // the scroller is the thing that you can drag to scroll protected var _mcScrollArea:MovieClip; // the area under the scroller protected var _mcScrolled:MovieClip; // the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=72&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>package {<br />
import __AS3__.vec.Vector;<br />
import flash.display.MovieClip;<br />
import flash.display.Sprite;<br />
import flash.events.Event;<br />
import flash.events.MouseEvent;<br />
import flash.geom.Rectangle;</p>
<p>public class BasicScrollBar extends MovieClip {<br />
protected var _mcUpArrow:MovieClip;<br />
protected var _mcDownArrow:MovieClip;<br />
protected var _mcScroller:MovieClip; // the scroller is the thing that you can drag to scroll<br />
protected var _mcScrollArea:MovieClip; // the area under the scroller<br />
protected var _mcScrolled:MovieClip; // the area that is actually scrolled<br />
protected var _mcScrolledMask:MovieClip; // mask for scrolled</p>
<p>protected var _scrollTrack:Rectangle; // the scroller track (limits the movement)</p>
<p>protected var _nScrollerLocation:Number; // a 0~1 value</p>
<p>protected var _nScrollSpeed:Number;</p>
<p>public function BasicScrollBar() {<br />
init();<br />
initListeners();<br />
}</p>
<p>public function cleanUp():void {<br />
_mcUpArrow.removeEventListener(MouseEvent.CLICK, onUpArrow);<br />
_mcDownArrow.removeEventListener(MouseEvent.CLICK, onDownArrow);<br />
_mcScroller.removeEventListener(MouseEvent.MOUSE_DOWN, onScroll);<br />
}</p>
<p>private function init():void {<br />
_mcUpArrow = getChildByName(&#8220;mcUpArrow&#8221;) as MovieClip;<br />
_mcDownArrow = getChildByName(&#8220;mcDownArrow&#8221;) as MovieClip;<br />
_mcScroller = getChildByName(&#8220;mcScroller&#8221;) as MovieClip;<br />
_mcScrollArea = getChildByName(&#8220;mcScrollArea&#8221;) as MovieClip;<br />
_mcScrolled = getChildByName(&#8220;mcScrolled&#8221;) as MovieClip;<br />
_mcScrolledMask = getChildByName(&#8220;mcScrolledMask&#8221;) as MovieClip;</p>
<p>_mcScrolledMask.width = Math.abs(_mcScrolled.x);<br />
_mcScrolledMask.height = _mcUpArrow.height + _mcScrollArea.height + _mcDownArrow.height;<br />
_mcScrolled.mask = _mcScrolledMask;</p>
<p>_scrollTrack = new Rectangle(0, _mcScroller.height, 0, _mcScrollArea.height &#8211; _mcScroller.height); // scroll track</p>
<p>_nScrollSpeed = 10;<br />
}</p>
<p>private function initListeners():void {<br />
_mcUpArrow.buttonMode = true;<br />
_mcDownArrow.buttonMode = true;<br />
//            _mcScroller.buttonMode = true;</p>
<p>_mcUpArrow.addEventListener(MouseEvent.CLICK, onUpArrow);<br />
_mcDownArrow.addEventListener(MouseEvent.CLICK, onDownArrow);<br />
_mcScroller.addEventListener(MouseEvent.MOUSE_DOWN, onScroll);<br />
}</p>
<p>private function onUpArrow(e:MouseEvent):void { // clicked up arrow<br />
if ( _mcScroller.y &gt; _mcUpArrow.height ) {<br />
_mcScroller.y = _mcScroller.y &#8211; _nScrollSpeed;</p>
<p>if (_mcScroller.y &lt; _mcUpArrow.height) { _mcScroller.y = _mcUpArrow.height; }<br />
}</p>
<p>_nScrollerLocation = &#8211; ((_mcUpArrow.height &#8211; _mcScroller.y) / (_mcScrollArea.height &#8211; _mcScroller.height));<br />
setScrolled( _nScrollerLocation );<br />
}</p>
<p>private function onDownArrow(e:MouseEvent):void { // clicked down arrow<br />
if ( _mcScroller.y &lt; _mcScrollArea.height ) {<br />
_mcScroller.y = _mcScroller.y + _nScrollSpeed;</p>
<p>if ( _mcScroller.y &gt; _mcScrollArea.height ) { _mcScroller.y = _mcScrollArea.height; }<br />
}</p>
<p>_nScrollerLocation = &#8211; ((_mcUpArrow.height &#8211; _mcScroller.y) / (_mcScrollArea.height &#8211; _mcScroller.height));<br />
setScrolled( _nScrollerLocation );<br />
}</p>
<p>private function onScroll(e:MouseEvent):void {<br />
_mcScroller.startDrag(false, _scrollTrack); // move the scrollbar</p>
<p>stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler);<br />
stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);<br />
}</p>
<p>private function onMouseMoveHandler(e:MouseEvent):void {<br />
_nScrollerLocation = &#8211; ((_mcUpArrow.height &#8211; _mcScroller.y) / (_mcScrollArea.height &#8211; _mcScroller.height));</p>
<p>setScrolled( _nScrollerLocation );<br />
}</p>
<p>private function onMouseUpHandler(e:MouseEvent):void {<br />
_mcScroller.stopDrag();</p>
<p>stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler);<br />
stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);<br />
}</p>
<p>private function setScrolled(nLocation:Number):void { // takes values between 0~1<br />
var nScrollBarTotalHeight:Number = _mcUpArrow.height + _mcScrollArea.height + _mcDownArrow.height;<br />
var nScrollAmountTotal:Number = _mcScrolled.height &#8211; nScrollBarTotalHeight;<br />
var nNewPosition:Number = -nLocation * nScrollAmountTotal;</p>
<p>if (nNewPosition &lt;= 0) {<br />
_mcScrolled.y = nNewPosition;<br />
}<br />
}<br />
}<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rotaercz.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rotaercz.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rotaercz.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rotaercz.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rotaercz.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rotaercz.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rotaercz.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rotaercz.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rotaercz.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rotaercz.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rotaercz.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rotaercz.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rotaercz.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rotaercz.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=72&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rotaercz.wordpress.com/2010/08/10/as3-scrollbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4e425a2ecdca3687fe977e4bb22d0db4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rotaercz</media:title>
		</media:content>
	</item>
		<item>
		<title>[AS3] Mp3Loader</title>
		<link>http://rotaercz.wordpress.com/2010/07/29/as3-mp3loader/</link>
		<comments>http://rotaercz.wordpress.com/2010/07/29/as3-mp3loader/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 15:42:51 +0000</pubDate>
		<dc:creator>rotaercz</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>

		<guid isPermaLink="false">http://rotaercz.wordpress.com/?p=69</guid>
		<description><![CDATA[package { import flash.events.Event; import flash.events.EventDispatcher; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.net.URLRequest; public class Mp3Loader extends EventDispatcher { public static const LOADED:String = &#8220;loaded&#8221;; public static const FINISHED_PLAYING:String = &#8220;finishedPlaying&#8221;; private var _url:String; private var _sound:Sound; private var _channel:SoundChannel; public function Mp3Loader(url:String) { _url = url; _sound = new Sound(new URLRequest(_url)); _sound.addEventListener(Event.COMPLETE, OnMp3Loaded); [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=69&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>package {<br />
import flash.events.Event;<br />
import flash.events.EventDispatcher;<br />
import flash.media.Sound;<br />
import flash.media.SoundChannel;<br />
import flash.media.SoundTransform;<br />
import flash.net.URLRequest;</p>
<p>public class Mp3Loader extends EventDispatcher {<br />
public static const LOADED:String = &#8220;loaded&#8221;;<br />
public static const FINISHED_PLAYING:String = &#8220;finishedPlaying&#8221;;</p>
<p>private var _url:String;<br />
private var _sound:Sound;<br />
private var _channel:SoundChannel;</p>
<p>public function Mp3Loader(url:String) {<br />
_url = url;<br />
_sound = new Sound(new URLRequest(_url));<br />
_sound.addEventListener(Event.COMPLETE, OnMp3Loaded);<br />
}</p>
<p>/* GETTERS *******************************************************************************/<br />
public function get channel():SoundChannel {<br />
return _channel;<br />
}</p>
<p>public function get sound():Sound {<br />
return _sound;<br />
}</p>
<p>/* SETTERS *******************************************************************************/<br />
public function PlayMusic():void {<br />
_channel = _sound.play();<br />
_channel.addEventListener(Event.SOUND_COMPLETE, OnSongOver);<br />
}</p>
<p>public function StopMusic():void {<br />
if (_channel != null) {<br />
_channel.removeEventListener(Event.SOUND_COMPLETE, OnSongOver);<br />
_channel.stop();<br />
}<br />
}</p>
<p>/* EVENT DISPATCHERS *********************************************************************/<br />
private function OnMp3Loaded(e:Event):void {<br />
dispatchEvent(new Event(Mp3Loader.LOADED));<br />
}</p>
<p>private function OnSongOver(e:Event):void {<br />
dispatchEvent(new Event(Mp3Loader.FINISHED_PLAYING));<br />
}<br />
}<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rotaercz.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rotaercz.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rotaercz.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rotaercz.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rotaercz.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rotaercz.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rotaercz.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rotaercz.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rotaercz.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rotaercz.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rotaercz.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rotaercz.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rotaercz.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rotaercz.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=69&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rotaercz.wordpress.com/2010/07/29/as3-mp3loader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4e425a2ecdca3687fe977e4bb22d0db4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rotaercz</media:title>
		</media:content>
	</item>
		<item>
		<title>[AS3] BasicButton</title>
		<link>http://rotaercz.wordpress.com/2010/06/07/as3-basicbutton/</link>
		<comments>http://rotaercz.wordpress.com/2010/06/07/as3-basicbutton/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 20:57:53 +0000</pubDate>
		<dc:creator>rotaercz</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>

		<guid isPermaLink="false">http://rotaercz.wordpress.com/?p=59</guid>
		<description><![CDATA[package { import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; public class BasicButton { public static const UP:String = &#8220;up&#8221;; public static const OVER:String = &#8220;over&#8221;; public static const DOWN:String = &#8220;down&#8221;; public static const DISABLE:String = &#8220;disable&#8221;; private var _mc:MovieClip; private var _handler:Function; private var _enabled:Boolean; // enable/disable public function BasicButton(mc:MovieClip, handler:Function=null) { _mc = mc; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=59&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>package {<br />
import flash.display.MovieClip;<br />
import flash.events.Event;<br />
import flash.events.MouseEvent;</p>
<p>public class BasicButton {<br />
public static const UP:String = &#8220;up&#8221;;<br />
public static const OVER:String = &#8220;over&#8221;;<br />
public static const DOWN:String = &#8220;down&#8221;;<br />
public static const DISABLE:String = &#8220;disable&#8221;;</p>
<p>private var _mc:MovieClip;<br />
private var _handler:Function;<br />
private var _enabled:Boolean; // enable/disable</p>
<p>public function BasicButton(mc:MovieClip, handler:Function=null) {<br />
_mc = mc;<br />
_handler = handler;<br />
_enabled = true;</p>
<p>_mc.gotoAndStop(UP);</p>
<p>_mc.buttonMode = true;<br />
_mc.useHandCursor = true;</p>
<p>_mc.addEventListener(MouseEvent.MOUSE_OVER, myMouseOver);<br />
_mc.addEventListener(MouseEvent.MOUSE_OUT, myMouseOut);<br />
_mc.addEventListener(MouseEvent.MOUSE_DOWN, myMouseDown);<br />
}</p>
<p>/* CLEANUP ******************************************************************/<br />
public function destroy():void {<br />
_mc.removeEventListener(MouseEvent.MOUSE_OVER, myMouseOver);<br />
_mc.removeEventListener(MouseEvent.MOUSE_OUT, myMouseOut);<br />
_mc.removeEventListener(MouseEvent.MOUSE_DOWN, myMouseDown);<br />
}</p>
<p>/* SETTERS ******************************************************************/<br />
public function enable(b:Boolean):void {<br />
_enabled = b;<br />
_mc.buttonMode = _enabled;<br />
_mc.useHandCursor = _enabled;</p>
<p>if (_enabled) {<br />
_mc.gotoAndStop(UP);<br />
}<br />
else {<br />
_mc.gotoAndStop(DISABLE);<br />
}<br />
}</p>
<p>/* HANDLERS *****************************************************************/<br />
private function myMouseOver(e:MouseEvent):void {<br />
if (_enabled) { // if it&#8217;s not disabled&#8230;<br />
_mc.gotoAndStop(OVER);<br />
}<br />
}</p>
<p>private function myMouseOut(e:MouseEvent):void {<br />
if (_enabled) { // if it&#8217;s not disabled&#8230;<br />
_mc.gotoAndStop(UP);<br />
}<br />
}</p>
<p>private function myMouseDown(e:MouseEvent):void {<br />
if (_enabled) { // if it&#8217;s not disabled&#8230;<br />
_mc.gotoAndStop(DOWN);</p>
<p>_mc.stage.addEventListener(MouseEvent.MOUSE_UP, myMouseUp);<br />
}<br />
}</p>
<p>private function myMouseUp(e:MouseEvent):void {<br />
_mc.stage.removeEventListener(MouseEvent.MOUSE_UP, myMouseUp);</p>
<p>if (_mc.hitTestPoint(_mc.stage.mouseX, _mc.stage.mouseY)) {<br />
_mc.gotoAndStop(UP);<br />
_handler();<br />
}<br />
else {<br />
_mc.gotoAndStop(UP);<br />
}<br />
}<br />
}<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rotaercz.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rotaercz.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rotaercz.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rotaercz.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rotaercz.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rotaercz.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rotaercz.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rotaercz.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rotaercz.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rotaercz.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rotaercz.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rotaercz.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rotaercz.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rotaercz.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=59&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rotaercz.wordpress.com/2010/06/07/as3-basicbutton/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4e425a2ecdca3687fe977e4bb22d0db4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rotaercz</media:title>
		</media:content>
	</item>
		<item>
		<title>[AS3] SwfLoader</title>
		<link>http://rotaercz.wordpress.com/2010/04/21/as3-swfloader/</link>
		<comments>http://rotaercz.wordpress.com/2010/04/21/as3-swfloader/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 18:44:00 +0000</pubDate>
		<dc:creator>rotaercz</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>

		<guid isPermaLink="false">http://rotaercz.wordpress.com/?p=55</guid>
		<description><![CDATA[package { import flash.display.Loader; import flash.display.LoaderInfo; import flash.net.URLRequest; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.EventDispatcher; public class SwfLoader extends EventDispatcher { public static var LOADED:String = &#8220;loaded&#8221;; private var _myLoader:Loader; private var _myLoaderInfo:LoaderInfo; private var _myURLRequest:URLRequest; private var _mySwf:Object; private var _mySwfClass:Object; private var _mySwfPercentLoaded:uint; private var _myPreLoaderBar:Object; public function SwfLoader(url:String, preLoaderBar:Object=null) { _myLoader = new [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=55&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>package {<br />
import flash.display.Loader;<br />
import flash.display.LoaderInfo;<br />
import flash.net.URLRequest;<br />
import flash.events.Event;<br />
import flash.events.ProgressEvent;<br />
import flash.events.EventDispatcher;</p>
<p>public class SwfLoader extends EventDispatcher {<br />
public static var LOADED:String = &#8220;loaded&#8221;;</p>
<p>private var _myLoader:Loader;<br />
private var _myLoaderInfo:LoaderInfo;<br />
private var _myURLRequest:URLRequest;<br />
private var _mySwf:Object;<br />
private var _mySwfClass:Object;<br />
private var _mySwfPercentLoaded:uint;<br />
private var _myPreLoaderBar:Object;</p>
<p>public function SwfLoader(url:String, preLoaderBar:Object=null) {<br />
_myLoader = new Loader();<br />
_myURLRequest = new URLRequest(url);<br />
_myPreLoaderBar = preLoaderBar;</p>
<p>_myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, OnProgressHandler);<br />
_myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, OnLoadComplete);<br />
_myLoader.load(_myURLRequest);<br />
}</p>
<p>public function get PercentLoaded():uint {<br />
return _mySwfPercentLoaded;<br />
}</p>
<p>public function get Swf():Object {<br />
return _mySwf;<br />
}</p>
<p>public function get SwfClass():Object {<br />
return _mySwfClass;<br />
}</p>
<p>/* EVENT HANDLER *************************************************************************/<br />
private function OnProgressHandler(e:ProgressEvent):void {<br />
if(_myPreLoaderBar != null) { // if a preloader bar has been given, pass percentage loaded<br />
_mySwfPercentLoaded = uint( (e.bytesLoaded / e.bytesTotal) * 100 );<br />
_myPreLoaderBar.SetPercent(_mySwfPercentLoaded);<br />
}<br />
}</p>
<p>private function OnLoadComplete(e:Event):void {<br />
_mySwf = e.target.content; // same as _myLoader.content;</p>
<p>_myLoaderInfo = e.target as LoaderInfo;<br />
_mySwfClass = _myLoaderInfo.content;</p>
<p>dispatchEvent(new Event(SwfLoader.LOADED));<br />
}<br />
}<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rotaercz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rotaercz.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rotaercz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rotaercz.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rotaercz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rotaercz.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rotaercz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rotaercz.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rotaercz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rotaercz.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rotaercz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rotaercz.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rotaercz.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rotaercz.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=55&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rotaercz.wordpress.com/2010/04/21/as3-swfloader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4e425a2ecdca3687fe977e4bb22d0db4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rotaercz</media:title>
		</media:content>
	</item>
		<item>
		<title>[AS3] External Wav Player</title>
		<link>http://rotaercz.wordpress.com/2010/03/22/as3-external-wav-player/</link>
		<comments>http://rotaercz.wordpress.com/2010/03/22/as3-external-wav-player/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 18:40:56 +0000</pubDate>
		<dc:creator>rotaercz</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>

		<guid isPermaLink="false">http://rotaercz.wordpress.com/?p=51</guid>
		<description><![CDATA[[WavPlayer.as] package { import flash.events.Event; import flash.events.ProgressEvent; import flash.events.EventDispatcher; import flash.events.IOErrorEvent; import flash.net.URLRequest; import flash.net.URLStream; import flash.media.SoundChannel; import flash.utils.ByteArray; import flash.utils.Endian; import flash.display.Loader; import flash.display.LoaderInfo; import flash.media.Sound; import flash.media.SoundTransform; import flash.media.SoundChannel; public class WavPlayer { private var _myUrl:String; private var _byteStream:URLStream; private var _wavFormat:PCMFormat; private var _sound:Sound; private var _channel:SoundChannel; public function WavPlayer(myUrl:String = null) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=51&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>[WavPlayer.as]</p>
<p>package {<br />
import flash.events.Event;<br />
import flash.events.ProgressEvent;<br />
import flash.events.EventDispatcher;<br />
import flash.events.IOErrorEvent;<br />
import flash.net.URLRequest;<br />
import flash.net.URLStream;<br />
import flash.media.SoundChannel;<br />
import flash.utils.ByteArray;<br />
import flash.utils.Endian;<br />
import flash.display.Loader;<br />
import flash.display.LoaderInfo;<br />
import flash.media.Sound;<br />
import flash.media.SoundTransform;<br />
import flash.media.SoundChannel;</p>
<p>public class WavPlayer {<br />
private var _myUrl:String;<br />
private var _byteStream:URLStream;<br />
private var _wavFormat:PCMFormat;<br />
private var _sound:Sound;<br />
private var _channel:SoundChannel;</p>
<p>public function WavPlayer(myUrl:String = null) {<br />
super();</p>
<p>Init();<br />
InitListeners();</p>
<p>Load(myUrl);<br />
}</p>
<p>/* PUBLIC ********************************************************************************/<br />
public function Load(myUrl:String = null):void {<br />
if (myUrl != null) {<br />
_myUrl = myUrl;</p>
<p>var myUrlRequest:URLRequest = new URLRequest(myUrl);<br />
_byteStream.load(myUrlRequest);<br />
}<br />
}</p>
<p>public function CleanUp():void {<br />
_byteStream.removeEventListener(ProgressEvent.PROGRESS, LoadProgress);<br />
_byteStream.removeEventListener(Event.COMPLETE, LoadComplete);<br />
_byteStream.removeEventListener(IOErrorEvent.IO_ERROR, LoadError);<br />
}</p>
<p>/* INIT **********************************************************************************/<br />
private function Init():void {<br />
_myUrl = &#8220;&#8221;;<br />
_byteStream = new URLStream();<br />
}</p>
<p>private function InitListeners():void {<br />
_byteStream.addEventListener(ProgressEvent.PROGRESS, LoadProgress);<br />
_byteStream.addEventListener(Event.COMPLETE, LoadComplete);<br />
_byteStream.addEventListener(IOErrorEvent.IO_ERROR, LoadError);<br />
}</p>
<p>/* EVENT HANDLERS ************************************************************************/<br />
private function LoadProgress(e:ProgressEvent):void {<br />
trace(&#8220;bytesLoaded/bytesTotal: &#8220;+e.bytesLoaded.toString()+&#8221;/&#8221;+e.bytesTotal.toString());<br />
}</p>
<p>private function LoadError(e:IOErrorEvent):void {<br />
trace(&#8220;loadError&#8221;);<br />
}</p>
<p>private function LoadComplete(e:Event):void {<br />
trace(&#8220;loading complete&#8230; analyzing header&#8230;&#8221;);</p>
<p>var wavHeader:ByteArray = new ByteArray(); wavHeader.endian = Endian.LITTLE_ENDIAN;<br />
var wavData:ByteArray = new ByteArray(); wavData.endian = Endian.LITTLE_ENDIAN;</p>
<p>_byteStream.readBytes(wavHeader, 0, PCMFormat.HEADER_SIZE);<br />
_wavFormat = new PCMFormat();</p>
<p>try {<br />
_wavFormat.AnalyzeHeader(wavHeader);<br />
} catch (e:Error) {<br />
trace(e);<br />
return;<br />
}</p>
<p>var bytesToRead:uint = _byteStream.bytesAvailable &lt; _wavFormat._waveDataLength ? _byteStream.bytesAvailable : _wavFormat._waveDataLength;<br />
_byteStream.readBytes(wavData, 0, bytesToRead);<br />
var swf:SWFFormat = new SWFFormat(_wavFormat);<br />
var compiledSWF:ByteArray = swf.CompileSWF(wavData);<br />
var compiledSWFLoader:Loader = new Loader();<br />
compiledSWFLoader.loadBytes(compiledSWF);<br />
compiledSWFLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, generateCompleteHandler);<br />
}</p>
<p>private function generateCompleteHandler(e:Event):void {<br />
var soundClass:Class = LoaderInfo(e.target).applicationDomain.getDefinition(SWFFormat.CLASS_NAME) as Class;<br />
_sound = new soundClass() as Sound;<br />
_sound.play(0, 0, null);<br />
}<br />
}<br />
}</p>
<p>[PCMFormat.as]</p>
<p>package {<br />
import flash.utils.ByteArray;</p>
<p>public class PCMFormat {<br />
/* CLASS PROPERTIES **********************************************************************/<br />
public static const HEADER_SIZE:uint = 44;</p>
<p>public var _channels:uint;<br />
public var _sampleRate:uint;<br />
public var _byteRate:uint;<br />
public var _blockAlign:uint;<br />
public var _bitsPerSample:uint;<br />
public var _waveDataLength:uint;<br />
public var _fullDataLength:uint;</p>
<p>/* CONSTRUCTOR ***************************************************************************/<br />
public function PCMFormat() {</p>
<p>}</p>
<p>/* PUBLIC METHODS ************************************************************************/<br />
public function AnalyzeHeader(byteArray:ByteArray):void {<br />
var typeArray:ByteArray = new ByteArray();<br />
byteArray.readBytes(typeArray, 0, 4);</p>
<p>if (typeArray.toString() != &#8220;RIFF&#8221;) {<br />
throw new Error(&#8220;Error: incorrect RIFF header&#8221;);<br />
return;<br />
}</p>
<p>_fullDataLength = byteArray.readUnsignedInt()+8;<br />
byteArray.position = 0&#215;10;<br />
var chunkSize:Number = byteArray.readUnsignedInt();</p>
<p>if (chunkSize != 0&#215;10) {<br />
throw new Error(&#8220;Error: incorrect chunk size&#8221;);<br />
return;<br />
}</p>
<p>var isPCM:Boolean = Boolean(byteArray.readShort());</p>
<p>if (!isPCM) {<br />
throw new Error(&#8220;Error: this file is not PCM wave file&#8221;);<br />
return;<br />
}</p>
<p>_channels = byteArray.readShort();<br />
_sampleRate = byteArray.readUnsignedInt();</p>
<p>switch (_sampleRate) {<br />
case 44100:<br />
case 22050:<br />
case 11025:<br />
case 5512:<br />
break;<br />
default:<br />
throw new Error(&#8220;Decode error: incorrect sample rate&#8221;);<br />
return;<br />
}</p>
<p>_byteRate = byteArray.readUnsignedInt();<br />
_blockAlign = byteArray.readShort();<br />
_bitsPerSample = byteArray.readShort();<br />
byteArray.position += 0&#215;04;<br />
_waveDataLength = byteArray.readUnsignedInt();</p>
<p>if (!_blockAlign) {<br />
_blockAlign = _channels*_bitsPerSample/8;<br />
}</p>
<p>byteArray.position = 0;<br />
}<br />
}<br />
}</p>
<p>[SWFFormat.as]</p>
<p>package {<br />
import flash.utils.ByteArray;<br />
import flash.utils.Endian;</p>
<p>import PCMFormat;</p>
<p>public class SWFFormat {<br />
/* CLASS PROPERTIES **********************************************************************/<br />
private static const SWF_PART0:String = &#8220;46575309&#8243;;<br />
private static const SWF_PART1:String = &#8220;7800055F00000FA000000C01004411080000004302FFFFFFBF150B00000001005363656E6520310000BF14C7000000010000000010002E00000000080013574156506C61796572536F756E64436C6173730B666C6173682E6D6564696105536F756E64064F626A6563740C666C6173682E6576656E74730F4576656E744469737061746368657205160116031802160600050701020702040701050704070300000000000000000000000000010102080300010000000102010104010003000101050603D030470000010101060706D030D04900470000020201010517D0306500600330600430600230600258001D1D1D6801470000BF03&#8243;;<br />
private static const SWF_PART2:String = &#8220;3F131800000001000100574156506C61796572536F756E64436C61737300440B0800000040000000&#8243;;</p>
<p>public static const CLASS_NAME:String = &#8220;WAVPlayerSoundClass&#8221;;</p>
<p>private var _pcmFormat:PCMFormat;</p>
<p>/* CONSTRUCTOR ***************************************************************************/<br />
public function SWFFormat(format:PCMFormat) {<br />
_pcmFormat = format;<br />
}</p>
<p>/* PRIVATE METHODS ***********************************************************************/<br />
private function WriteBytesFromString(byteArray:ByteArray, bytesHexString:String):void {<br />
var length:uint = bytesHexString.length;</p>
<p>for (var i:uint = 0;i&lt;length;i+=2) {<br />
var hexByte:String = bytesHexString.substr(i, 2);<br />
var byte:uint = Number(&#8220;0x&#8221;+hexByte);<br />
byteArray.writeByte(byte);<br />
}<br />
}</p>
<p>private function TraceArray(array:ByteArray):String { // for debug<br />
var out:String = &#8220;&#8221;;<br />
var pos:uint = array.position;<br />
array.position = 0;</p>
<p>while (array.bytesAvailable) {<br />
var str:String = array.readUnsignedByte().toString(16).toUpperCase();<br />
str = str.length &lt; 2 ? &#8220;0&#8243;+str : str;<br />
out += str+&#8217; &#8216;;<br />
}</p>
<p>array.position = pos;<br />
return out;<br />
}</p>
<p>private function GetFormatByte():uint {<br />
var byte:uint = (_pcmFormat._bitsPerSample == 0&#215;10) ? 0&#215;32 : 0&#215;00;<br />
byte += (_pcmFormat._channels-1);<br />
byte += 4*(Math.floor(_pcmFormat._sampleRate/5512.5).toString(2).length-1); // <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
return byte;<br />
}</p>
<p>/* PUBLIC METHODS ************************************************************************/<br />
public function CompileSWF(audioData:ByteArray):ByteArray {<br />
var dataLength:uint = audioData.length;<br />
var swfSize:uint = dataLength+307;<br />
var totalSamples:uint = dataLength/_pcmFormat._blockAlign;<br />
var output:ByteArray = new ByteArray();<br />
output.endian = Endian.LITTLE_ENDIAN;<br />
WriteBytesFromString(output, SWFFormat.SWF_PART0);<br />
output.writeUnsignedInt(swfSize);<br />
WriteBytesFromString(output, SWFFormat.SWF_PART1);<br />
output.writeUnsignedInt(dataLength+7);<br />
output.writeByte(1);<br />
output.writeByte(0);<br />
output.writeByte(GetFormatByte());<br />
output.writeUnsignedInt(totalSamples);<br />
output.writeBytes(audioData);<br />
WriteBytesFromString(output, SWFFormat.SWF_PART2);<br />
return output;<br />
}<br />
}<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rotaercz.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rotaercz.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rotaercz.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rotaercz.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rotaercz.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rotaercz.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rotaercz.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rotaercz.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rotaercz.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rotaercz.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rotaercz.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rotaercz.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rotaercz.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rotaercz.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=51&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rotaercz.wordpress.com/2010/03/22/as3-external-wav-player/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4e425a2ecdca3687fe977e4bb22d0db4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rotaercz</media:title>
		</media:content>
	</item>
		<item>
		<title>[AS3] XOR Ciper</title>
		<link>http://rotaercz.wordpress.com/2009/11/12/as3-xor-ciper/</link>
		<comments>http://rotaercz.wordpress.com/2009/11/12/as3-xor-ciper/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 16:40:08 +0000</pubDate>
		<dc:creator>rotaercz</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>

		<guid isPermaLink="false">http://rotaercz.wordpress.com/?p=47</guid>
		<description><![CDATA[package { public class XORcipher { public var _sKEY:String; public function XORcipher(xorKEY:String) { _sKEY = xorKEY; } // use to generate a random key public static function generateRandomKey( nLength:int, sCharsToUse:String=&#8221;0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz&#8221;):String { var aResult:Array = new Array(); var i:int; while (nLength&#8211;) { i = Math.floor(Math.random()*sCharsToUse.length); aResult.push(sCharsToUse.charAt(i)); } return aResult.join(&#8220;&#8221;); } // encrypt string data public function [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=47&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>package {<br />
public class XORcipher {<br />
public var _sKEY:String;</p>
<p>public function XORcipher(xorKEY:String) {<br />
_sKEY = xorKEY;<br />
}</p>
<p>// use to generate a random key<br />
public static function generateRandomKey( nLength:int, sCharsToUse:String=&#8221;0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz&#8221;):String {<br />
var aResult:Array = new Array();<br />
var i:int;</p>
<p>while (nLength&#8211;) {<br />
i = Math.floor(Math.random()*sCharsToUse.length);<br />
aResult.push(sCharsToUse.charAt(i));<br />
}</p>
<p>return aResult.join(&#8220;&#8221;);<br />
}</p>
<p>// encrypt string data<br />
public function encrypt(sSource:String):String {<br />
return escape(xor(sSource));<br />
}</p>
<p>// decrypt string data<br />
public function decrypt(sSource:String):String {<br />
return xor(unescape(sSource));<br />
}</p>
<p>private function xor(sSource:String):String {<br />
var aResult:Array = new Array();<br />
var nKeyLength:int = _sKEY.length;<br />
var fTempFunc:Function = String.fromCharCode;</p>
<p>for (var i:int=0; i&lt;sSource.length; ++i) {<br />
aResult.push( fTempFunc( sSource.charCodeAt(i)^_sKEY.charCodeAt(i%nKeyLength) ) );<br />
}</p>
<p>return aResult.join(&#8220;&#8221;);<br />
}<br />
}<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rotaercz.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rotaercz.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rotaercz.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rotaercz.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rotaercz.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rotaercz.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rotaercz.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rotaercz.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rotaercz.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rotaercz.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rotaercz.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rotaercz.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rotaercz.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rotaercz.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=47&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rotaercz.wordpress.com/2009/11/12/as3-xor-ciper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4e425a2ecdca3687fe977e4bb22d0db4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rotaercz</media:title>
		</media:content>
	</item>
		<item>
		<title>[AS3] Calculate distance between two xy points</title>
		<link>http://rotaercz.wordpress.com/2009/08/31/as3-calculate-distance-between-two-xy-points/</link>
		<comments>http://rotaercz.wordpress.com/2009/08/31/as3-calculate-distance-between-two-xy-points/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 15:27:18 +0000</pubDate>
		<dc:creator>rotaercz</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>

		<guid isPermaLink="false">http://rotaercz.wordpress.com/?p=43</guid>
		<description><![CDATA[private function calcDistance(nX1:Number, nY1:Number, nX2:Number, nY2:Number):Number { var dist:Number; var dx:Number; var dy:Number; dx = nX2-nX1; dy = nY2-nY1; dist = Math.sqrt(dx*dx + dy*dy); return dist; }<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=43&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>private function calcDistance(nX1:Number, nY1:Number, nX2:Number, nY2:Number):Number {<br />
var dist:Number;<br />
var dx:Number;<br />
var dy:Number;</p>
<p>dx = nX2-nX1;<br />
dy = nY2-nY1;<br />
dist = Math.sqrt(dx*dx + dy*dy);</p>
<p>return dist;<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rotaercz.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rotaercz.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rotaercz.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rotaercz.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rotaercz.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rotaercz.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rotaercz.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rotaercz.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rotaercz.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rotaercz.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rotaercz.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rotaercz.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rotaercz.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rotaercz.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=43&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rotaercz.wordpress.com/2009/08/31/as3-calculate-distance-between-two-xy-points/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4e425a2ecdca3687fe977e4bb22d0db4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rotaercz</media:title>
		</media:content>
	</item>
		<item>
		<title>[AS3] ImageLoader</title>
		<link>http://rotaercz.wordpress.com/2009/07/15/as3-imageloader/</link>
		<comments>http://rotaercz.wordpress.com/2009/07/15/as3-imageloader/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 14:13:00 +0000</pubDate>
		<dc:creator>rotaercz</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>

		<guid isPermaLink="false">http://rotaercz.wordpress.com/?p=40</guid>
		<description><![CDATA[package { import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; public class ImageLoader extends Sprite { private var _imageLoader:Loader; private var _iWidth:int; private var _iHeight:int; private var _nPercentLoaded:Number; // a value of 0~100 public function ImageLoader( sUrl:String, width:int, height:int ) { _imageLoader = new Loader(); _imageLoader.load(new URLRequest( sUrl )); _iWidth = [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=40&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>package {<br />
import flash.display.Sprite;<br />
import flash.display.Loader;<br />
import flash.net.URLRequest;<br />
import flash.events.Event;<br />
import flash.events.IOErrorEvent;<br />
import flash.events.ProgressEvent;</p>
<p>public class ImageLoader extends Sprite {<br />
private var _imageLoader:Loader;<br />
private var _iWidth:int;<br />
private var _iHeight:int;<br />
private var _nPercentLoaded:Number; // a value of 0~100</p>
<p>public function ImageLoader( sUrl:String, width:int, height:int ) {<br />
_imageLoader = new Loader();<br />
_imageLoader.load(new URLRequest( sUrl )); _iWidth = width; _iHeight = height;</p>
<p>_imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);<br />
_imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);</p>
<p>_imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, catch_function);<br />
}</p>
<p>private function onLoadProgress(e:ProgressEvent):void {<br />
_nPercentLoaded = e.bytesLoaded / e.bytesTotal;<br />
_nPercentLoaded = Math.round(_nPercentLoaded * 100);<br />
}</p>
<p>private function onLoadComplete(e:Event):void {<br />
addChild( _imageLoader );<br />
_imageLoader.width = _iWidth;<br />
_imageLoader.height = _iHeight;<br />
}</p>
<p>private function catch_function(e:IOErrorEvent):void {<br />
// couldn&#8217;t find the file<br />
}<br />
}<br />
}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rotaercz.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rotaercz.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rotaercz.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rotaercz.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rotaercz.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rotaercz.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rotaercz.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rotaercz.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rotaercz.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rotaercz.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rotaercz.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rotaercz.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rotaercz.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rotaercz.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rotaercz.wordpress.com&amp;blog=2629572&amp;post=40&amp;subd=rotaercz&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rotaercz.wordpress.com/2009/07/15/as3-imageloader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4e425a2ecdca3687fe977e4bb22d0db4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rotaercz</media:title>
		</media:content>
	</item>
	</channel>
</rss>
