<?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>Moki Systems Blog &#187; Flash</title>
	<atom:link href="http://www.mokisystems.com/blog/category/flash/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mokisystems.com/blog</link>
	<description>Addressing such topics as: web programming, design, ruby on rails, cake php, postgresql, linux, seo</description>
	<lastBuildDate>Fri, 20 May 2011 15:22:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flash AS3 Loading Fonts</title>
		<link>http://www.mokisystems.com/blog/flash-as3-loading-fonts/</link>
		<comments>http://www.mokisystems.com/blog/flash-as3-loading-fonts/#comments</comments>
		<pubDate>Tue, 13 May 2008 17:23:29 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.mokisystems.com/blog/flash-as3-loading-fonts/</guid>
		<description><![CDATA[Create a Flash AS3 application that loads an external font at runtime&#8230; Sounds easy enough&#8230; But it is a little tricky.  I needed to create a flash app that allowed users to choose  a font from a list and load that into a player.  I wanted to offer several fonts but did [...]]]></description>
			<content:encoded><![CDATA[<p>Create a Flash AS3 application that loads an external font at runtime&#8230; Sounds easy enough&#8230; But it is a little tricky.  I needed to create a flash app that allowed users to choose  a font from a list and load that into a player.  I wanted to offer several fonts but did not want to bloat the load-time with unused fonts.  I could not find much help on this topic&#8230; Luckily I found <a href="http://www.betriebsraum.de/blog/2007/06/22/runtime-font-loading-with-as3-flash-cs3-not-flex/" title="Runtime font loading with AS3 / Flash CS3 (not Flex!)" target="_blank">betriebsraum </a>and with that I was able to hack up something that worked for me.<br />
<span id="more-10"></span><br />
Step 1:  Created an external swf with the font I needed.  (I created separate ones for each font I was going to offer.)
<ul>
<li>Created a new Fla and add a font to the library.</li>
<li>In the Library pane(F11), click the options dropdown, and choose &#8216;New Font&#8217;</li>
<li>Select a font, size and style&#8211;size is not important (arguably)&#8211;however, I believe you will have to create separate fonts for each style you require.  The name is not important really either.</li>
<li>Right click the new font in the Library and select &#8216;Linkage&#8230;&#8217;
<ul>
<li>Check &#8216;Export for ActionScript&#8217; and &#8216;Export in first frame&#8217;.</li>
<li>Give it a Class:&#8211;this name <em>is </em>important and you will need to remember it.  I used &#8216;EFont01&#8242; fig. 1</li>
<li><a href='http://www.mokisystems.com/blog/wp-content/uploads/2008/09/picture-4.png'><img src="http://www.mokisystems.com/blog/wp-content/uploads/2008/09/picture-4-300x195.png" alt="" title="picture-4" width="300" height="195" class="alignnone size-medium wp-image-40" /></a></li>
</ul>
</li>
</ul>
<ul>
<li>Publish the swf as &#8216;/font-Fontname.swf&#8217;.</li>
</ul>
<p>Step 2: Create the Application:
<ul>
<li>Create a new Flash CS3/As3 application set the Document class as &#8216;Main&#8217; and save it as &#8216;/myapp.fla&#8217;</li>
<li> Create a new AS3 script and save it as &#8216;/Main.as&#8217;</li>
</ul>
<p><strong>Main.as</strong></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
</pre></td><td class="code"><pre class="actionscript">package <span style="color: #66cc66;">&#123;</span>
 	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
 	<span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #006600;">*</span>;
 	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">*</span>;
 	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Main <span style="color: #0066CC;">extends</span> Sprite <span style="color: #66cc66;">&#123;</span>
 	 	<span style="color: #000000; font-weight: bold;">var</span> t:<span style="color: #0066CC;">TextField</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextField</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
 	 	<span style="color: #000000; font-weight: bold;">var</span> f = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">TextFormat</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
 	 	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
 	 	 	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">font</span> = <span style="color: #000000; font-weight: bold;">new</span> LoadFont<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;font-Zapfino.swf&quot;</span>,<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;EFont01&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
 	 	 	<span style="color: #0066CC;">font</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>LoadFont.<span style="color: #006600;">COMPLETE</span>, successLoadFont<span style="color: #66cc66;">&#41;</span>;
 	 	 	<span style="color: #0066CC;">font</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>LoadFont.<span style="color: #0066CC;">ERROR</span>, failLoadFont<span style="color: #66cc66;">&#41;</span>;
 	  	<span style="color: #66cc66;">&#125;</span>
 	 	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> failLoadFont<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 	 	 	f.<span style="color: #0066CC;">font</span>=<span style="color: #ff0000;">&quot;Arial&quot;</span>; <span style="color: #808080; font-style: italic;">//default font if load fails.</span>
 	 	 	t.<span style="color: #0066CC;">embedFonts</span> = <span style="color: #000000; font-weight: bold;">false</span>;
 	 	 	post<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
 	 	<span style="color: #66cc66;">&#125;</span>
 	 	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> successLoadFont<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 	 	 	<span style="color: #000000; font-weight: bold;">var</span> embeddedFonts:<span style="color: #0066CC;">Array</span> = <span style="color: #0066CC;">Font</span>.<span style="color: #006600;">enumerateFonts</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
 	 	 	f.<span style="color: #0066CC;">font</span>=embeddedFonts<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">fontName</span>;
 	 	 	t.<span style="color: #0066CC;">embedFonts</span> = <span style="color: #000000; font-weight: bold;">true</span>;
 	 	 	post<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
 	 	<span style="color: #66cc66;">&#125;</span>
 	 	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> post<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 	 	 	f.<span style="color: #0066CC;">size</span> = <span style="color: #cc66cc;">36</span>;
 	 	 	t.<span style="color: #006600;">defaultTextFormat</span> = f;
 	 	 	t.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">100</span>;
 	 	 	t.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">100</span>;
 	 	 	t.<span style="color: #0066CC;">background</span> = <span style="color: #000000; font-weight: bold;">true</span>;
 	 	 	t.<span style="color: #0066CC;">autoSize</span> = TextFieldAutoSize.<span style="color: #0066CC;">LEFT</span>;
 	 	 	t.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;We are in loaded Font&quot;</span>;
 	 	 	addChild<span style="color: #66cc66;">&#40;</span>t<span style="color: #66cc66;">&#41;</span>;
 	 	<span style="color: #66cc66;">&#125;</span>
 	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<ul>
<li>Create a new AS3 script and save it as &#8216;/LoadFont.as&#8217;</li>
</ul>
<p><strong> LoadFont.as</strong></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
</pre></td><td class="code"><pre class="actionscript">package <span style="color: #66cc66;">&#123;</span>
 	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">*</span>;
 	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">*</span>;
 	<span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #006600;">*</span>;
 	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">errors</span>.<span style="color: #006600;">*</span>;
 	<span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">system</span>.<span style="color: #006600;">*</span>;
 	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">net</span>.<span style="color: #006600;">*</span>;
 	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> LoadFont <span style="color: #0066CC;">extends</span> EventDispatcher <span style="color: #66cc66;">&#123;</span>
 	 	<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const COMPLETE:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;complete&quot;</span>;
 	 	<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const <span style="color: #0066CC;">ERROR</span>:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;error loading font&quot;</span>;
 	 	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> loader:Loader = <span style="color: #000000; font-weight: bold;">new</span> Loader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
 	 	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _fontsDomain:ApplicationDomain;
 	 	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _fontName:<span style="color: #0066CC;">Array</span>;
 	 	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> LoadFont<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">url</span>:<span style="color: #0066CC;">String</span>,fontName:<span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
 	 	 	_fontName = fontName;
 	 	 	<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;loading&quot;</span><span style="color: #66cc66;">&#41;</span>;
 	 	 	loader.<span style="color: #006600;">contentLoaderInfo</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>IOErrorEvent.<span style="color: #006600;">IO_ERROR</span>, font_ioErrorHandler<span style="color: #66cc66;">&#41;</span>;
 	 	 	loader.<span style="color: #006600;">contentLoaderInfo</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">COMPLETE</span>,finished<span style="color: #66cc66;">&#41;</span>;
 	 	 	loadAsset<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">url</span><span style="color: #66cc66;">&#41;</span>;
 	 	<span style="color: #66cc66;">&#125;</span>
 	 	<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> loadAsset<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">url</span>:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
 	 	 	<span style="color: #000000; font-weight: bold;">var</span> request:URLRequest = <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">url</span><span style="color: #66cc66;">&#41;</span>;
 	 	 	loader.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span>request<span style="color: #66cc66;">&#41;</span>;
 	 	 <span style="color: #66cc66;">&#125;</span>
 	 	<span style="color: #000000; font-weight: bold;">function</span> finished<span style="color: #66cc66;">&#40;</span>evt:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
 	 	 	_fontsDomain = loader.<span style="color: #006600;">contentLoaderInfo</span>.<span style="color: #006600;">applicationDomain</span>;
 	 	 	registerFonts<span style="color: #66cc66;">&#40;</span>_fontName<span style="color: #66cc66;">&#41;</span>;
 	 	 	dispatchEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Event<span style="color: #66cc66;">&#40;</span>LoadFont.<span style="color: #006600;">COMPLETE</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
 	 	<span style="color: #66cc66;">&#125;</span>
 	 	<span style="color: #000000; font-weight: bold;">function</span> font_ioErrorHandler<span style="color: #66cc66;">&#40;</span>evt:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
 	 	 	dispatchEvent<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Event<span style="color: #66cc66;">&#40;</span>LoadFont.<span style="color: #0066CC;">ERROR</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
 	 	 <span style="color: #66cc66;">&#125;</span>
 	 	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> registerFonts<span style="color: #66cc66;">&#40;</span>fontList:<span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
 	 	 	<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i:uint = <span style="color: #cc66cc;">0</span>; i <span style="color: #66cc66;">&lt;</span> fontList.<span style="color: #0066CC;">length</span>; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
 	 	 	 	<span style="color: #0066CC;">Font</span>.<span style="color: #006600;">registerFont</span><span style="color: #66cc66;">&#40;</span>getFontClass<span style="color: #66cc66;">&#40;</span>fontList<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
 	 	 	<span style="color: #66cc66;">&#125;</span>
 	 	<span style="color: #66cc66;">&#125;</span>
 	 	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getFontClass<span style="color: #66cc66;">&#40;</span>id:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #000000; font-weight: bold;">Class</span> <span style="color: #66cc66;">&#123;</span>
 	 	 	<span style="color: #b1b100;">return</span> _fontsDomain.<span style="color: #006600;">getDefinition</span><span style="color: #66cc66;">&#40;</span>id<span style="color: #66cc66;">&#41;</span>  as  <span style="color: #000000; font-weight: bold;">Class</span>;
 	 	 <span style="color: #66cc66;">&#125;</span>
 	 	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getFont<span style="color: #66cc66;">&#40;</span>id:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Font</span> <span style="color: #66cc66;">&#123;</span>
 	 	 	<span style="color: #000000; font-weight: bold;">var</span> fontClass:<span style="color: #000000; font-weight: bold;">Class</span> = getFontClass<span style="color: #66cc66;">&#40;</span>id<span style="color: #66cc66;">&#41;</span>;
 	 	 	<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">new</span> fontClass    as  <span style="color: #0066CC;">Font</span>;
 	 	<span style="color: #66cc66;">&#125;</span>
 	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.mokisystems.com/blog/flash-as3-loading-fonts/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
	</channel>
</rss>

