<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ria-coder.com &#187; preloaders</title>
	<atom:link href="http://ria-coder.com/blog/tag/preloaders/feed" rel="self" type="application/rss+xml" />
	<link>http://ria-coder.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 21 Apr 2010 19:35:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Using Modules with Preloaders</title>
		<link>http://ria-coder.com/blog/using-modules-with-preloaders</link>
		<comments>http://ria-coder.com/blog/using-modules-with-preloaders#comments</comments>
		<pubDate>Sat, 11 Apr 2009 20:29:12 +0000</pubDate>
		<dc:creator>Danny Kopping</dc:creator>
				<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[modules]]></category>
		<category><![CDATA[preloaders]]></category>

		<guid isPermaLink="false">http://ria-coder.com/blog/?p=240</guid>
		<description><![CDATA[Here's a quick and dirty way to show a preloader while your module loads]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a quick and dirty way to show a preloader while your module loads:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
</pre></td><td class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:ModuleLoader</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> currentState=<span style="color: #ff0000;">&quot;loading&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:states</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:State</span> name=<span style="color: #ff0000;">&quot;loading&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:SetStyle</span> name=<span style="color: #ff0000;">&quot;horizontalAlign&quot;</span> value=<span style="color: #ff0000;">&quot;center&quot;</span><span style="color: #7400FF;">/&gt;</span></span>		<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- Align progress bar to center --&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:SetStyle</span> name=<span style="color: #ff0000;">&quot;verticalAlign&quot;</span> value=<span style="color: #ff0000;">&quot;middle&quot;</span><span style="color: #7400FF;">/&gt;</span></span>			<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- Align progress bar to middle --&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:AddChild</span> position=<span style="color: #ff0000;">&quot;lastChild&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:ProgressBar</span> id=<span style="color: #ff0000;">&quot;progressBar&quot;</span> labelPlacement=<span style="color: #ff0000;">&quot;center&quot;</span> mode=<span style="color: #ff0000;">&quot;manual&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:AddChild</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:State</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:states</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #339933;">&lt;mx:Script&gt;</span>
<span style="color: #339933;">		&lt;![CDATA[</span>
<span style="color: #339933;">			import mx.modules.IModuleInfo;</span>
<span style="color: #339933;">			import mx.events.FlexEvent;</span>
<span style="color: #339933;">			import mx.modules.ModuleManager;</span>
<span style="color: #339933;">			import mx.events.ModuleEvent;</span>
&nbsp;
<span style="color: #339933;">			private var module:IModuleInfo;</span>
&nbsp;
<span style="color: #339933;">			override public function loadModule():void</span>
<span style="color: #339933;">			{</span>
<span style="color: #339933;">			    if (url == null)</span>
<span style="color: #339933;">			        return;</span>
&nbsp;
<span style="color: #339933;">			    if (child)</span>
<span style="color: #339933;">			        return;</span>
&nbsp;
<span style="color: #339933;">			    if (module)</span>
<span style="color: #339933;">			        return;</span>
&nbsp;
<span style="color: #339933;">			    dispatchEvent(new FlexEvent(FlexEvent.LOADING));</span>
&nbsp;
<span style="color: #339933;">			    module = ModuleManager.getModule(url);</span>
&nbsp;
<span style="color: #339933;">			    module.addEventListener(ModuleEvent.PROGRESS, moduleProgressHandler);</span>
<span style="color: #339933;">			    module.addEventListener(ModuleEvent.SETUP, moduleSetupHandler);</span>
<span style="color: #339933;">			    module.addEventListener(ModuleEvent.READY, moduleReadyHandler);</span>
<span style="color: #339933;">			    module.addEventListener(ModuleEvent.ERROR, moduleErrorHandler);</span>
<span style="color: #339933;">			    module.addEventListener(ModuleEvent.UNLOAD, moduleUnloadHandler);</span>
&nbsp;
<span style="color: #339933;">			    module.load(applicationDomain);</span>
<span style="color: #339933;">			}</span>
&nbsp;
<span style="color: #339933;">			private function moduleProgressHandler(event:ModuleEvent):void</span>
<span style="color: #339933;">			{</span>
<span style="color: #339933;">			    dispatchEvent(event);</span>
&nbsp;
<span style="color: #339933;">			    try</span>
<span style="color: #339933;">			    {</span>
<span style="color: #339933;">			    	progressBar.setProgress(event.bytesLoaded / event.bytesTotal, 1);</span>
<span style="color: #339933;">			    }</span>
<span style="color: #339933;">			    catch(e:Error)</span>
<span style="color: #339933;">			    {</span>
<span style="color: #339933;">			    }</span>
<span style="color: #339933;">			}</span>
&nbsp;
<span style="color: #339933;">			private function moduleSetupHandler(event:ModuleEvent):void</span>
<span style="color: #339933;">			{</span>
<span style="color: #339933;">			    // Not ready for creation yet, but can call factory.info().</span>
&nbsp;
<span style="color: #339933;">			    dispatchEvent(event);</span>
<span style="color: #339933;">			}</span>
&nbsp;
<span style="color: #339933;">			private function moduleReadyHandler(event:ModuleEvent):void</span>
<span style="color: #339933;">			{</span>
<span style="color: #339933;">			    child = module.factory.create() as DisplayObject;</span>
<span style="color: #339933;">			    dispatchEvent(event);</span>
&nbsp;
<span style="color: #339933;">			    if (child)</span>
<span style="color: #339933;">			    {</span>
<span style="color: #339933;">			        var p:DisplayObjectContainer = parent;</span>
<span style="color: #339933;">			        // p.removeChild(this);</span>
<span style="color: #339933;">			        addChild(child);</span>
&nbsp;
<span style="color: #339933;">			        setStyle('horizontalAlign', '');			// Reset horizontalAlign</span>
<span style="color: #339933;">			        setStyle('verticalAlign', '');				// Reset verticalAlign</span>
<span style="color: #339933;">			    	currentState = '';</span>
<span style="color: #339933;">			    }</span>
<span style="color: #339933;">			}</span>
&nbsp;
<span style="color: #339933;">			private function moduleErrorHandler(event:ModuleEvent):void</span>
<span style="color: #339933;">			{</span>
<span style="color: #339933;">			    unloadModule();</span>
<span style="color: #339933;">			    dispatchEvent(event);</span>
<span style="color: #339933;">			}</span>
&nbsp;
<span style="color: #339933;">			private function moduleUnloadHandler(event:ModuleEvent):void</span>
<span style="color: #339933;">			{</span>
<span style="color: #339933;">			    dispatchEvent(event);</span>
<span style="color: #339933;">			}</span>
&nbsp;
<span style="color: #339933;">			override public function unloadModule():void</span>
<span style="color: #339933;">			{</span>
<span style="color: #339933;">			    if (child)</span>
<span style="color: #339933;">			    {</span>
<span style="color: #339933;">			        removeChild(child);</span>
<span style="color: #339933;">			        child = null;</span>
<span style="color: #339933;">			    }</span>
&nbsp;
<span style="color: #339933;">			    if (module)</span>
<span style="color: #339933;">			    {</span>
<span style="color: #339933;">			        module.removeEventListener(ModuleEvent.PROGRESS,</span>
<span style="color: #339933;">			                                   moduleProgressHandler);</span>
<span style="color: #339933;">			        module.removeEventListener(ModuleEvent.SETUP, moduleSetupHandler);</span>
<span style="color: #339933;">			        module.removeEventListener(ModuleEvent.READY, moduleReadyHandler);</span>
<span style="color: #339933;">			        module.removeEventListener(ModuleEvent.ERROR, moduleErrorHandler);</span>
&nbsp;
<span style="color: #339933;">			        module.unload();</span>
<span style="color: #339933;">			        module.removeEventListener(ModuleEvent.UNLOAD, moduleUnloadHandler);</span>
<span style="color: #339933;">			        module = null;</span>
<span style="color: #339933;">			    }</span>
<span style="color: #339933;">			}</span>
<span style="color: #339933;">		]]&gt;</span>
<span style="color: #339933;">	&lt;/mx:Script&gt;</span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:ModuleLoader</span><span style="color: #7400FF;">&gt;</span></span></pre></td></tr></table></div>

<p>Or you can download the file <a title="ModuleLoaderX.mxml" href="http://ria-coder.com/blog/wp-content/uploads/2009/04/ModuleLoaderX.mxml" target="_blank">here.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ria-coder.com/blog/using-modules-with-preloaders/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

