<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>SnippetRepoBrowser</title>
    <link>http://snippet.gnstudio.com/snippetrepobrowser/index</link>    
    <description>RSS Feed of SnippetRepoBrowser (Global RSS)</description>    
    <language>en-us</language>
    <pubDate>Thu, 09 Feb 2012 21:18:58 +0100</pubDate>
    <docs>SnippetRepoBrowser/index</docs>
    <generator>SnippetRepoBrowser Feed Generator</generator>
    <item>
      <title><![CDATA[Duplicate SWF or raster content of an Image component]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/94</link>
      <description><![CDATA[Using the BitmapData class is quite easy and fast copy or manipulate an external image loaded into a Flex application, it&#39;s quite interesting the difference between the data type of the content property of an Image component because it changes if a bitmap or a SWF has been loaded: <br /><ul><li>the first one is a Bitmap </li><li>the second on is a MovieClipLoaderAsset </li></ul><br /><br />In order to let you copy the content also with a SWF file loaded into the Image component you can use a Loader and the loadBytes() method.<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />&lt;mx:Application xmlns:mx=&quot;<a href="http://www.adobe.com/2006/mxml&quot;" target="_blank"><a href="http://www.adobe.com/2006/mxml&quot;" target="_blank">http://www.adobe.com/2006/mxml&quot;</a></a><br />        layout=&quot;vertical&quot;<br />        verticalAlign=&quot;middle&quot;<br />        backgroundColor=&quot;white&quot;&gt;<br /> <br />    &lt;mx:Script&gt;<br />        &lt;![CDATA[<br />        	import mx.core.MovieClipLoaderAsset;<br />        	import mx.core.BitmapAsset;<br />            import mx.collections.ArrayCollection;<br />            <br />            [Embed(source=&quot;placeholder.swf&quot;)]<br />			private const ARTWORK_PLACE_HOLDER_SWF:Class;<br />			<br />			[Embed(source=&quot;placeholder.png&quot;)]<br />			private const ARTWORK_PLACE_HOLDER_PNG:Class;<br /> <br />            [Bindable]<br />            private var collection:ArrayCollection = new ArrayCollection();<br /> 			<br /> 			private function handleImage(e:Event):void{<br /> 				<br /> 				if(e.currentTarget.selectedValue == &quot;PNG&quot;){<br /> 					<br /> 					img.source = ARTWORK_PLACE_HOLDER_PNG;<br /> 					<br /> 				}else{<br /> 					<br /> 					img.source = ARTWORK_PLACE_HOLDER_SWF;<br /> 					<br /> 				}<br /> 				<br /> 			}<br /> 			<br />            private function dumpImage(source:Image):void {<br />            	<br />            	var asset:* = source.content;<br />            	var data:BitmapData;<br />            	var bitmap:Bitmap;<br />            	<br />            	try{<br />            		<br />            		data = Bitmap(source.content).bitmapData;<br />                	bitmap = new Bitmap(data);<br />                	<br />                	collection.addItem({image:bitmap, label:&quot;item #&quot; + (collection.length + 1)});<br />            		<br />            	}catch(error:Error){<br />            		<br />            		var loader:Loader = new Loader();<br />            		<br />            		loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onBitmapData); <br />            		           		<br />            		var swf:MovieClipLoaderAsset = asset as MovieClipLoaderAsset;            		<br />            		loader.loadBytes(swf.movieClipData);<br />            		<br />            	}<br />            	<br />            }<br />            <br />            private function onBitmapData(e:Event):void{<br />            			<br />            	e.target.removeEventListener(e.type, arguments.callee);<br />            			<br />            	var content: MovieClip = MovieClip((e.currentTarget as LoaderInfo).content)<br />            	var data:BitmapData = new BitmapData(content.width, content.height);<br />            	data.draw(content, null, null, null, null, true)<br />            	var bitmap:Bitmap = new Bitmap(data)<br />            			<br />            	collection.addItem({image:bitmap, label:&quot;item #&quot; + (collection.length + 1)});<br />            			<br />            }<br />            <br />        ]]&gt;<br />    &lt;/mx:Script&gt;<br /> <br />    &lt;mx:HBox&gt;<br />        &lt;mx:Panel title=&quot;Source image&quot;&gt;<br />            &lt;mx:HBox verticalAlign=&quot;middle&quot; horizontalAlign=&quot;center&quot; width=&quot;100%&quot; height=&quot;100%&quot;&gt;<br />                &lt;mx:Image id=&quot;img&quot; source=&quot;{ARTWORK_PLACE_HOLDER_SWF}&quot; /&gt;<br />            &lt;/mx:HBox&gt;<br />            <br />            &lt;mx:RadioButtonGroup id=&quot;imageSelector&quot; change=&quot;handleImage(event)&quot; /&gt;<br />            &lt;mx:RadioButton label=&quot;SWF&quot; selected=&quot;true&quot; group=&quot;{imageSelector}&quot; /&gt;<br />            &lt;mx:RadioButton label=&quot;PNG&quot; group=&quot;{imageSelector}&quot; /&gt;<br /> <br />            &lt;mx:ControlBar&gt;<br />                &lt;mx:Button label=&quot;Copy image&quot; click=&quot;dumpImage(img)&quot; /&gt;<br />            &lt;/mx:ControlBar&gt;<br />        &lt;/mx:Panel&gt;<br /> <br />        &lt;mx:TileList id=&quot;tileList&quot; dataProvider=&quot;{collection}&quot; width=&quot;450&quot; height=&quot;500&quot; columnCount=&quot;4&quot; verticalScrollPolicy=&quot;on&quot;&gt;<br />            &lt;mx:itemRenderer&gt;<br />                &lt;mx:Component&gt;<br />                    &lt;mx:VBox&gt;<br />                        &lt;mx:Image source=&quot;{data.image}&quot; /&gt;<br />                        &lt;mx:Label text=&quot;{data.label}&quot; /&gt;<br />                    &lt;/mx:VBox&gt;<br />                &lt;/mx:Component&gt;<br />            &lt;/mx:itemRenderer&gt;<br />        &lt;/mx:TileList&gt;<br />    &lt;/mx:HBox&gt;<br /> <br />&lt;/mx:Application&gt;</pre></div><br /><br />]]></description>
      <author>giorgionatili</author>
      <pubDate>Mon, 04 Oct 2010 06:02:28 +0200</pubDate>
      <category>Flex 4.x</category>
      <guid>http://snippet.gnstudio.com/viewtopic/94</guid>
   </item><item>
      <title><![CDATA[Call AMF RPC methods from Flash]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/93</link>
      <description><![CDATA[If you would like consume some services through RemoteObject from Flash in the same fashion you do in Flex, you will need to follow these step: <br /><ul style="list-style-type:decimal"><li>Add the <span style="font-weight:bold">rpc.swc</span> and <span style="font-weight:bold">framework.swc</span> from your <span style="text-decoration:underline">{FLEX_HOME}/frameworks/libs</span> to you ptoject or .fla classpath </li><br /><li>Optional: If you are compiling an Actionscript Project in Flash Builder you&#39;ll also need the resource bundles for those swcs. So add also the rpc_<span style="font-weight:bold">rb.swc</span> and <span style="font-weight:bold">framework_rb.swc</span> from <span style="text-decoration:underline">{FLEX_HOME}/frameworks/locale</span> to your classpath. </li><br /><li>Look at the code below, the <span style="font-style:italic">initializeRPC </span>and <span style="font-style:italic">registerClasses </span>methods are what you need to make things work. </li><br /></ul><br />You are now ready to call remote methods via amf like this simple example. <br /><span style="font-weight:bold">Notes</span>: <br />You will bring nearly 100kb of footprint to your swf due to dependencies from the flex framework. You reduce that footprint by registering a custom collection class instead of the ArrayCollection. The only requirement is that your collection class implements the <span style="font-style:italic">IExternalizable</span> interface.<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">import mx.collections.ArrayCollection;<br />import mx.core.mx_internal;<br />import mx.logging.Log;<br />import mx.logging.targets.TraceTarget;<br />import mx.messaging.ChannelSet;<br />import mx.messaging.channels.AMFChannel;<br />import mx.messaging.config.ConfigMap;<br />import mx.messaging.config.LoaderConfig;<br />import mx.messaging.messages.AcknowledgeMessage;<br />import mx.messaging.messages.AcknowledgeMessageExt;<br />import mx.messaging.messages.CommandMessage;<br />import mx.messaging.messages.CommandMessageExt;<br />import mx.messaging.messages.ErrorMessage;<br />import mx.messaging.messages.RemotingMessage;<br />import mx.rpc.AbstractOperation;<br />import mx.rpc.events.FaultEvent;<br />import mx.rpc.events.ResultEvent;<br />import mx.rpc.remoting.RemoteObject;<br />import mx.utils.ObjectProxy;<br /><br />use namespace mx_internal;<br /><br />const ID:String = &quot;my-amf&quot;;<br />const ENDPOINT:String = &quot;<a href="http://your.domain/amf/gateway&quot;;" target="_blank"><a href="http://your.domain/amf/gateway&quot;;" target="_blank">http://your.domain/amf/gateway&quot;;</a></a><br />const DEFAULT_SOURCE:String = &quot;your.service&quot;;<br />const DEFAULT_SOURCE:String = &quot;your.service&quot;;<br /><br />var remoteObject:RemoteObject;<br /><br />/**<br /> * This initializes the rpc library.<br /> * After this you should see the requests going through.<br /> * Note: LoaderConfig won&#39;t show up in the code hints, so you have to write down the import manually.<br /> */<br />function initializeRPC():void {<br />	<br />	LoaderConfig.mx_internal::_url = loaderInfo.url; <br />	LoaderConfig.mx_internal::_parameters = loaderInfo.parameters;<br />}<br /><br />/**<br /> * We register a bunch of class aliases that are needed by the rpc methods.<br /> * The list *may be* incomplete, if you get some TypeCoertion error try registering that class.<br /> */<br />function registerClasses():void {<br />	<br />	registerClassAlias(&quot;flex.messaging.messages.ErrorMessage&quot;, ErrorMessage);<br />	registerClassAlias(&quot;flex.messaging.messages.CommandMessage&quot;, CommandMessage);<br />	registerClassAlias(&quot;flex.messaging.messages.RemotingMessage&quot;, RemotingMessage);<br />	registerClassAlias(&quot;flex.messaging.messages.AcknowledgeMessage&quot;, AcknowledgeMessage);<br />	registerClassAlias(&quot;DSC&quot;, CommandMessageExt);<br />	registerClassAlias(&quot;DSK&quot;, AcknowledgeMessageExt);<br />	registerClassAlias(&quot;flex.messaging.config.ConfigMap&quot;, ConfigMap);<br />	registerClassAlias(&quot;flex.messaging.io.ObjectProxy&quot;, ObjectProxy);<br />	registerClassAlias(&quot;flex.messaging.io.ArrayCollection&quot;, ArrayCollection);<br />}<br /><br />/**<br /> * Prepare the RemoteObject, creating the appropriate AMF channel<br /> * and setting up the default event handlers.<br /> */<br />function prepareDefaultRemoteObject():void {<br />	<br />	var channel:AMFChannel = new AMFChannel(ID, ENDPOINT);<br />	<br />	var channelSet:ChannelSet = new ChannelSet();<br />	channelSet.addChannel(channel);<br /><br />	remoteObject = new RemoteObject();<br />	remoteObject.source = DEFAULT_SOURCE;<br />	remoteObject.destination = DEFAULT_DESTINATION;<br />	remoteObject.channelSet = channelSet;<br />	remoteObject.addEventListener(FaultEvent.FAULT, onDefaultServiceFault);<br />	remoteObject.addEventListener(ResultEvent.RESULT, onDefaultServiceResult);<br />}<br /><br />/**<br /> * Create and execute the remote method.<br /> */<br />function makeAnonymousRemoteCall():void {<br />	<br />	var operation:AbstractOperation = ro.getOperation(&quot;getProduct&quot;);<br />	operation.send();<br />}<br /><br /><br />/**<br /> * Handles faulty replies from the remote methods.<br /> */<br />function onDefaultServiceFault(event:FaultEvent):void {<br />	<br />	trace(event.fault.faultDetail);<br />}<br /><br />/**<br /> * Handles successful replies from the remote methods.<br /> */<br />function onDefaultServiceResult(event:ResultEvent):void {<br />	<br />	trace(event.result.toString());<br />}<br /><br />// All RPC classes use the Flex logging API so enabling it in the Flash project could be helpful.<br />Log.addTarget(new TraceTarget());<br /><br />initializeRPC();<br />registerClasses();<br /><br />prepareDefaultRemoteObject();<br />makeAnonymousRemoteCall();</pre></div><br /><br />]]></description>
      <author>cyberpunk</author>
      <pubDate>Thu, 02 Sep 2010 11:15:23 +0200</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/93</guid>
   </item><item>
      <title><![CDATA[Binary search]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/90</link>
      <description><![CDATA[Binary search is a way of searching data inside a sorted list that can drastically reduce the time of the search operations.<br />In this example I&#39;m searching for an integer because it&#39;s the most reliable data type in as. When comparing strings or complex objects some expedient should be taken to be sure that the comparison it&#39;s correct. The Comparable interface of Java could be a good solution.<br />To give insight about how fast is this method, to run 500 searchs in a list of 1000000 items the binarySearch took 2 to 5 milliseconds doing only 16-17 comparisons. <br />The regular indexOf method of the Array class took 450 milliseconds to perform the same task.<br />The bit operations (&gt;&gt;&gt;) used to take the middle number (probe) also helped a bit, using a regular division (/2) increased the time to run the task to 4-9 milliseconds.<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">public function binarySearch(keys:Array, target:int):int<br />{<br />	var high:int = keys.length;<br />	var low:int = -1;<br /> <br />	while (high - low &gt; 1)<br />	{<br />		var probe:int = (low + high) &gt;&gt;&gt; 1;<br />		if (keys[probe] &gt; target)<br />		{<br />			high = probe;<br />		}<br />		else<br />		{<br />			low = probe;<br />		}<br />	}<br /> <br />	return (low == -1 || keys[low] !== target) ? -1 : low;<br />}</pre></div><br /><br />]]></description>
      <author>cyberpunk</author>
      <pubDate>Wed, 05 May 2010 18:32:37 +0200</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/90</guid>
   </item><item>
      <title><![CDATA[Extending a custom component]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/83</link>
      <description><![CDATA[If you are trying to extend a custom component and you get the following error<br /><br />&quot;Multiple sets of visual children have been specified for this component (base component definition and derived component definition).&quot;<br /><br />the problem is that you have created an MXML component with some children hardcoded;<br /><br />Surfing the net I&#39;ve found an interesting discussion <a href="http://www.tink.ws/blog/extending-your-own-mxml-components/" target="_blank">here</a> but the solution provided there hasn&#39;t convinced me at all.<br /><br />After some attempts I&#39;ve finally found a nice solution that is not to hardcode components inside the MXML but create components using actionscript and then add them to the displayList in the createChildren method.<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">override protected function childrenCreated():void{<br />	<br />	super.childrenCreated();<br />	<br />	if(!btn){<br />	<br />		btn = new Button();<br />		btn.label = &quot;my as button&quot;;<br />		addChild(btn);<br />	<br />	}<br /><br />}</pre></div><br /><br />]]></description>
      <author>fedele.marotti</author>
      <pubDate>Mon, 08 Feb 2010 17:45:59 +0100</pubDate>
      <category>Flex 3.x</category>
      <guid>http://snippet.gnstudio.com/viewtopic/83</guid>
   </item><item>
      <title><![CDATA[Circular preloader]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/69</link>
      <description><![CDATA[How to create a circular animation in As3, useful for preloaders<br />(tested on Flash Cs3/4 but it should works fine in Flex too)<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">var angle:Number = 0<br />var centerX:Number = 50<br />var centerY:Number = 50;<br />var radius:Number = 22;<br />var speed:Number = 0.1<br /> <br />var circle:Shape = new Shape();<br />addChild(circle)<br />circle.graphics.beginFill(0x00FF00);<br />circle.graphics.moveTo(centerX, centerY);<br /> <br />function onEnterFrame(e:Event) {<br /> <br /> if (angle &gt; 2 * Math.PI)<br />  this.removeEventListener(Event.ENTER_FRAME, onEnterFrame)<br /> <br /> trace(&quot;angle&quot;, angle)<br /> circle.graphics.lineTo(centerX + Math.cos(angle) * radius,<br />             centerY + Math.sin(angle) * radius);<br /> <br /> angle += speed;<br />}<br />this.addEventListener(Event.ENTER_FRAME, onEnterFrame)</pre></div><br /><br />]]></description>
      <author>flagers</author>
      <pubDate>Fri, 04 Dec 2009 03:55:02 +0100</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/69</guid>
   </item><item>
      <title><![CDATA[Duplicate a display object]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/54</link>
      <description><![CDATA[Quick and dirty solution to duplicate a DisplayObject in Flash, check the <span style="font-weight:bold">duplicate flex component</span> snippet to get a more elegant soltuion.<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">function duplicateDisplayObject(target:DisplayObject):DisplayObject {<br />        <br />       // create duplicate<br />        var targetClass:Class = Object(target).constructor;<br />        var duplicate:DisplayObject = new targetClass();<br />        <br />        // duplicate transformation properties<br />        duplicate.transform = target.transform;<br />        duplicate.filters = target.filters;<br />        duplicate.cacheAsBitmap = target.cacheAsBitmap;<br />        duplicate.opaqueBackground = target.opaqueBackground;<br />        <br />        // Check the scale9<br />        if (target.scale9Grid) {<br />           <br />            var rectangle:Rectangle = target.scale9Grid;           <br />            duplicate.scale9Grid = rectangle;<br /><br />        }<br />       <br />        return duplicate;<br />    }</pre></div><br /><br />]]></description>
      <author>Giorgio Natili</author>
      <pubDate>Mon, 09 Nov 2009 06:05:03 +0100</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/54</guid>
   </item><item>
      <title><![CDATA[Manage bitmap output levels]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/49</link>
      <description><![CDATA[Imagine to want to reach the same effect of the <a href="http://www.zuberphotographics.com/content/photoshop/levels-output.htm" target="_blank">output levels</a> panel you have in Photoshop through ActionScript, you can get the result by remaping the color channel values in an image that has up to four arrays of color palette data, one for each channel.<br /><img alt="" src="http://www.zuberphotographics.com/images/1420i.gif" border="0" /><br />In order to do this you can simply use the <a href="http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/BitmapData.html#paletteMap%28%29" target="_blank">paletteMap()</a> method of the BitmapData and recalculate the values for each channel to use inside the method accordingly to 2 different points (black and white).<br />Download the last release of nabiro to get the class that do the job for you.<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">&lt;mx:Application xmlns:mx=&quot;<a href="http://www.adobe.com/2006/mxml&quot;" target="_blank"><a href="http://www.adobe.com/2006/mxml&quot;" target="_blank">http://www.adobe.com/2006/mxml&quot;</a></a> layout=&quot;absolute&quot;&gt;<br />	<br />	&lt;mx:Script&gt;<br />		&lt;![CDATA[<br />			import com.gnstudio.nabiro.ui.images.utils.OutputLevels;<br />			import mx.events.SliderEvent;<br />			<br />			private var bmd:BitmapData;<br />			<br />			override protected function childrenCreated():void{<br />				<br />				super.childrenCreated();<br />				<br />				var url:URLRequest = new URLRequest(&quot;central_park.jpg&quot;)<br />				<br />				var loader:Loader = new Loader();<br />				loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageCompleted);<br />				<br />				loader.load(url);<br />				<br />			}<br />			<br />			<br />			private function imageCompleted(e:Event):void{<br />				<br />				e.target.removeEventListener(e.type, arguments.callee);<br />				<br />				bmd = Bitmap(e.currentTarget.content).bitmapData;<br />				<br />				var output:OutputLevels = new OutputLevels(100);<br />				image.source = new Bitmap(output.setLevels(bmd.clone(), 0, 200));<br />				<br />			}<br />			<br />			private function outputLevels(e:SliderEvent):void{<br />				<br />				var output:OutputLevels = new OutputLevels(e.target.values[0] + (e.target.values[1] - e.target.values[0]) / 2);<br />				image.source = new Bitmap(output.setLevels(bmd.clone(), e.target.values[0], e.target.values[1]));<br />				<br />			}<br />			<br />		]]&gt;<br />	&lt;/mx:Script&gt;<br />	<br />	&lt;mx:Image id=&quot;image&quot; verticalAlign=&quot;middle&quot; complete=&quot;imageCompleted(event)&quot; horizontalAlign=&quot;center&quot;  left=&quot;30&quot; right=&quot;30&quot; top=&quot;30&quot; bottom=&quot;30&quot;/&gt;<br />	&lt;mx:HSlider bottom=&quot;5&quot; right=&quot;30&quot; left=&quot;30&quot; minimum=&quot;0&quot; maximum=&quot;255&quot; thumbCount=&quot;2&quot; values=&quot;[0, 255]&quot; liveDragging=&quot;false&quot; change=&quot;outputLevels(event)&quot; /&gt;</pre></div><br /><br />]]></description>
      <author>Giorgio Natili</author>
      <pubDate>Mon, 09 Nov 2009 05:35:07 +0100</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/49</guid>
   </item><item>
      <title><![CDATA[load binary data via xml message]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/36</link>
      <description><![CDATA[say you are dealing with a backend via xml messages, for some instance you need to load binary data. Flash player can load images, sounds, videos and other movies, but these are operations that go separated from the data exchange context. You can join xml messages and binary content using base64 classes.<br />The advantages are:<br />- concurrent messages with content<br />- you can build up your own distributed objects<br />- more opportunities to hardening your movies, e.g content protection, cryptography, progressive and conditioned loading<br />and the cons:<br />- messages are greater, almost 20/30%<br />- if you plan to getting touch with real data, some ByteArray skills needed<br />- some people prefers amf, faster and data driven<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">// these two code files show how to load a sample image using xml message generated from php<br /><br /><br />// as3, TryB64php.as<br /><br />/**<br /> * @author jaco<br /> *<br /> * created on 16/10/2009 16.56.51<br /> */<br />package {<br /><br />	import flash.display.*;<br />	import flash.events.*;<br />	import flash.text.*;<br />	import flash.net.*;<br />	import flash.geom.*;<br />	import flash.utils.*;<br /><br />	// as3, got from <a href="http://dynamicflash.com/goodies/base64/" target="_blank"><a href="http://dynamicflash.com/goodies/base64/" target="_blank">http://dynamicflash.com/goodies/base64/</a></a><br />	// if you&#39;re in flex/air, there are mx.utils.Base64* classes<br />	import com.dynamicflash.util.Base64;<br /><br /><br />	/**<br />	 *<br />	 */<br />	public class TryB64php extends MovieClip {<br /><br />		private static const PHP_URL:String = &quot;get_xml_b64response.php&quot;;<br /><br />		private var ul:URLLoader;<br />		private var ld:Loader;<br /><br />		/**<br />		 * the constructor<br />		 */<br />		function TryB64php(){<br /><br />			var ur:URLRequest = new URLRequest(PHP_URL);<br />			ld = new Loader();<br />			ul = new URLLoader();<br /><br />			addChild(ld);<br /><br />			ul.addEventListener(Event.COMPLETE, onULComplete);<br />			ul.load(ur);<br />		}<br /><br />		private function onULComplete(evt:Event):void {<br /><br />			var xml:XML = XML(ul.data);<br /><br />			var ba:ByteArray = Base64.decodeToByteArray(xml);<br />			ld.loadBytes(ba);<br />		}<br />	}<br />}<br /><br /><br />// php, get_xml_b64response.php<br /><br />&lt;?php<br />/*<br /> * Created on 16/ott/2009<br /> *<br /> * jaco_at_pixeldump<br /> */<br /><br />define(&quot;XML_HEADER&quot;, &quot;&lt;?xml version=\&quot;1.0\&quot;?&gt;&quot;);<br />define(&quot;NL&quot;, &quot;\r\n&quot;);<br /><br />define(&quot;RESPONSE_INFO&quot;, &quot;info&quot;);<br />define(&quot;RESPONSE_VALUE_BASE64&quot;, &quot;base64&quot;);<br /><br />/**<br /> * read resource from path<br /> * @param file name<br /> * @param directory<br /> *<br /> * @return xml instance with base64 encoded data<br /> */<br />function get_resource($resFN, $resDir = &quot;./&quot;) {<br /><br />	$filePath = $resDir .$resFN;<br />	$fRes = file_get_contents($filePath, FILE_BINARY);<br /><br />	return create_simpleXmlMessage(base64_encode($fRes), RESPONSE_VALUE_BASE64);<br />}<br /><br />/**<br /> * create an xml message<br /> * @param message string<br /> * @param response type<br /> *<br /> * @return formatted xml instance with given data<br /> */<br />function create_simpleXmlMessage($str, $type = RESPONSE_INFO) {<br /><br />	$xmlStr = XML_HEADER .NL;<br />	$xmlStr .= create_xmlNode(&quot;response&quot;, $str, array(&quot;type&quot; =&gt; $type, &quot;timeStamp&quot; =&gt; mktime()));<br /><br />	return $xmlStr;<br />}<br /><br />/**<br /> * create a simple xml node with some data population<br /> * @param node name<br /> * @param node content<br /> * @param attributes<br /> * @param CDATA flag<br /> *<br /> * @return formatted xml node with given data<br /> */<br />function create_xmlNode($nodeName, $nodeContent = &quot;&quot;, $attrs = array(), $cDataFlag = true){<br /><br />	$xmlStr = &quot;&lt;&quot; .$nodeName .&quot; &quot;;<br />	$sfx1 = $cDataFlag ? &quot;&lt;![CDATA[&quot; : &quot;&quot;;<br />	$sfx2 = $cDataFlag ? &quot;]]&gt;&quot; : &quot;&quot;;<br /><br />	if(count($attrs))<br />		foreach($attrs as $k =&gt; $v) $xmlStr .= $k .&quot;=\&quot;&quot; .$v .&quot;\&quot; &quot; ;<br /><br />	if(strlen($nodeContent)){<br />		$xmlStr .= &quot;&gt;&quot; .$sfx1 .$nodeContent .$sfx2;<br />		$xmlStr .= &quot;&lt;/&quot; .$nodeName .&quot;&gt;&quot;;<br />	}<br />	else $xmlStr .= &quot;/&gt;&quot;;<br /><br />	return $xmlStr;<br />}<br /><br />// the app<br /><br />header(&quot;Content-type: text/xml&quot;);<br />echo get_resource(&quot;sample_avatar.png&quot;); // sample image<br />?&gt;<br /><br /></pre></div><br /><br />]]></description>
      <author>jaco</author>
      <pubDate>Fri, 16 Oct 2009 16:56:34 +0200</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/36</guid>
   </item><item>
      <title><![CDATA[Edit multiple items in sorted ArrayCollection]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/15</link>
      <description><![CDATA[<span style="font-family:arial"><span style="font-size: 10pt">Do following if you want to traverse through sorted ArrayCollection, update multiple items and trigger only one collection change event to optimize performance of components that use the collection.</span></span><br />&lt;!--<br />		@page { margin: 2cm }<br />		P { margin-bottom: 0.21cm }<br />	--&gt;<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">var collection:ArrayCollection = new ArrayCollection();<br /><br />collection.addItem({bar:&quot;bar1&quot;, foo:1});<br />collection.addItem({bar:&quot;bar2&quot;, foo:2});<br />collection.addItem({bar:&quot;bar3&quot;, foo:3});<br />collection.addItem({bar:&quot;bar4&quot;, foo:4});<br /><br />var sort:Sort = new Sort();<br />sort.fields = [new SortField(&quot;foo&quot;)];<br /><br />collection.sort = sort;<br />collection.refresh();<br /><br />collection.addEventListener(CollectionEvent.COLLECTION_CHANGE, function(e:CollectionEvent):void {<br />	<br />	trace(e.type);<br />	<br />});<br /><br />collection.disableAutoUpdate();<br />			<br />var cursor:IViewCursor = collection.createCursor();<br /><br />while (!cursor.afterLast) {<br />	<br />	cursor.current.foo++;<br />	<br />	cursor.view.itemUpdated(cursor.current);<br />	<br />	cursor.moveNext();<br />	<br />}<br /><br />collection.enableAutoUpdate();</pre></div><br /><br />]]></description>
      <author>ivan.varga</author>
      <pubDate>Fri, 04 Sep 2009 00:05:34 +0200</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/15</guid>
   </item><item>
      <title><![CDATA[Detect daily saving times]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/6</link>
      <description><![CDATA[Thanks mainly to the efforts of a London builder named William Willett         we have the controversial notion of daylight saving time (DST). This practice         means that in some locations, all clocks are put one hour ahead of UTC         time during the summer months.<br />Well, if you use local time on your site (in a real time clock for example)         and your site is viewed by someone out with the US, then at certain times         of year the time on your clock will be out by an hour. In the case of         Europe, between the last Sunday in March and the first Sunday in April         the local time on your machine will be one hour ahead of Flash local time. <br />      <br />This small script check the DST accordingly to US convention (first sunday of April last sunday of October) and can be adjusted for your needs in different countires.<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">var start:Date = new Date()<br />			<br />var startCounter:int = 1;<br />start.setMonth(3, startCounter);<br />			<br />for(var i:int = 0; i &lt; 10; i++){<br />				<br />    startCounter++<br />    start.setMonth(3, startCounter)<br />				<br />    if(start.getDay() == 0){<br />					<br />	 break;<br />					<br />    }<br />				<br />}<br />			<br />var end:Date = new Date();<br />var endCounter:int = 31;<br />			<br />end.setMonth(3, endCounter);<br />			<br />for(var j:int = 0; j &lt; 10; j++){<br />				<br />    endCounter--;<br />    end.setMonth(9, endCounter)<br />				<br />    if(end.getDay() == 0){<br />					<br />        break;<br />					<br />     }<br />				<br />}<br />			<br />trace(&quot;start date&quot;, start)<br />trace(&quot;end date&quot;, end)</pre></div><br /><br />]]></description>
      <author>Giorgio Natili</author>
      <pubDate>Wed, 02 Sep 2009 11:55:06 +0200</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/6</guid>
   </item><item>
      <title><![CDATA[HSLIDER and VSLIDER CUSTOM SKINS (FX3)]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/5</link>
      <description><![CDATA[<span style="font-weight:bold">Problem:</span> customize the HSlider / VSlider skin and add the handcursor to the track icon<br /><span style="font-weight:bold">Solution:</span> create two skin actionscript classes to customize the trackSkin and a thumbSkin styles <br /><img alt="" src="http://www.fabiobiondi.com/blog/wp-content/uploads/2009/08/hsliderskin.jpg" border="0" /><br />Main MXML File:<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />&lt;mx:Application xmlns:mx=&quot;<a href="http://www.adobe.com/2006/mxml&quot;" target="_blank"><a href="http://www.adobe.com/2006/mxml&quot;" target="_blank">http://www.adobe.com/2006/mxml&quot;</a></a> layout=&quot;vertical&quot;<br />	backgroundColor=&quot;#999999&quot;&gt;<br /><br />	&lt;mx:Script&gt;<br />		&lt;![CDATA[<br />			<br />			// The Custom Image for the Slider Thumb <br />			[Embed(source=&quot;assets/slider/slider_arrow.png&quot;)]<br />	    		public static const SLIDER_ARROW:Class;<br />	    <br />		]]&gt;<br />	&lt;/mx:Script&gt;<br />	<br />	<br />	<br />	&lt;!--  STANDARD SLIDER  --&gt; <br />	&lt;mx:HSlider width=&quot;100&quot; height=&quot;1&quot;<br />	 			 liveDragging=&quot;true&quot;<br />	 			 /&gt;			<br />	 			 <br />	&lt;mx:Spacer height=&quot;70&quot; /&gt;<br />	<br />	<br />	&lt;!--  SLIDER  WITH CUSTOM SKINS  --&gt; <br />	&lt;mx:HSlider width=&quot;100&quot; height=&quot;1&quot;<br />	 			 trackSkin=&quot;skins.IconSliderTrack&quot;<br />	 			 thumbSkin=&quot;{SLIDER_ARROW}&quot;<br />	 			 sliderThumbClass=&quot;skins.IconSliderThumb&quot;<br />	 			 liveDragging=&quot;true&quot;<br />	 			 /&gt;<br />	<br />	<br />&lt;/mx:Application&gt;<br /><br /><br /><br />//==============================================================================<br />//skins/IconSliderTrack.as<br />//==============================================================================<br />package skins<br />{   <br />    import mx.core.UIComponent;   <br />  <br />    public class IconSliderTrack extends UIComponent   <br />    {   <br />           <br />        /**<br />        * Modify the default track layout<br />        * <br />        */<br />        override protected function updateDisplayList(unscaledWidth:Number,<br />unscaledHeight:Number):void{   <br />            super.updateDisplayList(unscaledWidth, unscaledHeight);   <br />  			this.graphics.moveTo(0,0);   <br />            this.graphics.lineStyle(5,0x656565);   <br />	        <br />	        // Draw a curve instead of the classic line <br />	      	this.graphics.curveTo(unscaledWidth, 40, unscaledWidth, 0)<br />	        <br />	        // Draw a Bold Line <br />	        // NOTE: if you want to use this comment the previous line <br />	        //this.graphics.lineTo(unscaledWidth,0);<br />	        <br />        }   <br />    }   <br />} <br /><br /><br />//==============================================================================<br />//skins/IconSliderThumb.as<br />//==============================================================================<br />package skins {<br />	<br />    import mx.controls.sliderClasses.SliderThumb;<br /><br />    public class IconSliderThumb extends SliderThumb {<br />        <br />        public function IconSliderThumb() {<br />            super();<br />            <br />            /**<br />            *  You need to manually update the thumb width <br />            *  and height to the Thumg image dimensions,<br />            *  otherwise its displayed size won&#39;t be right.<br />            *  NOTE: try to comment following line to see the result <br />            */             <br />            this.width = 36;<br />            this.height = 35;<br />            this.buttonMode = true;<br />        }<br />    }<br />}<br /><br /><br /><br /><br /><br /></pre></div><br /><br />]]></description>
      <author>flagers</author>
      <pubDate>Mon, 31 Aug 2009 23:01:40 +0200</pubDate>
      <category>Flex 3.x</category>
      <guid>http://snippet.gnstudio.com/viewtopic/5</guid>
   </item><item>
      <title><![CDATA[Build a STORE LOCATOR using FLEX GOOGLE MAP]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/4</link>
      <description><![CDATA[I was playing with the Flex Google Map API and I think one of the coolest stuff is the Direction feature.<br /><br />In few words, you can do a query like this: &#39;from Milano to Torino&#39; and you&#39;ll get:<br />1) Distance<br />2) Trip duration<br />3) The complete travel displayed on Google Map<br />4) Many other usefull info (check GoogleMap website to get the API reference and other samples)<br /><br />In this script I simulate a Store Locator, where user digits its city in a TextInput and at the same time he can selects a store from a List.<br />Each time user will change selection we&#39;ll show the trip information (Distance + trip duration) displaying visual directions on the map too. <br /><br /><img alt="" src="http://www.fabiobiondi.com/blog/wp-content/uploads/2009/08/gmapsample.jpg" border="0" /><br /><span style="font-weight:bold"><span style="font-size: 10pt"><a href="http://www.fabiobiondi.com/blog/wp-content/uploads/2009/08/storelocator.swf" target="_blank"></a></span></span><br /><span style="font-weight:bold"><span style="font-size: 10pt"><a href="http://www.fabiobiondi.com/blog/wp-content/uploads/2009/08/storelocator.swf" target="_blank">See a live demo</a></span></span><br /><br />But you can do more... check the <a href="http://code.google.com/intl/it/apis/maps/documentation/flash/" target="_blank">Google Map Api web site</a> for more info<br />and remember to <a href="http://code.google.com/intl/it/apis/maps/signup.html" target="_blank">sign up for a key</a> or you won&#39;t be able to use GMAP on your web site<br /><span style="font-weight:bold"></span><br /><span style="font-weight:bold">FLEX CODE:</span><br />Create a new Flex Project and copy all the following code inside your main mxml file.<br />Remember to download the <a href="http://code.google.com/intl/it/apis/maps/documentation/flash/" target="_blank">GMap Flex SWC</a> component and to copy it on your <span style="font-style:italic">libs </span>folder<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">&lt;?xml version=&quot;1.0&quot;?&gt;<br />&lt;mx:Application xmlns:mx=&quot;<a href="http://www.adobe.com/2006/mxml&quot;" target="_blank"><a href="http://www.adobe.com/2006/mxml&quot;" target="_blank">http://www.adobe.com/2006/mxml&quot;</a></a> xmlns:maps=&quot;com.google.maps.*&quot; <br />	layout=&quot;absolute&quot; <br />	width=&quot;100%&quot; height=&quot;100%&quot; &gt;<br />  <br /><br />   &lt;mx:Script&gt;<br />       &lt;![CDATA[<br />       	import mx.events.ListEvent;<br />        import com.google.maps.interfaces.IPolyline;<br />        import com.google.maps.Map;<br />        import com.google.maps.MapEvent;<br />        import com.google.maps.LatLng;<br />        import com.google.maps.LatLngBounds;<br />        import com.google.maps.overlays.Marker;<br />        import com.google.maps.overlays.MarkerOptions;<br />        import com.google.maps.controls.ControlPosition;<br />        import com.google.maps.controls.MapTypeControl;<br />        import com.google.maps.services.*;<br />        import com.google.maps.MapAction;<br />        <br />        import mx.controls.Alert;<br />        import mx.collections.ArrayCollection;<br />            <br />        private var dir:Directions;<br />        <br />        <br />        /**<br />        * This method is called when the default Map is loaded <br />        * <br />        */<br />        private function onMapReady(event:Event):void {<br />            setupDirections();<br />            controlPanel.enabled = true;<br />        }<br />        <br />        /**<br />        * Define Direction class and its listeners <br />        * <br />        */<br />        private function setupDirections():void {    <br />        	<br />            dir = new Directions();<br />            dir.addEventListener(DirectionsEvent.DIRECTIONS_SUCCESS, onDirLoad);<br />            dir.addEventListener(DirectionsEvent.DIRECTIONS_FAILURE, onDirFail);<br />        }<br />        <br />        <br />        /**<br />        * Start a GMap Call to get distance between the selected store city and the user city <br />        * <br />        */<br />        private function processForm(event:ListEvent=null):void {<br />        	<br />        	// Set Directions Options (see GMAP API doc for properties details)<br />            var opts:DirectionsOptions = new DirectionsOptions({locale: &quot;English&quot;, travelMode: &quot;driving&quot;, avoidHighways: false})<br />            dir.setOptions(opts);<br />            <br />            // GMAP Query: From ... To ... <br />            dir.load(&quot;from: &quot; + from.text + &quot; to: &quot; + storeCities.selectedItem.data);<br />            <br />            // Disable query panel<br />            controlPanel.enabled = false;<br />        }<br />            <br />        /**<br />        * Direction Wrong Query (i.e. a city wasn&#39;t found in the db)  <br />        * <br />        */<br />        private function onDirFail(event:DirectionsEvent):void {<br />              Alert.show(&quot;Status: &quot; + event.directions.status);<br />              controlPanel.enabled = true;<br />        }<br />        <br />        /**<br />        * Direction Query SUCCESSFULLY   <br />        * <br />        */<br />        private function onDirLoad(event:DirectionsEvent):void {<br />        	<br />        	// Enable Query Panel<br />        	controlPanel.enabled = true;<br />        	<br />        	// Get Direction object<br />            var dir:Directions = event.directions;<br />            <br />            // Clear previous displayed directions <br />            map.clearOverlays(); <br />            <br />            // Display Directions on Map<br />            var directionsPolyline:IPolyline = dir.createPolyline();<br />            map.addOverlay(directionsPolyline);<br />            var directionsBounds:LatLngBounds = directionsPolyline.getLatLngBounds();<br />            <br />            // Fix map position<br />            map.setCenter(directionsBounds.getCenter());<br />            map.setZoom(map.getBoundsZoomLevel(directionsBounds));<br />       <br />       		// Display Markers (start and destination) <br />            var numRoutes:Number = dir.numRoutes;<br />            var startLatLng:LatLng = dir.getRoute(0).getStep(0).latLng;<br />            var endLatLng:LatLng = dir.getRoute(numRoutes-1).endLatLng;<br />            map.addOverlay(new Marker(startLatLng));<br />            map.addOverlay(new Marker(endLatLng));<br />            <br />            // Display trip info<br />            infoTripTxt.htmlText = dir.summaryHtml;<br />        }<br />            <br />        <br /><br />       ]]&gt;<br />   &lt;/mx:Script&gt;<br />   <br />   <br />   &lt;!--DEBUG KEY: you need to sign up for your own key--&gt;<br />   &lt;maps:Map <br />    id=&quot;map&quot; <br />    key=&quot;ABQIAAAA7QUChpcnvnmXxsjC7s1fCxQGj0PqsCtxKvarsoS-iqLdqZSKfxTd7Xf-2rEc_PC9o8IsJde80Wnj4g&quot; <br />    mapevent_mapready=&quot;onMapReady(event)&quot;<br />    width=&quot;100%&quot; height=&quot;100%&quot;/&gt;<br /><br />    <br /> <br />   &lt;mx:VBox width=&quot;395&quot; height=&quot;200&quot; id=&quot;controlPanel&quot; enabled=&quot;false&quot;<br /> 		backgroundAlpha=&quot;0.8&quot; backgroundColor=&quot;#FFFFFF&quot;&gt;<br /> 		<br />	  &lt;mx:HBox width=&quot;100%&quot;&gt;<br />		   &lt;mx:Label text=&quot;From (write your city):&quot; fontWeight=&quot;bold&quot;/&gt;<br />		   &lt;mx:TextInput<br />		     id=&quot;from&quot;<br />		     text=&quot;Firenze&quot;<br />		     width=&quot;100%&quot; /&gt;<br />	  &lt;/mx:HBox&gt;<br />	  <br />	  &lt;mx:HRule width=&quot;100%&quot; /&gt;<br />	  <br />	  &lt;mx:Label fontWeight=&quot;bold&quot;<br />		  text=&quot;To (select below the store and check the distance):&quot;/&gt;<br />			<br />	  	&lt;mx:HBox width=&quot;100%&quot; height=&quot;100%&quot; verticalAlign=&quot;middle&quot;&gt;<br />		    &lt;mx:List id=&quot;storeCities&quot; width=&quot;150&quot;<br />		    	change=&quot;processForm(event)&quot; height=&quot;121&quot;&gt; <br />		        &lt;mx:Object label=&quot;Milan - Outlet&quot; data=&quot;Milan&quot; /&gt;<br />		        &lt;mx:Object label=&quot;Rome - Boutique&quot; data=&quot;Rome&quot; /&gt;<br />		        &lt;mx:Object label=&quot;Napoli - Outlet&quot; data=&quot;Napoli&quot; /&gt;<br />		        &lt;mx:Object label=&quot;Venezia - Shop&quot; data=&quot;Venezia&quot; /&gt;<br />		        &lt;mx:Object label=&quot;Torino - Outlet&quot; data=&quot;Torino&quot; /&gt;<br />		    &lt;/mx:List&gt;<br />		    <br />		    &lt;mx:TextArea width=&quot;220&quot; height=&quot;60&quot; fontSize=&quot;14&quot; id=&quot;infoTripTxt&quot; <br />		    	backgroundAlpha=&quot;0&quot; borderStyle=&quot;none&quot;/&gt;	<br />		    <br />		&lt;/mx:HBox&gt;<br /><br />  &lt;/mx:VBox&gt;<br /><br />   <br />&lt;/mx:Application&gt;<br /></pre></div><br /><br />]]></description>
      <author>flagers</author>
      <pubDate>Mon, 31 Aug 2009 22:52:20 +0200</pubDate>
      <category>Flex 3.x</category>
      <guid>http://snippet.gnstudio.com/viewtopic/4</guid>
   </item><item>
      <title><![CDATA[USING TWEENSY : particle runtime effects with Actionscript 3 and FLASH CS4]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/3</link>
      <description><![CDATA[In the market are existing a lot of Tween libraries to help Flash/Flex developers to build cool actionscript animation making their life easier, like <a href="http://blog.greensock.com/tweenliteas3/" target="_blank">TweenLite</a>/ <a href="http://blog.greensock.com/tweenmaxas3/" target="_blank">TweenMax</a>or <a href="http://code.google.com/p/tweener/" target="_blank">Caurina Tweener</a>.<br />These libraries included cool stuff not provided from the default AS3 tween class like colors animation, animated drop, blur, shadow effect and much more.<br />So, in this post, i want to show you another tween engine, Tweensy, that provide a lot of cool bitmap and particle effects like smoke, fire and other &#39;magical&#39;ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚<br />Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ<br />¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â<br />€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’<br />Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€š<br />Ã‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¾ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬<br />Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬<br />Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ<br />¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡<br />ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã<br />…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢Ãƒ<br />Æ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¾ÃƒÆ’Ã†â€™ÃƒÂ<br />¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€<br />šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â Ã<br />ƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬<br />â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢Ãƒ<br />Æ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ<br />¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã<br />¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ<br />¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ<br />’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€<br />™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’<br />Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â¦ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€<br />™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ã<br />ƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã<br />¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ<br />’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â¦ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¾ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã<br />†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ã<br />ƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ<br />€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ<br />€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Å¡<br />Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â<br />¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¾ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™<br />Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾<br />Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚<br />Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ<br />’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡<br />Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â¦ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒ<br />â€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€ž<br />Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚<br />Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚<br />¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â<br />‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã<br />¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢<br />Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†<br />â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒ<br />Â¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€<br />¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢<br />ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€š<br />Ã‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬<br />ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â¦ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡Ãƒ<br />Æ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬Ã<br />ƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ<br />’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢<br />ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â<br />€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã<br />…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€š<br />Â¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„<br />¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â¦ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¾ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢Ã<br />ƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡Ãƒ<br />Æ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’<br />Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢<br />â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬<br />Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’<br />Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ã<br />ƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’<br />Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¾ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢Ã<br />ƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ<br />‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ<br />’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚<br />¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€š<br />Ã‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å<br />¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¾ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬<br />Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â Ã<br />ƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™<br />Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã<br />¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å<br />¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬<br />Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â¦ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…<br />Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ<br />’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã<br />‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â¦ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™<br />Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚<br />¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å<br />¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â<br />‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã<br />‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€<br />šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â<br />„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€<br />™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¾ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã<br />¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ<br />’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™ÃƒÂ¢<br />Ã¢â€šÂ¬Ã‚Â¦ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢<br />ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ<br />€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ<br />¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â<br />‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢Ã<br />ƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬<br />ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒ<br />Æ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â<br />¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢<br />â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬<br />Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€<br />šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â<br />„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â¦ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢<br />ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡Ã<br />ƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ<br />’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã<br />¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚<br />Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¦ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â Ã<br />ƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€<br /> Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã<br />¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢Ãƒ<br />Æ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚<br />Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢<br />â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ<br />¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã<br />¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â¦ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â<br />‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’<br />Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ã<br />ƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â¦ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€<br />žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã<br />‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â<br />‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢<br />â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢<br />Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ<br />¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â<br />¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã<br />‚Â¾ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â Ãƒ<br />Æ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™Ã<br />ƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢<br />â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ<br />¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â¦ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã<br />¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â<br />‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€š<br />Ã‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚<br />Â¦ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬<br />ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã<br />¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€ž<br />Â¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ<br />€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚<br />Â¬ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â¦ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡<br />ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒ<br />Â¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€<br />¦Ã‚Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â¦ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬<br />Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã¢â‚¬Â¦Ãƒâ€šÃ‚Â¡ÃƒÆ’Ã†â€™Ã<br />ƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¡ stuff ;)<br /><br /><img alt="" src="http://www.fabiobiondi.com/blog/wp-content/uploads/2009/08/tweensy.jpg" border="0" /><br /><span style="font-size: 10pt"><br /><span style="font-weight:bold"><a href="http://www.fabiobiondi.com/blog/wp-content/uploads/2009/08/menuemitter.swf" target="_blank">See the final result</a></span></span><br /><br /><span style="font-weight:bold">SOURCE CODE:</span><br />To compile your flash file you&#39;ll need to download the Flash Cs4 source code (below) and get the right library assets.<br />Furthermore, you won&#39;t find the Tweensy API inside the zip file because you should download the last version from <a href="http://code.google.com/p/tweensy/" target="_blank">http://code.google.com/p/tweensy/</a>.<br />Tweensy is still in beta and to create this sample(getting much more than inspiration from the provided demo) I used an old library version, so when you&#39;ll download the new one you could get some compiler errors.<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">package {<br />	import flash.display.*;<br />	import flash.events.*;<br />	import flash.filters.BlurFilter;<br />	import flash.geom.ColorTransform;<br />	import flash.text.TextField;<br />	import flash.utils.getDefinitionByName;<br /><br />	import com.flashdynamix.motion.*;<br />	import com.flashdynamix.motion.effects.*;<br />	import com.flashdynamix.motion.extras.Emitter;<br />	import com.flashdynamix.motion.layers.BitmapLayer;<br /><br /><br />	public class MenuEmitter extends Sprite {<br /><br />		<br />		public var menuButton:MovieClip;<br /><br />		private var emittor : Emitter;<br />		private var layer : BitmapLayer;<br />		<br />		private var ct : ColorTransform;<br />		private var bf : BlurFilter;<br /><br />		private var tx : Number;<br />		private var ty : Number;<br /><br />		public function MenuEmitter() {<br />			<br />	<br />			// Create a Bitmap Layer where we&#39;ll draw the Emitter and apply some effects<br />			layer = new BitmapLayer(900, 400);<br />			bf = new BlurFilter(10, 10, 2);<br />			layer.add(new ColorEffect(new ColorTransform(1, 1, 1, 0.9)));<br />			layer.add(new FilterEffect(bf));<br />			<br />			// Set quality to LOW to get better performance<br />			stage.quality = StageQuality.LOW;<br />			<br />			<br />			// The Emitter MovieClip &quot;BluePrint&quot;<br />			var Box : Class = getDefinitionByName(&quot;Box&quot;) as Class;<br />			<br />			// Emitter Creation<br />			ct = new ColorTransform(1, 1, 1, 1, -115, -30, 70);<br />			emittor = new Emitter(Box, null, 2, 1, &quot;0, 360&quot;, &quot;1, 110&quot;, 1, BlendMode.ADD);<br />			emittor.transform.colorTransform = ct;<br />			emittor.endColor = {redOffset:255, greenOffset:-10, blueOffset:-270, alphaOffset:-255};<br />			<br />			// We can&#39;t build the emitter on 0,0 because it will be cutted on the top and on the left side<br />			emittor.x = 150<br />			emittor.y = 150<br />			<br />			// Display on screen<br />			layer.draw(emittor.holder);<br />			menuButton.addChildAt(layer,0);<br />			<br />			// Stop emitter at startTime<br />			emittor.stop()<br /><br />			// RollOver / RollOut on button<br />			menuButton.gfx.buttonMode = true;<br />			menuButton.gfx.addEventListener(MouseEvent.ROLL_OVER, onMenuRollOver)<br />			menuButton.gfx.addEventListener(MouseEvent.ROLL_OUT, onMenuRollOut)<br />			<br />			// ENTER_FRAME event<br />			// We&#39;ll update the emittor properties to generate random<br />			addEventListener(Event.ENTER_FRAME, update)<br />			<br />		}<br />		<br />		/**<br />		* Update emittor rotation properties to have different rotation for each particle<br />		*/<br />		private function update(e : Event) : void {<br />			emittor.rotation += 20;<br />		}<br />		<br />		/**<br />		* At Button rollOver start the emitter<br />		*/<br />		private function onMenuRollOver(e : MouseEvent) : void {<br />			emittor.start()<br />		}<br />		<br />		/**<br />		* At Button rollOut stop the emitter<br />		*/<br />		private function onMenuRollOut(e : MouseEvent) : void {<br />			emittor.stop()<br />		}<br />		<br />		<br />		<br />		<br /><br />	}<br />}<br /><br /></pre></div><br /><br />]]></description>
      <author>flagers</author>
      <pubDate>Mon, 31 Aug 2009 22:39:56 +0200</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/3</guid>
   </item><item>
      <title><![CDATA[FullScreen in Flash CS4 / AS3]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/2</link>
      <description><![CDATA[If you want enable fullscreen modality in Flash CS 4 and ActionScript 3.0 you need to following steps:<br />1)    Modify the displayState property to <span style="font-style:italic">StageDisplayState.FULL_SCREEN</span> costant to enable it, and to <span style="font-style:italic">StageDisplayState.NORMAL</span> to come back to &#39;normal&#39; modality<br />2)    Enable the &#39;<span style="font-style:italic">allowfullscreen</span>&#39; attribute in your html code (see below)<br /><span style="font-weight:bold"></span><br />...<br />&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;...<br />and<br />&lt;embed src=&quot;index.swf&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;<br /><a href="http://www.fabiobiondi.com/blog/wp-content/uploads/2009/08/fullscreenflcs4.swf" target="_blank"></a><br /><span style="font-weight:bold"><br />HOW CREATE A FULLSCREEN BUTTON in AS3<br /></span><br />The script is quite simple and is fullCommented.<br />You just need to create a Flash CS3/4 ActionScript 3.0 file and link the document Class to the <span style="text-decoration:underline"><span style="font-style:italic">FullScreenMain.as</span></span> class.<br />We add to the display list a Button Flash Component, so we need to import its assets to the .fla dragging it from the Component panel to the library.<br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">package {<br />	<br />	import flash.display.MovieClip;<br />	import flash.display.Stage;<br />	import flash.display.StageAlign;<br />	import flash.display.StageScaleMode;<br />	import flash.display.StageDisplayState<br />	<br />	import fl.controls.Button;<br />	import flash.events.Event;<br />	import flash.events.MouseEvent;<br />	import flash.events.FullScreenEvent;<br /><br /><br />	public class FullScreenMain extends MovieClip {<br />		<br />		// The FullScreen Button<br />		private var fullScreen_btn:Button;<br />		<br />		// Save the fullScreen status<br />		private var fullScreenStatus:Boolean;		<br />		<br />		<br />		/**<br />		* Constructor<br />		*/<br />		public function FullScreenMain() {<br /><br />			// Create the FullScreen Button (add to the .fla library the button component assets)<br />			fullScreen_btn = new Button();<br />			fullScreen_btn.label = &quot;Enable FULL_SCREEN&quot;;<br />			fullScreen_btn.width = 150;<br />			fullScreen_btn.x = 120;<br />			fullScreen_btn.y = 50;<br />			addChild(fullScreen_btn)<br /><br /><br />			// Set NO_SCALE because we don&#39;t want that when fullscreen is enable movieclips are scaled too<br />			var swfStage:Stage = this.stage;<br />			swfStage.scaleMode = StageScaleMode.NO_SCALE;<br />			swfStage.align = StageAlign.TOP_LEFT;<br />			<br />			// Registriamo un listener per la modalitÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™ÃƒÂ¢Ã¢â€šÂ¬ ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¾Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚<br /><br />¬â„¢ÃƒÆ’Ã¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ ÃƒÆ’Ã†â€™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¡ÃƒÆ’Ã¢â‚<br /><br />¬Å¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€¦Ã‚Â¾ÃƒÆ’Ã¢â‚¬Å¡Ãƒâ€šÃ‚Â¢  FULLSCREEN:<br /><br />			// Listener for FullScreen Button<br />			fullScreen_btn.addEventListener(MouseEvent.CLICK, changefullScreenStatus)<br /><br /><br />			// Listener for FullScreen event. It&#39;s invoked every time the &#39;displayState&#39; property change<br />			fullScreen_btn.stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenRedraw);<br />			<br /><br />		}<br /><br /><br /><br />	<br />	<br />		/**<br />		* Check the fullScreenStatus and Enabled / Disable the FullScreen<br />		*/<br />		private function changefullScreenStatus(e:MouseEvent):void <br />		{<br />			// Disable FullScreen if enabled, and viceversa<br />			if(fullScreenStatus)<br />				fullScreen_btn.stage.displayState = StageDisplayState.NORMAL;<br />			else<br />				fullScreen_btn.stage.displayState = StageDisplayState.FULL_SCREEN;<br />				<br />		<br />		}<br />		<br />		/*<br />		* Invoked at every &#39;displayState&#39; property change<br />		*/<br />		function fullScreenRedraw(event:FullScreenEvent):void<br />		{<br />			// Check if fullScreen is enabled and uptades properties<br />			if (event.fullScreen)<br />			{<br />				fullScreen_btn.label = &quot;Disable FULL_SCREEN&quot;;<br />				fullScreenStatus = true;<br />			}<br />			else<br />			{<br />				fullScreen_btn.label = &quot;Enable FULL_SCREEN&quot;;<br />				fullScreenStatus = false;<br />			}<br />		<br />		}<br />		<br />	<br />	}<br />}<br /><br /></pre></div><br /><br />]]></description>
      <author>flagers</author>
      <pubDate>Mon, 31 Aug 2009 22:27:49 +0200</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/2</guid>
   </item><item>
      <title><![CDATA[Using 3D and Video with Caurina Tween in Flash Cs4]]></title>
      <link>http://snippet.gnstudio.com/viewtopic/1</link>
      <description><![CDATA[In this sample, full-commented, we&#39;ll use the FlashPlayer 10 3D features to display a list of Video Thumbnails enabling the Mouse Click Event to enlarge them changing their  z and rotationY properties.<br />We&#39;ll use <a href="http://code.google.com/p/tweener/" target="_blank">Caurina Tween</a> to perform 3d animations, so download them and copy the caurina package in your project folder before test this sample (they are not included inside the source files)<br />IMPORTANT NOTE: 3D topic is really complex! This is only an introduction to this world and this VideoGallery needs a lot of improvements to be used in a real scenario.<br /><a href="http://www.fabiobiondi.com/blog/wp-content/uploads/2009/08/_tweencaurina_3d_e_videoblogversion.swf" target="_blank">To this URL</a> the flash file with the <span style="font-weight:bold">final result </span>(click on VideoThumbs to display 3D animations):<br /><br /><span style="font-weight:bold"><br />CREATE THE FLASH FILE</span><br />First of all we create a new Flash ActionScript 3.0 document (setting Flash Player 10 in the Publish Setting menu).<br />Create a new MovieClip with an FLVPlayBack component inside (with istance name videoFLB) and link the movieclip to the VideoThumb.as class. <br /><span style="font-style:italic">See image below</span><br /><br /><img alt="" src="http://www.fabiobiondi.com/blog/wp-content/uploads/2009/08/flashtimelinecommented.gif" border="0" /><br />]]><![CDATA[<div class="divcode"><pre lang="actionscript">// FLASH DOCUMENT CLASS<br />package {<br /><br />	import flash.display.Sprite;<br />	import flash.display.StageAlign;<br />	import flash.display.StageScaleMode;<br />	import flash.events.MouseEvent;<br />	import caurina.transitions.*<br />	import flash.display.DisplayObject;<br />	<br />	public class VideoMain extends Sprite<br />	{<br />		<br />		// Horizontal Gap between Video Thumbs<br />		private const HORIZONTAL_GAP:uint = 50;<br />		<br />		// Total of VideoThumbs to show<br />		private const VIDEO_TOTAL:uint = 6;<br />		<br />		// Thumbnails original Y position<br />		private const Y_POS:uint = 125;<br /><br />		// Thumbnails original Z position<br />		private const Z_POS:uint = 550;<br />		<br />	<br />		<br />		public function VideoMain()<br />		{<br />			stage.align = StageAlign.TOP_LEFT;<br />			stage.scaleMode = StageScaleMode.NO_SCALE;<br />			<br />			<br />			// Create video thumbs<br />			for (var i:uint = 0; i &lt; VIDEO_TOTAL; i++) {<br />				<br />				// Create a new VideoThumb istance <br />				var thumb:VideoThumb = new VideoThumb();<br />				<br />				// Save original Index VideoThumb <br />				thumb.originalIndex = i;<br />				<br />				// Set Thumb Position (x, y, z)<br />				thumb.x = thumb.originalX = HORIZONTAL_GAP * i <br />				thumb.y = Y_POS<br />				thumb.z = Z_POS;<br />				<br />				// Set Thumb Rotation<br />				thumb.rotationY = -90;<br /><br />				thumb.addEventListener(MouseEvent.CLICK, onClick)<br />				thumb.buttonMode = true;<br />				<br />				addChild(thumb)<br />			}<br />		}<br />		<br />		<br /><br />		/**<br />		* Click Video MovieClip<br />		*/<br />		private function onClick(event:MouseEvent):void<br />		{<br />			// If clicked videoThumb is already opened<br />			if(event.currentTarget.isOpened) {<br />				<br />				// Back to the original position				<br />				Tweener.addTween(event.currentTarget, {<br />									   rotationY: -90 , <br />							 		   x: event.currentTarget.originalX,<br />									   y: Y_POS,<br />									   z: Z_POS,									   <br />									   time:0.5, <br />									   transition:&quot;easeInOutSine&quot;,<br />									   onComplete: event.currentTarget.videoFLB.stop()});<br />			<br /><br />				// Set depth to the original Position<br />				this.swapChildrenAt(getChildIndex(event.currentTarget as DisplayObject), event.currentTarget.originalIndex)<br />				<br />				<br />				<br />			} else {<br /><br />				// Enlarge Video and PLay it when animation is completed<br />				Tweener.addTween(event.currentTarget, {<br />							 		   rotationY: 0 , <br />							 		   x: 230,<br />									   y: 200,<br />									   z: 0,<br />									   rotationY: 0,<br />									   time:0.5, <br />									   transition:&quot;easeInOutSine&quot;,<br />									   onComplete: event.currentTarget.videoFLB.play()});<br /><br />				// Bring to Front				<br />				this.swapChildrenAt(event.currentTarget.originalIndex, this.numChildren -1 )<br />				<br />			}<br />			<br />			<br />			// Change isOpened Status (to always know if a thumb is opened ) <br />			event.currentTarget.isOpened = !event.currentTarget.isOpened;<br />			<br />		}<br />		<br />		<br />	}<br />}<br /><br /><br /><br /><br /><br />// VideoThumb.as Class<br />package {<br /><br /><br />	import flash.display.MovieClip;<br /><br />	<br />	public class VideoThumb extends MovieClip<br />	{<br />		<br />		private var _originalIndex:Number ;<br />		private var _originalX:Number ;<br />		private var _isOpened:Boolean = false;<br />		<br />		<br />		/**<br />		* Constructor<br />		*/<br />		public function VideoThumb(){}<br />		<br />		<br />		/**<br />		* Original Index position (usefull to know the Thumb depth)<br />		*/<br />		public function set originalIndex(val:Number):void {<br />			_originalIndex = val;			<br />		}<br />		<br />		public function get originalX():Number {<br />			return _originalX ;			<br />		}<br />		<br />		<br />		<br />		<br />		/**<br />		* Original x position (usefull to position Thumb to the original Position)<br />		*/<br />		public function set originalX(val:Number):void {<br />			_originalX = val;			<br />		}<br />		<br />		<br />		public function get originalIndex():Number {<br />			return _originalIndex ;			<br />		}<br />		<br />		<br />		<br />		<br />		/**<br />		* If the VideoThumb is opened or not<br />		*/<br />		public function set isOpened(val:Boolean):void {<br />			_isOpened = val;			<br />		}<br />				<br />		<br />		public function get isOpened():Boolean {<br />			return _isOpened ;			<br />		}<br />		<br />		<br />	}<br />}<br /><br /><br /></pre></div><br /><br />]]></description>
      <author>flagers</author>
      <pubDate>Mon, 31 Aug 2009 22:19:18 +0200</pubDate>
      <category>ActionScript</category>
      <guid>http://snippet.gnstudio.com/viewtopic/1</guid>
   </item>
  </channel>
</rss>
