<?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>Blog.BitTube.com &#187; Flash 8</title>
	<atom:link href="http://blog.bittube.com/category/development/flash-8/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.bittube.com</link>
	<description>flash examples and development for the web, PSP Flash Player, Mobile flash lite player. All mixed up with some random thoughts, photos, images and poetic words</description>
	<lastBuildDate>Mon, 01 Feb 2010 13:58:16 +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>Useful Flash Lite Development Tool</title>
		<link>http://blog.bittube.com/2007/03/23/useful-flash-lite-development-tool/</link>
		<comments>http://blog.bittube.com/2007/03/23/useful-flash-lite-development-tool/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 17:25:29 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Flash Lite]]></category>
		<category><![CDATA[Mobile Devices]]></category>
		<category><![CDATA[Mobile Phones]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2007/03/23/useful-flash-lite-development-tool/</guid>
		<description><![CDATA[For those of you that are developing Flash Lite applications and games you will be well aware of the issues of Memory leaks in the Flash lite player. One area where this can occur is in the creation of "crossed references". These result in objects that are effectively locked as far as Garbage Collection is [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you that are developing Flash Lite applications and games you will be well aware of the issues of Memory leaks in the Flash lite player. One area where this can occur is in the creation of "crossed references". These result in objects that are effectively locked as far as Garbage Collection is concerned, and so result in memory 'leaking' over time.</p>
<p><span id="more-164"></span></p>
<p>A crossed reference occurs in situations such as this.</p>
<p>[as]<br />
var myFirstObject:Object = new Object();<br />
var mySecondObject:Object = new Object();</p>
<p>myFirstObject.reference = mySecondObject;<br />
mySecondObject.reference = myFirstObject;</p>
<p>myFirstObject = null;<br />
mySecondObject = null;</p>
<p>delete myFirstObject;<br />
delete mySecondObject;<br />
[/as]</p>
<p>In each case the objects above have a property that references an object, and the reference is cyclical in nature. As far as the Garbage Collection routine in the player is concerned each object will always have a usage count of 1 regardless of the delete statements as a result of the reference in the other object. The result is that neither object will be cleared from memory, hence the leak. If such a situation were to arise in a looping operation the loss of memory is compounded.</p>
<p>[as]<br />
var i:Number = 0;<br />
var iTotal:Number = 5;</p>
<p>whie(i < iTotal)<br />
{<br />
	var myFirstObject:Object = new Object();<br />
	var mySecondObject:Object = new Object();</p>
<p>	myFirstObject.reference = mySecondObject;<br />
	mySecondObject.reference = myFirstObject;</p>
<p>	myFirstObject = null;<br />
	mySecondObject = null;</p>
<p>	delete myFirstObject;<br />
	delete mySecondObject;<br />
	++i;<br />
}<br />
[/as]</p>
<p>Now the above example is a very simplistic example, and is very plain to avoid. With more complex applications however, these situations can arise over many classes and may not be any where near as blatant. This little flash extension offers a great interface for highlighting those crossed references in small applications vital for Flash Lite developers to find and remove.</p>
<p><a href="http://blog.madarco.net/object-explorer">object-explorer</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2007/03/23/useful-flash-lite-development-tool/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fantastic Looking Flash Video Game</title>
		<link>http://blog.bittube.com/2007/03/20/fantastic-looking-flash-video-game/</link>
		<comments>http://blog.bittube.com/2007/03/20/fantastic-looking-flash-video-game/#comments</comments>
		<pubDate>Tue, 20 Mar 2007 12:06:27 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Flash Video]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2007/03/20/fantastic-looking-flash-video-game/</guid>
		<description><![CDATA[This morning i was passed this wonderful looking Flash game. Reminiscent of old television programs such as Postman Pat, Canberwick Green, and Trumpton.
The game is played out in the Board game stylee. Brilliant!
Get the glass
]]></description>
			<content:encoded><![CDATA[<p>This morning i was passed this wonderful looking Flash game. Reminiscent of old television programs such as <a href="http://en.wikipedia.org/wiki/Postman_Pat">Postman Pat</a>, <a href="http://en.wikipedia.org/wiki/Camberwick_Green">Canberwick Green</a>, and <a href="http://en.wikipedia.org/wiki/Trumpton">Trumpton</a>.</p>
<p>The game is played out in the Board game stylee. Brilliant!</p>
<p><a href="http://www.gettheglass.com/">Get the glass</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2007/03/20/fantastic-looking-flash-video-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source ActionScript, an end to the flash plug-in?</title>
		<link>http://blog.bittube.com/2006/12/04/open-source-actionscript-an-end-to-the-plug-in/</link>
		<comments>http://blog.bittube.com/2006/12/04/open-source-actionscript-an-end-to-the-plug-in/#comments</comments>
		<pubDate>Mon, 04 Dec 2006 14:19:10 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 8]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/12/04/open-source-actionscript-an-end-to-the-plug-in/</guid>
		<description><![CDATA[Today on Adobe.com I noticed the news that Adobe have released the source code for the ActionScript Virtual Machine to Mozilla Foundation.
The release, which is dated 7th November 2006 can be found here and provides more information. From the release it sound like the code is to be included into future releases of the fire [...]]]></description>
			<content:encoded><![CDATA[<p>Today on <a href="http://www.adobe.com/">Adobe.com</a> I noticed the news that Adobe have released the source code for the ActionScript Virtual Machine to Mozilla Foundation.</p>
<p>The release, which is dated 7th November 2006 can be found <a href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/200611/110706Mozilla.html">here</a> and provides more information. From the release it sound like the code is to be included into future releases of the fire fox browser.</p>
<p>Does this mean an end to the Flash Plug-in for future Mozilla based Browsers? How will this impact XUL runner and its capabilities in comparison to Adobes much talked about Apollo? </p>
<p><a href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/200611/110706Mozilla.html">Adobe and Mozilla Foundation to Open Source Flash Player Scripting Engine</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/12/04/open-source-actionscript-an-end-to-the-plug-in/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>LoadQueueManager Update.</title>
		<link>http://blog.bittube.com/2006/10/27/loadqueuemanager-update/</link>
		<comments>http://blog.bittube.com/2006/10/27/loadqueuemanager-update/#comments</comments>
		<pubDate>Fri, 27 Oct 2006 04:09:02 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[LoadQueueManager]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/10/27/loadqueuemanager-update/</guid>
		<description><![CDATA[I had intended to post information about this before going on holiday but it got missed before leaving. Thanks to Jester for reminding me, I finally checked the comments  
Long post short its here.

I began reworking the LoadQueueManager before leaving, its an early rebuild, but what i tested was far more stable than the [...]]]></description>
			<content:encoded><![CDATA[<p>I had intended to post information about this before going on <a href="http://travel.bittube.com/blog/">holiday</a> but it got missed before leaving. Thanks to Jester for reminding me, I finally checked the comments <img src='http://blog.bittube.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Long post short its <a href="http://blog.bittube.com/wp-content/uploads/2008/09/loadqueuemanager.zip">here</a>.</p>
<p><span id="more-147"></span></p>
<p>I began reworking the LoadQueueManager before leaving, its an early rebuild, but what i tested was far more stable than the last revisions. Also I have included some of the features that people had asked of me (total queue progress, and also separate listeners for each item in the queue are two items that stick out).</p>
<p>It is a more complex set of files, and only part complete, but rather than leave people waiting, have at it. I wont be doing any other work on it for some time due to excessive <a href="http://travel.bittube.com/blog/">holiday commitments</a> (hey a man has to surf <img src='http://blog.bittube.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) but feel free to leave comments, and send updates if you do any.</p>
<p><a href="http://blog.bittube.com/2006/10/27/loadqueuemanager-update/loadqueuemanager/p">LoadQueueManager.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/10/27/loadqueuemanager-update/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Balthaser patent .180 reexamination</title>
		<link>http://blog.bittube.com/2006/08/18/balthaser-patent-180-reexamination/</link>
		<comments>http://blog.bittube.com/2006/08/18/balthaser-patent-180-reexamination/#comments</comments>
		<pubDate>Fri, 18 Aug 2006 13:29:16 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[BitTube Work]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 7]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Flash 9]]></category>
		<category><![CDATA[Flash Lite]]></category>
		<category><![CDATA[Flash for PSP]]></category>
		<category><![CDATA[Flex 2]]></category>
		<category><![CDATA[PortableApps]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/08/18/balthaser-patent-180-reexamination/</guid>
		<description><![CDATA[As Mike over at Flashgen.com and also Aral Balkan reports it seems someone is looking to contest the ridiculous Balthaser RIA patent that was reported a while ago by a number of Flash developers. I have also been contacted by Oliver Lorenz with regard to providing more information and certainly urge anyone that wants to [...]]]></description>
			<content:encoded><![CDATA[<p>As Mike over at <a href="http://blog.flashgen.com/2006/08/17/the-balthaser-ria-patent-revisited/trackback/">Flashgen.com</a> and also <a href="http://aralbalkan.com/695">Aral Balkan</a> reports it seems someone is looking to contest the ridiculous <a href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=7,000,180.PN.&OS=PN/7,000,180&RS=PN/7,000,180">Balthaser RIA patent</a> that was reported a while ago by a number of Flash developers. I have also been contacted by Oliver Lorenz with regard to providing more information and certainly urge anyone that wants to beable to continue RIA development without the potential of infringing on this patent.</p>
<p>The issue I have with the patent is its broad and sweeping coverage of very common interface and application GUI design systems. As an example reading one portion of the "Summary of The Invention".</p>
<blockquote><p>When editing a component, the user may modify a number of features associated with a component including, but not limited to, the volume of an acoustic component, the link between a menu entry and an associated component, the font, font size, color, or effect of a text field, or the layout, size, transparency, rotation, color, position, or level of any graphical rich-media component. The user may modify these components by means of a slider bar or a textual input field. In addition, the user may modify the volume of a sound component by means of up and down volume buttons. The user may undo modifications made to a component's parameters. The user may also modify the position of a graphical rich-media component by a graphical input field, by clicking and dragging said component, or by text fields. When the user modifies the position of a graphical rich-media component by means of clicking and dragging said component, said component may align itself to a grid point or a guide line. The user may also modify the style and the Uniform Resource Locator (URL) of a component linked to a menu entry. </p></blockquote>
<p>Unless I am mistaken the recently posted link to <a href="http://netvibes.com/">Netvibes</a> would actually infringe on this part of the patent. In that the user can select 'panes' or 'graphical rich-media components' of the netvibes application and alter there position within the application by clicking and dragging them to a new position.</p>
<p>In this example, because there is no specific technology linked to the patent claim, any RIA in any technology, Flash, Ajax, Appolo, XUL Runner, HaXe, Sparkle, add any other future technology here..... These systems would all be in break of the patent claim.</p>
<p>And this is just <strong>ONE</strong> of the <strong>EIGHTY THREE</strong> different claims in this patent.</p>
<p>Very worrying I think any developer would agree. Everyone involved in Internet application development, in my opinion, should take a serious look at this patent. Think about ANY work they have done or seen in past. The work they are doing today. Then consider the possible implications of future networked development. If you know of anything that has been posted, exhibited or shown publicly that can bring this patent down, it is in every ones interest to make it known to strengthen the Magix reexamination.</p>
<p>And remember we are not just talking about flash applications or work here. If you remember or are aware of ANY online application, in any technology, be it DHTML, Director, Java or anything else. If it used any, all or even one of these systems to allow user interation then it may well be enough to show that Mr Neil Balthaser did not invent these systems, and certainly has not right to lay claim to doing so as he has in his patent application.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/08/18/balthaser-patent-180-reexamination/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Landrover Go Beyond, Phase 2 Launched</title>
		<link>http://blog.bittube.com/2006/08/04/landrover-go-beyond-phase-2-launched/</link>
		<comments>http://blog.bittube.com/2006/08/04/landrover-go-beyond-phase-2-launched/#comments</comments>
		<pubDate>Fri, 04 Aug 2006 10:09:51 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[BitTube Work]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Localization]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/08/04/landrover-go-beyond-phase-2-launched/</guid>
		<description><![CDATA[Wunderman Interactive have just launched the second phase to the Land Rover Go Beyond site. The site offers user generated input to the content base and utilises a lot of Flash 8 features, with the back end being controlled through Flash Remoting. The challenges on such a flexible project are immense, it was a pleasure [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wundermaninteractive.com">Wunderman Interactive</a> have just launched the second phase to the <a href="http://www.landrover.com/gobeyond/">Land Rover Go Beyond site</a>. The site offers user generated input to the content base and utilises a lot of Flash 8 features, with the back end being controlled through Flash Remoting. The challenges on such a flexible project are immense, it was a pleasure to be involved. Congratulations to everyone who touched the project. I imagine there have been a number of late nights in Camden recently <img src='http://blog.bittube.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/08/04/landrover-go-beyond-phase-2-launched/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Localization &#8211; Managing Text &amp; Fonts pt.1</title>
		<link>http://blog.bittube.com/2006/08/03/flash-localization-managing-text-fonts-pt1/</link>
		<comments>http://blog.bittube.com/2006/08/03/flash-localization-managing-text-fonts-pt1/#comments</comments>
		<pubDate>Thu, 03 Aug 2006 09:43:12 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[BitTube Work]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[LFPUG]]></category>
		<category><![CDATA[Localization]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/08/03/flash-localization-managing-text-fonts-pt1/</guid>
		<description><![CDATA[I have had a number of emails, messenger texts, and commentâ€™s on my blog, asking for further information from my presentation notes on localizing flash. Localizing flash has such a wide scope of information, when I prepared my presentation I did take the â€˜data blastâ€™ approach of delivery. 
I had a good idea the area(s) [...]]]></description>
			<content:encoded><![CDATA[<p>I have had a number of emails, messenger texts, and commentâ€™s on my blog, asking for further information from my <a id="p133" href="http://blog.bittube.com/wp-content/uploads/2006/08/Flash%20Card.doc">presentation notes</a> on localizing flash. Localizing flash has such a wide scope of information, when I prepared my presentation I did take the â€˜data blastâ€™ approach of delivery. </p>
<p>I had a good idea the area(s) that people might like more in depth information, but I also wanted to take into account some broader work flow and process issues that I feel really need to be discussed. In this post I would like to present some more detailed information regarding one of the slides I used at the <a href="http://www.lfpug.com/">LFPUG</a> <a href="http://www.lfpug.com/presentations/2006_07_27_williamson/">presentation</a> that, as expected, has generated a lot of feed back.</p>
<p><strong>Managing Text & Fonts</strong></p>
<p><span id="more-131"></span></p>
<p>During the presentation I had split this key area of localizing flash content into two sub-headings, each sub-heading had a number of points I wanted to cover.</p>
<p>Part 1 - Fonts</p>
<ul>
<li>Understanding character sets, character maps & glyphs tables.</li>
<li>Using embedded fonts and or non-embedded fonts.</li>
<li>Flash 8 and advanced anti-aliasing.</li>
<li>File size implications of fonts in flash.</li>
</ul>
<p>Part 2 - Construction & Style</p>
<ul>
<li>Using font symbols.</li>
<li>Using dynamic text fields.</li>
<li>Shared fonts, font libraries and font symbols.</li>
<li>The TextFormatObject & CSS.</li>
</ul>
<p><strong>Understanding Character sets, character mapping and glyph tables</strong></p>
<p>Before getting into the nitty gritty of the practical side of how you go about managing the text based content in a localized flash project, I want to cover off the underlying concepts and processes that support it. Hopefully my terminology will be correct enough for the purpose of this article, feel free to leave comments correcting me where appropriate.</p>
<p>When trying to localize text based content in flash you will need to understand a little regarding Unicode, and how the fonts and applications you are using support it. So what is Unicode.</p>
<blockquote><p>Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language</p></blockquote>
<p>In addition to this Unicode characters are grouped into character sets. Within flash these can be found in the embed fonts options of the text field properties inspector.</p>
<p><a id="p132" rel="attachment" class="imagelink" href="http://blog.bittube.com/2006/08/03/flash-localization-managing-text-fonts-pt1/the-embed-fonts-palette-in-flash/" title="The Embed Fonts Palette in Flash"><img id="image132" src="http://blog.bittube.com/wp-content/uploads/2006/08/embedfonts.gif" alt="The Embed Fonts Palette in Flash" /></a></p>
<p>As flash developers we should be able publish content to pretty much any language on the planet. "we should be able". What often upsets this localization utopia is that many, many times we will find that the fonts provided, or requested within a project don't completely support Unicode. If this is the case it will result in a number of display issues within your flash production, including missing characters, or often a "?" or a square symbol, being displayed instead. Another, slightly less common problem can be a poorly constructed font that has characters incorrectly mapped. This would result, for example, in the glyph for "A" being returned and displayed as "B". </p>
<p>In actual fact there are few font faces that do fully support the whole Unicode table, and generally they are the standard system font faces for "sans", "serif", and "monospace" display, (Arial, Times, Courier on Windows). In part this is because to implement a complete Unicode font would be a time consuming and costly, production. There are around 65,000 (I think?) individual Unicode character codes to support, meaning over 65,000 characters to produce and test for some poor font maker.</p>
<p>With this in mind it is always worth checking the level of Unicode support that the fonts you are being asked to use support, you will save yourself a lot of tears as your project progresses.</p>
<p>Having assessed the support that your fonts offer for Unicode you need to find an acceptable level of Font Embedding. I have found this to be very similar in approach to deciding the compression that is applied to an image for the web. There is always going to be a trade off between the number of fonts you embed, and the final file size of a project. For example as a test, and to refresh my memory, I did an export of a flash movie that simply had a Dynamic text Field supporting Arial MS Unicode and embedding all character sets. The resultant SWF was 9.7MB uncompressed (7.8MB compressed). </p>
<p>The reason for large file size is that when flash embeds fonts for use in the player they are essentially converted to vector shapes that are embedded in your movie. When you get to some of the more exotic languages (Asian and Right to Left Languages for example) the individual glyphs are very elaborate, these results in some complex vectors, and thus larger file sizes. In addition the shear number of characters is HUGE, a number of languages have many more individual characters than us Europeans, the basic Korean character set has 3454 glyphs!</p>
<p>As of flash 8 the use of embedded fonts becomes less of an issue, with respect to visually acceptable text rendering. Making use of the advanced anti-aliasing options we are able to yield far better readability than is possible even with embedded font glyphs. However there are still some issues related to these options when trying to animate and scale text that is displayed using them. So depending on the design and visual treatment you are dealing with you will need to keep this in mind.</p>
<p>In my next post I will look at how to manage fonts within your files, it will roughly follow the structure of the 'part 2' heading above apply some of the <a href="http://blog.bittube.com/2006/07/28/notes-on-loaclizing-flash/">code examples from my brief previous post</a>.</p>
<p>References from this Article<br />
<a href="http://www.unicode.org/">Unicode.org, an invaluable source of information regarding UTF and Unicode</a><br />
<a href="http://www.atm.ox.ac.uk/user/iwi/charmap.html ">Online Unicode look up table</a><br />
<a href="http://blog.bittube.com/2006/03/31/90/">Information on Flash 8 text rendering issue in Saffron</a><br />
<a href="http://blog.bittube.com/2006/04/01/flash-8-fonttext-scaling-bug-cont/">Further information on Flash 8 text rendering issue in Saffron</a><br />
<a id="p133" href="http://blog.bittube.com/wp-content/uploads/2006/08/Flash%20Card.doc">LFPUG Presentation Running Notes</a></p>
<p>Links in this Article<br />
<a href="http://www.lfpug.com/">London Flash Platform User Group</a><br />
<a href="http://www.lfpug.com/presentations/2006_07_27_williamson/">The presentation slides I used. More details are in the running notes above.</a><br />
<a href="http://blog.bittube.com/2006/07/28/notes-on-loaclizing-flash/">Code Snippets for localizing flash</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/08/03/flash-localization-managing-text-fonts-pt1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Notes On Localizing Flash</title>
		<link>http://blog.bittube.com/2006/07/28/notes-on-loaclizing-flash/</link>
		<comments>http://blog.bittube.com/2006/07/28/notes-on-loaclizing-flash/#comments</comments>
		<pubDate>Fri, 28 Jul 2006 15:34:24 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[BitTube Work]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Localization]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/07/28/notes-on-loaclizing-flash/</guid>
		<description><![CDATA[So itâ€™s the day after my presentation on Flash Localization. I was quite happy with how things panned out, given I had been a presentation virgin prior to last night. The presentation didn't hurt nearly as much as I was afraid of. At least it didn't hurt me  .
Thanks to AKQA for the venue, [...]]]></description>
			<content:encoded><![CDATA[<p>So itâ€™s the day after my presentation on <a href="http://www.lfpug.com/">Flash Localization</a>. I was quite happy with how things panned out, given I had been a presentation virgin prior to last night. The presentation didn't hurt nearly as much as I was afraid of. At least it didn't hurt me <img src='http://blog.bittube.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Thanks to <a href="http://www.akqa.com/">AKQA</a> for the venue, support, beer and pizza, very nice it was to. Thanks also to <a href="http://www.tink.ws/blog/">Tink</a> for the opportunity to break my cherry, so to speak. And finally thanks to every one that came along to listen to me gibbering on. It must be said this is a subject I have come to build a love-hate relationship with over the many years I have spent in the field. I love the challenge of working to localise the content. I hate the fact that Flash makes even some of the most mundane solutions or Ideas a HUGE Challenge. It would seem I am not alone in this.</p>
<p>In addition to nattering on myself, I also received some useful information as well, which was great. So thanks for correcting my terminology of Polish as a Cyrillic based Language. Apparently it's an Extended European language, which would account for me having issues with that one. <img src='http://blog.bittube.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Something I didn't do last night was to show any code. This was due to operating on a Mac (thanks again <a href="http://www.tink.ws/blog/">Tink</a>) and not being confident enough in my app switching on the alien technology. Below are some snippets I made reference to.</p>
<p><span id="more-130"></span></p>
<p>Using <code>System.capabilities.playerType</code> to allow altered path references dependent on whether you are testing through a browser.<br />
[AS]<br />
/*<br />
str_xml variable is a string appended to the SWF file name in the HTML<br />
this is used to dictate which XML language version the flash movie<br />
will load and display. If no XML variable is detected then the movie will<br />
default to the UK English version (en-GD) this allows for easy testing in the<br />
flash IDE<br />
*/<br />
var str_defaultLang:String = "en-GB";<br />
// use the playerType to asertain whether the movie is playing in the browser or not and alter the Pathing acordingly<br />
var str_siteRoot: = (System.capabilities.playerType == "External") ? "../" : "";<br />
var str_xml:String = (str_xml == undefined) ? str_defaultLang : str_xml;<br />
var str_xmlSource:String = str_siteRoot + "xml/structure" + str_xml + ".xml";<br />
[/AS]<br />
A simple (nasty) prototype to string that offers find and replace functionality. This is then shown searching for pesky windows carriage return and line feed symbols and replacing them with single <code>newline</code> statement. I hope the URL encoded values are correct; I have actually done this from memory. Please let me know it this not the case.</p>
<p>[AS]<br />
/*String object prototype adds find and replace functionality*/<br />
/*<br />
usage : str_myString.replace(str_stringToFind, str_stringToReplace);<br />
str_stringToFind: string you wish to find in 'str_myString'<br />
str_stringToReplace: string you wish to replace str_stringToFind with in 'str_myString'<br />
returns: str_myString with all occurances of str_stringToFind replaced with str_stringToReplace<br />
*/<br />
String.prototype.replace = function(str_f:String, str_r:String):String<br />
{<br />
  return (this.split(str_f).join(str_r));<br />
}<br />
var myString:String<br />
myString = escape(myString)<br />
myString = myString.replace("%0A%0D", newline);<br />
myString = unescape(myString);<br />
[/AS]</p>
<p>Finally a snippet showing how to store Country/Language code combinations in order to switch fonts to Arial MS Unicode in those more troublesome language character sets.</p>
<p>[AS]<br />
/* Array to list non supported county/language codes */<br />
var arr_nonSuportedCC:Array = new Array("gr-GR", "ru-RU", "tr-TR", "cr-CR", "kr-KR", "pl-PL", "si-SI", "cs-CZ", "da-DK", "el-GR", "sv-FI", "hu-HU");<br />
/*<br />
setFontFace loops trough an array of Values that represent Country/language codes for the<br />
current content, if the current document country code is in this list then return true to<br />
say use a default font face that supports the countries glyphs more fully.<br />
e.g Arial Unicode MS for russian/greek/cyrilic languages<br />
*/<br />
var setFontFace = function(str_CC:String, arr_CountryList:Array):Boolean<br />
{<br />
	var bln_retval:Boolean = false;<br />
	var i:Number = 0;<br />
	var iTotal:Number = arr_CountryList.length;<br />
	var str_curCC:String;<br />
	str_CC = str_CC.toLowerCase()<br />
	while(i < iTotal)<br />
	{<br />
		str_curCC = arr_CountryList[i].toLowerCase();<br />
		if (str_CC == str_curCC)<br />
		{<br />
			bln_retval = true;<br />
			i = iTotal;<br />
		}<br />
		++i;<br />
	}<br />
	return bln_retval;<br />
}<br />
/* switch to determin if the font glyphs are supported*/<br />
var bln_useArial:Boolean = setFontFace(str_xml, arr_nonSuportedCC);<br />
var str_defaultDisplayFont:String<br />
str_defaultDisplayFont = bln_useArial ? "Arial Unicode MS" : "HelveticaNeueLT Pro 43 LtEx";<br />
// Text Formating object that will use the 'default' or 'switched' font<br />
__tf_navigationDefault = new TextFormat()<br />
__tf_navigationDefault.font = str_defaultDisplayFont<br />
__tf_navigationDefault.size = 14;<br />
__tf_navigationDefault.color = 0x102C4A;<br />
[/AS]</p>
<p>This last Snippet could also be extended to switch Font Size based on Asian Language or country codes as well. In addition I have used a similar script to check for 'preferred' fonts based on </code><code>TextField.getFontList()</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/07/28/notes-on-loaclizing-flash/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>URGENT!! Signatures Needed for flash 10yr release!</title>
		<link>http://blog.bittube.com/2006/07/25/urgent-signatures-needed-for-flash-10yr-realease/</link>
		<comments>http://blog.bittube.com/2006/07/25/urgent-signatures-needed-for-flash-10yr-realease/#comments</comments>
		<pubDate>Tue, 25 Jul 2006 20:23:49 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[BitTube Work]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Flash 9]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/07/25/urgent-signatures-needed-for-flash-10yr-realease/</guid>
		<description><![CDATA[As myself and Mike (flashgen.com) have mentioned previously we were heavily involved in Flash 'way back in the day'. During the time we were cutting our teeth in flash's infancy we were involved in some (IOHO) pretty slick projects. Now if you want those to be seen EVER again we need to get some release [...]]]></description>
			<content:encoded><![CDATA[<p>As myself and Mike (<a href="http://blog.flashgen.com">flashgen.com</a>) have mentioned previously we were heavily involved in Flash 'way back in the day'. During the time we were cutting our teeth in flash's infancy we were involved in some (IOHO) pretty slick projects. Now if you want those to be seen <strong>EVER</strong> again we need to get some release forms signed from 2 very specific companies in the UK. </p>
<p>If you can help us, or you know some one who might be able too PLEASE leave a comment. Let me know if you want it made public or not and I will abide your wishes. What is important is that myself or Mike (<a href="http://blog.flashgen.com">flashgen.com</a>) can contact you some how to follow it up.</p>
<p>If you lead to the project going like I will personally buy you a BIG beers or six, and give you a great big hug (kisses optional).</p>
<p>The companies and or departments required are.</p>
<p>BBC Education Department -- need to be able to sign release for Medicine Through Time Website. (circa 1998, Flash 3).<br />
British Telecoms Education Department -- need to be able to sign release for BT Time Trek Game. (circa 1998, Flash 3).</p>
<p>Remember this may be the only opportunity to see these historical examples of what us <a href="http://www.oldskoolflash.com">oldskool</a>ers 'bled our eyes on'.</p>
<p>Please spread the word if you are able.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/07/25/urgent-signatures-needed-for-flash-10yr-realease/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10 years of flash, my how things have changed.</title>
		<link>http://blog.bittube.com/2006/07/18/10-years-of-flash-my-how-things-have-changed/</link>
		<comments>http://blog.bittube.com/2006/07/18/10-years-of-flash-my-how-things-have-changed/#comments</comments>
		<pubDate>Tue, 18 Jul 2006 11:20:21 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[BitTube Work]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 7]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Flash 9]]></category>
		<category><![CDATA[Flash Lite]]></category>
		<category><![CDATA[Flash for PSP]]></category>
		<category><![CDATA[Flex 2]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/07/18/10-years-of-flash-my-how-things-have-changed/</guid>
		<description><![CDATA[It all started at university. Microsoft or MSN Australia I think it was, that was the first 'flash' movie I saw. And it changed everything I had seen on the web until then. Of course unlike everything else on the web at that time there was no way to see how they had done it. [...]]]></description>
			<content:encoded><![CDATA[<p>It all started at university. Microsoft or MSN Australia I think it was, that was the first 'flash' movie I saw. And it changed everything I had seen on the web until then. Of course unlike everything else on the web at that time there was no way to see how they had done it. Or at least you would think <img src='http://blog.bittube.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  . A few moments in a hex editor to remove those pesky 10th and 11th bytes, if memory serves, that was the 'copy protection' and we were off and de-compiling, perhaps the first flash de-compiler was actually <a href="http://www.ultraedit.com/">UltraEdit</a>? <img src='http://blog.bittube.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>As you will have seen Mike Jones (<a href="http://blog.flashgen.com/2006/07/18/what-do-you-do-after-10-years-as-a-flash-developer/trackback/">FlashGen.com</a>) and I are meeting to take notes, share war stories and generally reminisce the 'Good <a href="http://www.oldskoolflash.com">OldSkool</a> Days'. To find out what files we still have, and even which URLs are still <a href="http://www.bbc.co.uk/education/rocks/flash/indexfull.html">live</a> (Flash 3 (alpha) circa 1997/8 btw <a href="http://weblogs.macromedia.com/jd/archives/2006/07/got_historic_sw.cfm#trackbacks">JD</a> produced by Spooky & the Bandit - you may remember them :p)</p>
<p>Keep your eyes peal for more news as events unfold....</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/07/18/10-years-of-flash-my-how-things-have-changed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finally Something Worthwhile from Spam</title>
		<link>http://blog.bittube.com/2006/07/17/finally-something-worthwhile-from-spam/</link>
		<comments>http://blog.bittube.com/2006/07/17/finally-something-worthwhile-from-spam/#comments</comments>
		<pubDate>Mon, 17 Jul 2006 11:51:55 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Flash 8]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/07/17/finally-something-worthwhile-from-spam/</guid>
		<description><![CDATA[Following on from Aral's post regarding the amount of spam currently clogging the arteries of the Internet its nice to find a site that is doing something worthwhile with it all. The concept is to re-cycle Spam into computer generated Art. It also just happens to be a cool way of showing off some of [...]]]></description>
			<content:encoded><![CDATA[<p>Following on from <a href="http://aralbalkan.com/654/trackback/">Aral's</a> post regarding the <a href="http://akismet.com/stats/">amount of spam</a> currently clogging the arteries of the Internet its nice to find a site that is doing <a href="http://www.spamrecycling.com">something worthwhile</a> with it all. The concept is to re-cycle Spam into computer generated Art. It also just happens to be a cool way of showing off some of the new tricks Flash 8 can do <img src='http://blog.bittube.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p><a href="http://www.spamrecycling.com">Spam Recycling</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/07/17/finally-something-worthwhile-from-spam/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Presenting at the LFPUG</title>
		<link>http://blog.bittube.com/2006/07/07/presenting-at-the-lfpug/</link>
		<comments>http://blog.bittube.com/2006/07/07/presenting-at-the-lfpug/#comments</comments>
		<pubDate>Fri, 07 Jul 2006 15:55:30 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[BitTube Work]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Flash 9]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/07/07/presenting-at-the-lfpug/</guid>
		<description><![CDATA[The London Flash User Group site has now been updated. I will be giving my first ever public flash presentation. My chosen specialist subject will be localisation techniques for flash. This is something I have been banging my head against for some time, and as a result like to think I may be able to [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.lfpug.com/27nd-july-2006-27072006/">London Flash User Group</a> site has now been updated. I will be giving my first ever public flash presentation. My chosen specialist subject will be localisation techniques for flash. This is something I have been banging my head against for some time, and as a result like to think I may be able to offer some nuggets of knowledge to someone out there in order to save them the same pain I have endured.</p>
<p>In addition <a href="http://www.tink.ws/blog/">Stephen Downs</a> (tink) will be giving an early look at the new <a href="http://labs.adobe.com/technologies/flash9as3preview/">ActionScript 3 preview</a> that some of you 'may' have spotted is available on labs.</p>
<p>So if either of those sounds like they might float your boat, then why not pop along. I would just ask you check heavy throwing objects at the door :p.</p>
<p>Dave 'I'm not shitting it much I always walk like this' At BitTube Dot Com</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/07/07/presenting-at-the-lfpug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ActionScript 3 &amp; Flash 9 Compatibility Info</title>
		<link>http://blog.bittube.com/2006/07/05/actionscript-3-flash-9-compatibility-info/</link>
		<comments>http://blog.bittube.com/2006/07/05/actionscript-3-flash-9-compatibility-info/#comments</comments>
		<pubDate>Wed, 05 Jul 2006 11:42:08 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Flash 7]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Flash 9]]></category>
		<category><![CDATA[Flex 2]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/07/05/actionscript-3-flash-9-compatibility-info/</guid>
		<description><![CDATA[Previously I have mentioned concerns with regard to compatibility of Flash Player 9, ActionScript 3, Flex 2, and the recently released Flash 9 Preview. After digging around last night for information on how to get cracking on some Action Script 3 development I found this information on LiveDocs regarding the compatibility of the various flash [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.bittube.com/2006/04/22/flash-player-9-blaze-announcments/trackback/">Previously</a> I have mentioned concerns with regard to compatibility of Flash Player 9, ActionScript 3, Flex 2, and the recently released Flash 9 Preview. After digging around last night for information on how to get cracking on some Action Script 3 development I found this information on LiveDocs regarding the compatibility of the various flash SWF formats and ActionScript versions.</p>
<blockquote>
<ul>
<li>A single SWF file cannot combine ActionScript 1.0 or 2.0 code with ActionScript 3.0 code.</li>
<li>ActionScript 3.0 code can load a SWF file written in ActionScript 1.0 or 2.0, but it cannot access the SWF file's variables and functions.</li>
<li>SWF files written in ActionScript 1.0 or 2.0 cannot load SWF files written in ActionScript 3.0. This means that SWF files authored in Flash 8 or Flex Builder 1.5 or earlier versions cannot load ActionScript 3.0 SWF files.
<p>      The only exception to this rule is that an ActionScript 2.0 SWF file can replace itself with an ActionScript 3.0 SWF file, as long as the ActionScript 2.0 SWF file hasn't previously loaded anything into any of its levels. An ActionScript 2.0 SWF file can do this through a call to loadMovieNum(), passing a value of 0 to the level parameter.</li>
<li>In general, SWF files written in ActionScript 1.0 or 2.0 must be migrated if they are to work together with SWF files written in ActionScript 3.0. For example, say you created a media player using ActionScript 2.0. The media player loads various content that was also created using ActionScript 2.0. You cannot create new content in ActionScript 3.0 and load it in the media player. You must migrate the video player to ActionScript 3.0.
<p>      If, however, you create a media player in ActionScript 3.0, that media player can perform simple loads of your ActionScript 2.0 content.</li>
</ul>
</blockquote>
<p>The full information can be found here:</p>
<p><a href="http://livedocs.macromedia.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001801.html#120451">Programming ActionScript 3.0  > Overview of ActionScript Programming > Introduction to ActionScript 3.0 > Compatibility with previous versions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/07/05/actionscript-3-flash-9-compatibility-info/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Dark Art of the XPathAPI</title>
		<link>http://blog.bittube.com/2006/06/21/the-dark-art-of-the-xpathapi/</link>
		<comments>http://blog.bittube.com/2006/06/21/the-dark-art-of-the-xpathapi/#comments</comments>
		<pubDate>Wed, 21 Jun 2006 16:03:10 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[BitTube Work]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 7]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/2006/06/21/the-dark-art-of-the-xpathapi/</guid>
		<description><![CDATA[I've personally been using the XPathApi in flash for a little while. I don't remember how I came across it initially, but I do know that I use it in almost every project I have worked on lately. However it has been bought to my attention by a colleague that not everyone has fallen across [...]]]></description>
			<content:encoded><![CDATA[<p>I've personally been using the XPathApi in flash for a little while. I don't remember how I came across it initially, but I do know that I use it in almost every project I have worked on lately. However it has been bought to my attention by a colleague that not everyone has fallen across this most handy of classes. Below is information and links to help you get the most out of the XPathApi class in flash.</p>
<p><span id="more-114"></span></p>
<p>I am sure everyone is aware of the XML Object in flash and the ability to load and manage structured XML data in a flash movie. One of the challenges is how to access all that lovely data in a quick and easy method. </p>
<p>On numerous occasions on site I have seen an almost infinite number of XML parsers that will take in an XML document or Object and through recursive functions or the like rip the various XML nodeValues and attributes into native flash Objects, Arrays and Variables. </p>
<p>These would then be used through out the movie as any other data set. There is of course nothing wrong with this system, and at times in the past I too have gone about development in this manner, apart from the fact that it is ultimately a waste of time.</p>
<p>In flash we are provided with the ability to access the data held in an XML Document and or Object natively, Everyone will likely be aware of the Node.firstChild.nodeValue access notation. This allows us to preserve the structure of an XML Document while still having access to the data it holds. The downside of course is that the Syntax can become long and unwieldy if you are processing a complex XML structure.</p>
<p>A second option for dealing with XML in Flash has been provided as of Flash MX 2004 Professional edition. With the DataBinding components in Flash MX 2004 Pro was provided the mx.xpath package of classes. Adobe have also included this package in Flash 8. In addition the classes within the xpath package are compatible with Flash 6 MX so they operate well on the PSP Flash player as well.</p>
<p>The XPath implementation provided is not a complete XPath Implementation. But it does provide a susinct method for accessing XML Nodes by name, and or attribute values in a simple syntax.</p>
<p>Below is a simple snippet to highlight use of the XPathApi in Flash.</p>
<p>[as]<br />
/* example XML Structure used in this snippet.<br />
< ?xml version="1.0" encoding="UTF-8"?><br />
<bittubesite><br />
 <navbar><br />
  <navitem><br />
   <label>< ![CDATA[work]]&gt;</label><br />
  </navitem><br />
  <navitem><br />
   <label>< ![CDATA[cv]]&gt;</label><br />
  </navitem><br />
  <navitem><br />
   <label>< ![CDATA[contact]]&gt;</label><br />
  </navitem><br />
 </navbar><br />
</bittubesite><br />
*/<br />
//import the xpath api class<br />
import mx.xpath.XPathAPI;<br />
// create a new XML Object that will load the XML Data<br />
var myXMLDocument:XML = new XML();<br />
myXMLDocument.ignoreWhite = true;<br />
// create an onLoad Event Handler for the XML Object<br />
myXMLDocument.onLoad = function(bln_success:Boolean)<br />
{<br />
 if(bln_success)<br />
 {<br />
  //the string xpath value<br />
  var xPath_str:String = "bittubesite/navbar/navitem"<br />
  // the selectNodeList method of XPathAPI returns an array of XML Node Objects<br />
  var navLabels_arr:Array = XPathAPI.selectNodeList(_projectInfo.firstChild, xPath_str);</p>
<p>  // trace the values stored in the array generated by selectNodeList<br />
  trace("navLabels_arr" + navLabels_arr);<br />
  /* outputs<br />
  ===================<br />
  <label>work</label><br />
  <label>cv</label><br />
  <label>contact</label><br />
  */<br />
 }<br />
 else<br />
 {<br />
  trace("XML Load Error!!");<br />
 }<br />
}<br />
// load the xml document<br />
myXMLDocument.load("myXMLURL");<br />
[/as]</p>
<p>Unfortunately there is a lack of official documentation to the mx.xpath package in the flash documentation, which is a little frustrating. </p>
<p>There is a more complete implementation of the W3C XPath specification that has been produced by <a href="http://www.xfactorstudio.com/">xfactorstudio</a>. This is available in both ActionScript 1 and ActionScript 2 versions. </p>
<p>There are a number of other articles that have been written that offer more detail of the capabilities of provided by the built in mx.xpath package I have linked to them at the end of this post along with some other xpath resources for those that want to find out more.</p>
<p><a href="http://www.xfactorstudio.com/">xpathStudio</a>  -- Alternative and more complete XPath implementation<br />
<a href="http://chattyfig.figleaf.com/pipermail/flashcoders/2005-April/135838.html">mx.xpath.XPathAPI vs xpathStudio</a><br />
<a href="http://www.peachpit.com/articles/article.asp?p=169633&rl=1">using XPathAPI by by peach pit</a><br />
<a href="http://tutorials.lastashero.com/2005/10/using_the_xpath_api_in_flash.html">using XPathAPI by last actionscript hero</a><br />
<a href="http://weblogs.macromedia.com/dehaan/archives/2005/01/using_xpath_wit.cfm">using XPathAPI by Jen deHaan</a><br />
<a href="http://www.w3.org/TR/xpath">W3C XPath Specification</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/06/21/the-dark-art-of-the-xpathapi/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Loading Images as &#8216;Best&#8217; in Flash 8</title>
		<link>http://blog.bittube.com/2006/06/08/loading-images-as-best-in-flash-8/</link>
		<comments>http://blog.bittube.com/2006/06/08/loading-images-as-best-in-flash-8/#comments</comments>
		<pubDate>Thu, 08 Jun 2006 09:09:16 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 8]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/?p=111</guid>
		<description><![CDATA[I noted on this post at Mixmedia that others are having trouble loading Images with the 'best' quality in flash 8. For those unsure what this means, the 'best' quality setting provides anti aliasing to pretty much all objects in a flash movie, all the time regardless of frame rate loss. This includes Bitmaps. So [...]]]></description>
			<content:encoded><![CDATA[<p>I noted on this post at <a href="http://team.mixmedia.com/index.php?title=canot_set_image_quality_to_best_in_flash_8&more=1&c=1&tb=1&pb=1#comments">Mixmedia</a> that others are having trouble loading Images with the 'best' quality in flash 8. For those unsure what this means, the 'best' quality setting provides anti aliasing to pretty much all objects in a flash movie, all the time regardless of frame rate loss. This includes Bitmaps. So when you scale or rotate a Bitmap you donï¿½t get nasty jaggies on them. </p>
<p>A full explanation of the different quality settings in flash can be found <a href="http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001791.html">here</a></p>
<p>Some time ago as Flash 8 was released <a href="http://www.kaourantin.net">Tinic Uro</a> posted an explanation of the lack of support for bitmap anti aliasing in flash 8 and also a workaround for it.</p>
<p>The post is on his archives <a href="http://www.kaourantin.net/archive/2005_12_01_flashgraphics_archive.html">here</a></p>
<p>I have included this workaround in the <a href="http://development.bittube.com/photogallery.php">Flash 8 gallery</a> I posted, and have incorporated it into an Image loader class I am using in a project currently the only note of caution I would have is that this work around really boosts the CPU usage of a movie if you are moving around lots of images.</p>
<p>As a side note the 'best' quality setting was almost lost during the flash 3 alphas as it was thought to be identical in effect as the 'high' quality.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/06/08/loading-images-as-best-in-flash-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Land Rover Go Beyond &#8211; Flash 8 Community Site</title>
		<link>http://blog.bittube.com/2006/04/19/land-rover-go-beyond-flash-8-community/</link>
		<comments>http://blog.bittube.com/2006/04/19/land-rover-go-beyond-flash-8-community/#comments</comments>
		<pubDate>Wed, 19 Apr 2006 13:13:11 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[BitTube Work]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/?p=92</guid>
		<description><![CDATA[After a brief break to test my new surf board I arrived back in London to trawl the in box of its usual detritus of spam and try and find the emails that I actually need. In amongst them was the news that a project I have had the great pleasure to be involved in [...]]]></description>
			<content:encoded><![CDATA[<p>After a brief break to test my new surf board I arrived back in London to trawl the in box of its usual detritus of spam and try and find the emails that I actually need. In amongst them was the news that a project I have had the great pleasure to be involved in had gone live.</p>
<p><a href="http://www.landrover.com/Microsites/GoBeyond/index.html" target = "_blank">Land Rover Go Beyond</a></p>
<p>This is the first phase of a flash 8 project that will be pushing some serious technology about. At the moment I cant say much about what will be happening in the future but it should be fun, both for us developers and also the users as the project expands.</p>
<p>It was during my time on this acorn of a site that I encountered the Text Wrapping 'issue' described <a href="http://blog.bittube.com/?p=90">here</a>. </p>
<p>Another fun things to deal with was the lack of bitmap smoothing in flash 8. Thankfully I had stumbled on <a href="http://www.kaourantin.net" target="_blank">Tinic Uro's</a> solution to that little gem which can be found <a href="http://www.kaourantin.net/archive/2005_12_01_flashgraphics_archive.html" target="_blank">here</a>.</p>
<p>On top of those things I finally had an opportunity to make proper use of CSS in flash for something other than my own mundane <a href="http://www.bittube.com" target="_blank">CV</a>. Even though this is a small taste of the main application the foundations are certainly strong.</p>
<p>Congratulation to everyone else involved.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/04/19/land-rover-go-beyond-flash-8-community/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash 8 Font/Text Scaling. Bug? Cont.</title>
		<link>http://blog.bittube.com/2006/04/01/flash-8-fonttext-scaling-bug-cont/</link>
		<comments>http://blog.bittube.com/2006/04/01/flash-8-fonttext-scaling-bug-cont/#comments</comments>
		<pubDate>Sat, 01 Apr 2006 12:20:56 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 8]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/?p=91</guid>
		<description><![CDATA[Yesterday i posted regarding an issue i stumbled uppon regarding the new saffron text engine in FP8. you can find the details of the issue here
After the comments from Richard Leggett I have produced this working alteration to the code posted previously. 
The results while fixing the font adjustments as text is scaled, it causes [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday i posted regarding an issue i stumbled uppon regarding the new saffron text engine in FP8. you can find the details of the issue <a href="http://blog.bittube.com/?p=90">here</a></p>
<p>After the comments from <a href="http://www.richardleggett.co.uk/blog/index.php">Richard Leggett</a> I have produced this working alteration to the code posted previously. </p>
<p>The results while fixing the font adjustments as text is scaled, it causes re-wrapping in my example once the scale operation is complete. Given more time i will try to find a more robust solution to this issue.</p>
<p>more code after the split.</p>
<p><span id="more-91"></span>  </p>
<p>Please not this code is simply a stub that has been taken from the code in <a href="http://blog.bittube.com/?p=90">this post</a> and updated. Please read the previous post for more information</p>
<p>[as]</p>
<p>but_field_0.onPress = function()<br />
{<br />
	if(_root.bln_f0Scaled)<br />
	{<br />
		/*<br />
		Now prior to scaling the upper clip we simply turn the render method of the<br />
		text fields to "normal" like that of the old FP7 display.<br />
		*/<br />
		_root.mc_flashText_0.txt_field_0.antiAliasType = "normal";<br />
		_root.mc_flashText_0.txt_field_1.antiAliasType = "normal";<br />
		_root.twn_field0 = new Tween(_root.mc_flashText_0, "_xscale", Regular.easeOut, _root.mc_flashText_0._xscale, 200, 3, true);<br />
		_root.twn_field0 = new Tween(_root.mc_flashText_0, "_yscale", Regular.easeOut, _root.mc_flashText_0._yscale, 200, 3, true);<br />
		/*<br />
		Once the tween operation has been completed we then reset the text render<br />
		back to the advanced FP8 method</p>
<p>		** NOTE **<br />
		This alteration while fixing the wrapping while scaling issue results in the text 			re-wrapping at the end of the scaling operation. I think a possible answer<br />
		would be to provide text field measurements and resize the field to ensure<br />
		this re-wrapping does not occur.</p>
<p>		*/<br />
		_root.twn_field0.onMotionStopped = function(obj_item:Object)<br />
		{<br />
			var mc_t:MovieClip = obj_item.obj;<br />
			mc_t.txt_field_0.antiAliasType = "advanced";<br />
			mc_t.txt_field_1.antiAliasType = "advanced";<br />
		}<br />
	}<br />
	else<br />
	{<br />
		_root.mc_flashText_0.txt_field_0.antiAliasType = "normal";<br />
		_root.mc_flashText_0.txt_field_1.antiAliasType = "normal";<br />
		_root.twn_field0 = new Tween(_root.mc_flashText_0, "_xscale", Regular.easeOut, _root.mc_flashText_0._xscale, 100, 3, true);<br />
		_root.twn_field0 = new Tween(_root.mc_flashText_0, "_yscale", Regular.easeOut, _root.mc_flashText_0._yscale, 100, 3, true);<br />
		_root.twn_field0.onMotionStopped = function(obj_item:Object)<br />
		{<br />
			var mc_t:MovieClip = obj_item.obj;<br />
			mc_t.txt_field_0.antiAliasType = "advanced";<br />
			mc_t.txt_field_1.antiAliasType = "advanced";<br />
		}<br />
	}</p>
<p>	_root.bln_f0Scaled = !_root.bln_f0Scaled;<br />
}</p>
<p>[/as]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/04/01/flash-8-fonttext-scaling-bug-cont/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash 8 Font/Text Scaling. Bug?</title>
		<link>http://blog.bittube.com/2006/03/31/90/</link>
		<comments>http://blog.bittube.com/2006/03/31/90/#comments</comments>
		<pubDate>Fri, 31 Mar 2006 16:41:19 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[BitTube Work]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 8]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/?p=90</guid>
		<description><![CDATA[This week while working on another multilingual flash site, this time in Flash 8 I came across this interesting feature/bug with the new Flash 8 text anti aliasing. Let me explain the move below.
The top section of the movie uses text fields with the anti-aliasing setting set to "anti-alias for readability" which is placed inside [...]]]></description>
			<content:encoded><![CDATA[<p>This week while working on another multilingual flash site, this time in Flash 8 I came across this interesting feature/bug with the new Flash 8 text anti aliasing. Let me explain the move below.</p>
<p>The top section of the movie uses text fields with the anti-aliasing setting set to "anti-alias for readability" which is placed inside a movie clip symbol. This clip is then placed on the main stage of the movie. The button at the top simple scales the movie clip that contains these fields from 100% to 200%.</p>
<p>The bottom section of the movie uses script to create a movie clip, and then create 2 text fields into the new movie clip. This time we use embedded fonts and text formatting to get the text to appear the same way as the top fields. The button then does the same scale operation on this newly created clip.</p>
<p>if the movie is missing below view it here for now</p>
<p><a href="http://blog.bittube.com/wp-content/uploads/2006/03/F8FontIssues.swf" target="_blank">link</a></p>
<p><object type="application/x-shockwave-flash" data="/wp-content/uploads/2006/03/F8FontIssues.swf" width="350" height="350"><param name="movie" value="/wp-content/uploads/2006/03/F8FontIssues.swf" /><param name="BGCOLOR" value="ffffff" /><a title="You must install the Flash Plugin for your Browser in order to view this movie"  href="http://www.macromedia.com/shockwave/download/alternates/"><img src=http://blog.bittube.com/wp-content/plugins/flqt/needplugin.gif height="31"  alt="placeholder for flash movie" /></a></object></p>
<p>As you can see the flash 8 text does some very strange wrapping of the text as the parent clip is scaled. This effect was displayed in the project I was working on, and as you can imagine the client was not so pleased with this funky text effect.</p>
<p>The only fix I could come up with was to create and display the text as per the bottom section of the movie. I hope that all makes sense and is of use to someone.</p>
<p>Code from the movie is after the split, I apologise for the state of it, its is for example only.</p>
<p><span id="more-90"></span></p>
<p>[as]<br />
import mx.transitions.Tween;<br />
import mx.transitions.easing.*;</p>
<p>var str_fieldvalue = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut"<br />
var str_fontName:String = "Arial Unicode MS";<br />
var int_fontSize:Number = 10;<br />
var bln_f0Scaled:Boolean = true;<br />
var bln_f1Scaled:Boolean = true;<br />
var bln_embed0:Boolean = false;<br />
var bln_embed1:Boolean = true;</p>
<p>mc_flashText_0.txt_field_1.autoSize = mc_flashText_0.txt_field_0.autoSize = "left";<br />
mc_flashText_0.txt_field_0.text = str_fieldvalue;<br />
mc_flashText_0.txt_field_1.text = str_fieldvalue;</p>
<p>but_field_e0.onPress = function()<br />
{<br />
	_root.mc_flashText_0.txt_field_1.embedFonts = _root.mc_flashText_0.txt_field_0.embedFonts = _root.bln_embed0;<br />
	_root.bln_embed0 = !_root.bln_embed0;<br />
}<br />
but_field_0.onPress = function()<br />
{<br />
	if(_root.bln_f0Scaled)<br />
	{<br />
		_root.twn_field0 = new Tween(_root.mc_flashText_0, "_xscale", Regular.easeOut, _root.mc_flashText_0._xscale, 200, 3, true);<br />
		_root.twn_field0 = new Tween(_root.mc_flashText_0, "_yscale", Regular.easeOut, _root.mc_flashText_0._yscale, 200, 3, true);<br />
	}<br />
	else<br />
	{<br />
		_root.twn_field0 = new Tween(_root.mc_flashText_0, "_xscale", Regular.easeOut, _root.mc_flashText_0._xscale, 100, 3, true);<br />
		_root.twn_field0 = new Tween(_root.mc_flashText_0, "_yscale", Regular.easeOut, _root.mc_flashText_0._yscale, 100, 3, true);<br />
	}</p>
<p>	_root.bln_f0Scaled = !_root.bln_f0Scaled;<br />
}<br />
/*<br />
 code below here is specific to to generating a text feild that can be scaled<br />
*/<br />
var tf_textFormat_0:TextFormat = new TextFormat();<br />
tf_textFormat_0.font = str_fontName;<br />
tf_textFormat_0.size = int_fontSize;<br />
tf_textFormat_0.color = 0x000000;<br />
var tf_textFormat_1:TextFormat = new TextFormat();<br />
tf_textFormat_1.font = str_fontName;<br />
tf_textFormat_1.size = int_fontSize;<br />
tf_textFormat_1.color = 0xffffff;</p>
<p>// create a movie clip to hold the fields and position it<br />
var mc_flashText_1:MovieClip = this.createEmptyMovieClip("mc_dF", 0);<br />
mc_flashText_1._x = 10;<br />
mc_flashText_1._y = 190;<br />
// create 2 text fields in teh new clip<br />
mc_flashText_1.createTextField("txt_field_0", 0, 1, 1, 100, 1);<br />
mc_flashText_1.createTextField("txt_field_1", 1, 0, 0, 100, 1);</p>
<p>// set the properties of the 2 text fields<br />
mc_flashText_1.txt_field_1.embedFonts = mc_flashText_1.txt_field_0.embedFonts = bln_embed1;<br />
mc_flashText_1.txt_field_1.autoSize = mc_flashText_1.txt_field_0.autoSize = "left";<br />
mc_flashText_1.txt_field_1.multiline = mc_flashText_1.txt_field_0.multiline = true;<br />
mc_flashText_1.txt_field_1.wordWrap = mc_flashText_1.txt_field_0.wordWrap = true;<br />
mc_flashText_1.txt_field_0.text = str_fieldvalue;<br />
mc_flashText_1.txt_field_1.text = str_fieldvalue;<br />
mc_flashText_1.txt_field_0.setTextFormat(tf_textFormat_0);<br />
mc_flashText_1.txt_field_1.setTextFormat(tf_textFormat_1);</p>
<p>// set the on press function to control the scaling of the movieclip that holds the fields<br />
but_field_1.onPress = function()<br />
{<br />
	if(_root.bln_f1Scaled)<br />
	{<br />
		_root.twn_field1 = new Tween(_root.mc_flashText_1, "_xscale", Regular.easeOut, _root.mc_flashText_1._xscale, 200, 3, true);<br />
		_root.twn_field1 = new Tween(_root.mc_flashText_1, "_yscale", Regular.easeOut, _root.mc_flashText_1._yscale, 200, 3, true);<br />
	}<br />
	else<br />
	{<br />
		_root.twn_field1 = new Tween(_root.mc_flashText_1, "_xscale", Regular.easeOut, _root.mc_flashText_1._xscale, 100, 3, true);<br />
		_root.twn_field1 = new Tween(_root.mc_flashText_1, "_yscale", Regular.easeOut, _root.mc_flashText_1._yscale, 100, 3, true);<br />
	}</p>
<p>	_root.bln_f1Scaled = !_root.bln_f1Scaled;<br />
}<br />
but_field_e1.onPress = function()<br />
{<br />
	_root.mc_flashText_1.txt_field_1.embedFonts = _root.mc_flashText_1.txt_field_0.embedFonts = _root.bln_embed1;<br />
	_root.bln_embed1 = !_root.bln_embed1;<br />
}<br />
stop();<br />
[/as]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/03/31/90/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Update to Photo Gallery</title>
		<link>http://blog.bittube.com/2006/02/14/update-to-photo-gallery/</link>
		<comments>http://blog.bittube.com/2006/02/14/update-to-photo-gallery/#comments</comments>
		<pubDate>Tue, 14 Feb 2006 12:43:55 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/?p=71</guid>
		<description><![CDATA[I have added a small update to the Flash 8 photo gallery I produced. This allows me to specify the XML data source i wish the gallery to load from.
In addition I have done a small amount of tidying up on the server in the build up to categorising some of my photographs, and adding [...]]]></description>
			<content:encoded><![CDATA[<p>I have added a small update to the <a target="_blank" href="http://development.bittube.com/photogallery.asp">Flash 8 photo gallery</a> I produced. This allows me to specify the XML data source i wish the gallery to load from.</p>
<p>In addition I have done a small amount of tidying up on the server in the build up to categorising some of my photographs, and adding 'album' style functionality to the photo gallery application.</p>
<p>And finally in the sorting out, I also uploaded a few new images I found.  Its slow progress but I gots to work you know.</p>
<p>Remember the Photo Gallery is a flash 8 file.</p>
<p><a title="BG Images Gallery" target="_blank" href="http://development.bittube.com/photogallery.php">Basic Default Gallery</a></p>
<p><a title="Cost Rica Images" target="_blank" href="http://development.bittube.com/photogallery.php?xD=costarica">Costa Rica Photos Gallery</a></p>
<p>For those that missed my previous post, the source code for the photo gallery is <a title="Photo Gallery Source Code" href="http://blog.bittube.com/wp-trackback.php?p=38">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2006/02/14/update-to-photo-gallery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash 8 setTimeout Example</title>
		<link>http://blog.bittube.com/2005/12/21/flash-8-settimeout-example/</link>
		<comments>http://blog.bittube.com/2005/12/21/flash-8-settimeout-example/#comments</comments>
		<pubDate>Wed, 21 Dec 2005 12:54:49 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/?p=46</guid>
		<description><![CDATA[http://theflashblog.com has a nice example of the undocumented setTimeout() function]]></description>
			<content:encoded><![CDATA[<p>Over on <a href="http://theflashblog">theflashblog.com</a> they have very simple example of an undocumented function in Flash 8. The setTimeout() function seems to be a nice succinct replacement for the rather cumbersome (IMHO) setInterval().</p>
<p>How this setTimeout() operates in comparison to setInterval() remains to be seen, information regarding return types if there are any. Also the function by all accounts seems to be a  global, which may be a little problematic for those creating components or classes.</p>
<p>See the full example <a href="http://theflashblog">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2005/12/21/flash-8-settimeout-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nice Flash 8 Bitmap Technique</title>
		<link>http://blog.bittube.com/2005/12/16/nice-flash-8-bitmap-technique/</link>
		<comments>http://blog.bittube.com/2005/12/16/nice-flash-8-bitmap-technique/#comments</comments>
		<pubDate>Fri, 16 Dec 2005 12:52:16 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[BitTube Thoughts]]></category>
		<category><![CDATA[Flash 8]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/?p=44</guid>
		<description><![CDATA[Using Flash 8 BitmapData class to streamline loading of high quality transparent images.]]></description>
			<content:encoded><![CDATA[<p>There is a nice post on Quasimondo that talks about using the Flash 8 BitmapData class as a tool to minimise the file size over head of using external transparent image assets.</p>
<p>To view the full post it can be found <a href="http://www.quasimondo.com/qm_mt/mt-tb.cgi/552">Here</a></p>
<p>I had been considering the uses of the BitmapData class in a related manner. Basically I wanted a method of watermarking external image assets and then removing the watermark when displayed in flash.</p>
<p><span id="more-44"></span></p>
<p>The concept i imagined would be to 'brand' my images in the Photo Gallery application that i have produced with a specific colour and transparency water mark.</p>
<p>Using the BitmapData class in a similar manner, store an embedded 'negative' of the watermark inside the flash movie that would be used to display the images.</p>
<p>Once the external images are loaded the water mark could effectively be removed from the image using the embedded water mark, I assume using a similar ColorMatrixFilter that is being used in the example above.</p>
<p>Alas I haven’t had any time to explore the possibilities of this further......</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2005/12/16/nice-flash-8-bitmap-technique/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash 8 Photo gallery AS</title>
		<link>http://blog.bittube.com/2005/11/22/flash-8-photo-gallery-files/</link>
		<comments>http://blog.bittube.com/2005/11/22/flash-8-photo-gallery-files/#comments</comments>
		<pubDate>Tue, 22 Nov 2005 00:42:30 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/?p=38</guid>
		<description><![CDATA[The Flash 8 Gallery is a code and XML driven presentation utilizing AS 2 classes.]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://development.bittube.com/photogallery.html">photo gallery</a> I produced in flash 8 is a simple experiment in flash AS 2 classes, inheritance and event modelling. The current gallery loads its information from an <a href="http://development.bittube.com/assets/xml/bgimages.xml">XML</a> file, this XML file is currently rather large as it contains extraneous information intended for other presentation files.</p>
<p>The XML parsing is handled using the AS 2 XPath API Classes.</p>
<p>[as]import mx.xpath.XPathAPI;[/as]</p>
<p>This implementation uses only the flash 8 filters really but the plan is to actually hop, skip, and jump the future development straight into the AS3 frame work and class structure.</p>
<p>The code below is the AS classes that control the presentation as it currently stands, please excuse the lack of commenting these files are provided 'As Is'.</p>
<p>the example presentation can be seen <a href="http://development.bittube.com/photogallery.html">here</a></p>
<p><span id="more-38"></span></p>
<p>BmpImageLoad.as this is used as a basic Bitmap loader and button within the gallery. It is also the class that is used to display the 'main' larger image.</p>
<p>[as]import mx.controls.SimpleButton<br />
import flash.filters.*;<br />
import flash.geom.Matrix;<br />
import flash.display.BitmapData;</p>
<p>class BmpImageLoad extends SimpleButton<br />
{<br />
	private static var symbolName:String = "BmpImageLoad";<br />
	private static var className:String = "BmpImageLoad";<br />
	private static var bmpImageLoad:MovieClip;<br />
	private static var __int_intervalTime:Number=31;</p>
<p>	private var boundingBox_mc:MovieClip;<br />
	private var __mc_contentHolder:MovieClip;<br />
	private var __mc_imageShell:MovieClip;<br />
	private var __mc_imageHolder:MovieClip;<br />
	private var __mc_imageDisplay:MovieClip;<br />
	private var __mc_imageLoadVal:MovieClip;</p>
<p>	private var __int_bTotal:Number;<br />
	private var __int_lPercent:Number;<br />
	private var __loadInterval:Number;</p>
<p>	private var __bln_isLoaded:Boolean = false;</p>
<p>	private var __str_loadTarget:String</p>
<p>	function dispatchEvent() {};<br />
 	function addEventListener() {};<br />
 	function removeEventListener() {};</p>
<p> 	public function BmpImageLoad()<br />
	{<br />
		mx.events.EventDispatcher.initialize(this);<br />
	}</p>
<p>	private function init():Void<br />
	{<br />
		super.init();<br />
		boundingBox_mc._visible = false;<br />
		boundingBox_mc._width = width<br />
		boundingBox_mc._height = height;<br />
	}</p>
<p>	private function size():Void<br />
	{<br />
		super.size();<br />
		boundingBox_mc._width = width<br />
		boundingBox_mc._height = height;<br />
	}</p>
<p>	private function draw():Void<br />
	{<br />
		size();<br />
		createChildren();<br />
	}</p>
<p>	private function removeChildren():Void<br />
	{<br />
		__mc_imageLoadVal.removeMovieClip();<br />
		__mc_imageDisplay.removeMovieClip();<br />
		__mc_imageHolder.removeMovieClip();<br />
		__mc_imageShell.removeMovieClip();<br />
		__mc_contentHolder.removeMovieClip();<br />
		this.filters = [];<br />
	}<br />
	private function createChildren():Void<br />
	{<br />
		removeChildren()<br />
		__mc_contentHolder = this.createEmptyMovieClip("mc_contentHolder", 0);<br />
		__mc_imageShell = __mc_contentHolder.createEmptyMovieClip("mc_imageShell", 0);<br />
		__mc_imageHolder = __mc_imageShell.createEmptyMovieClip("mc_imageHolder", 0);<br />
		__mc_imageDisplay = __mc_contentHolder.createEmptyMovieClip("mc_imageDisplay", 1);<br />
		__mc_imageLoadVal = drawSolidRect(__mc_contentHolder, width, height, 0xcccccc, null, null, "mc_mc_imageLoadVal", 2);<br />
		__mc_imageLoadVal._yscale = 1;<br />
		__mc_imageLoadVal.cacheAsBitmap = true;<br />
		__mc_imageDisplay._visible = __mc_imageShell._visible = __mc_imageHolder._visible = false;</p>
<p>		__mc_imageHolder._quality = "BEST";</p>
<p>		if(loadTarget != undefined && loadTarget.length)<br />
		{<br />
			removeInterval(this.__loadInterval, "__loadInterval");<br />
			__mc_imageHolder.loadMovie(loadTarget);<br />
			setLoadInterval();<br />
		}<br />
	}</p>
<p>	private function setLoadInterval():Void<br />
	{<br />
		this.__loadInterval = setInterval(this, "doContentLoad", __int_intervalTime);<br />
	}<br />
	public function load()<br />
	{<br />
		isLoaded = false;<br />
		invalidate();<br />
	}</p>
<p>	public function setSize(w:Number, h:Number)<br />
	{<br />
		super.setSize(w, h)<br />
		invalidate();<br />
	}</p>
<p>	public function get isLoaded():Boolean<br />
	{<br />
		return __bln_isLoaded;<br />
	}<br />
	public function set isLoaded(val:Boolean)<br />
	{<br />
		__bln_isLoaded = val;<br />
	}</p>
<p>	[Inspectable]<br />
	public function get loadTarget():String<br />
	{<br />
		return getTarget();<br />
	}<br />
	public function set loadTarget(val:String)<br />
	{<br />
		setTarget(val);<br />
	}</p>
<p>	private function doContentLoad()<br />
	{<br />
		var comp = __mc_imageHolder;<br />
		var bLoaded = comp.getBytesLoaded();<br />
		var bTotal = comp.getBytesTotal();<br />
		var bln_hasSize:Boolean;<br />
		isLoaded = Boolean((bTotal == bLoaded) && (bTotal > 0));</p>
<p>		bln_hasSize = isLoaded && comp._width >0 && comp._height > 0;</p>
<p>		__int_lPercent = Math.floor((bLoaded/bTotal)*100);<br />
		__mc_imageLoadVal._yscale = __int_lPercent;</p>
<p>		if(bln_hasSize)<br />
		{<br />
			removeInterval(this.__loadInterval, "__loadInterval");<br />
			dispatchEvent({type:"bitmapImageLoaded",target:this});<br />
			displayLoadedImage();<br />
		}<br />
		else<br />
		{<br />
			updateAfterEvent();<br />
		}<br />
	}</p>
<p>	private function displayLoadedImage()<br />
	{<br />
		var int_glowColor:Number = 0x000000;<br />
		var flt_stageGlow:GlowFilter = new GlowFilter(int_glowColor, 0.45, 7, 7, 2, 3, false, false);<br />
		var flt_stageBevel:BevelFilter = new BevelFilter(1, 45, 0x999999, 1, 0x333333, 1, 0, 0, 255, 3, "inner", false);<br />
		var __bmp_galleryThumb = new BitmapData(width, height, true, 0x00ffffff);<br />
		var mtx_imageMatrix:Matrix = new Matrix();</p>
<p>		var int_xRatio:Number = (width/__mc_imageShell._width);<br />
		var int_yRatio:Number = (height/__mc_imageShell._height);<br />
		int_xRatio = int_yRatio = Math.min(int_yRatio, int_xRatio);</p>
<p>		var int_imgWidthRatio:Number = (__mc_imageShell._width*int_xRatio);<br />
		var int_imgHeightRatio:Number = (__mc_imageShell._height*int_yRatio);<br />
		var tXpos:Number = (width -int_imgWidthRatio) /2;<br />
		var tYpos:Number = (height - int_imgHeightRatio) /2;</p>
<p>		mtx_imageMatrix.scale(int_xRatio, int_yRatio);<br />
		mtx_imageMatrix.translate(tXpos, tYpos);</p>
<p>		__mc_imageDisplay.attachBitmap(__bmp_galleryThumb, 0, "always", true);<br />
		__bmp_galleryThumb.draw(__mc_imageHolder, mtx_imageMatrix, undefined, undefined, undefined, true);</p>
<p>		__mc_imageDisplay._visible = true;<br />
		__mc_imageHolder.removeMovieClip();<br />
		__mc_imageLoadVal.removeMovieClip();</p>
<p>		__mc_imageDisplay.filters =[flt_stageBevel];<br />
		this.filters = [flt_stageGlow];<br />
	}</p>
<p>	private function removeInterval(int_Interval:Number, str_intervalName:String):Void<br />
	{<br />
		clearInterval(int_Interval);<br />
		this[str_intervalName] = undefined;<br />
	}</p>
<p>	private function getTarget():String<br />
	{<br />
		return __str_loadTarget;<br />
	}<br />
	private function setTarget(val:String)<br />
	{<br />
		var int_imgExtL:Number = val.lastIndexOf(".") +1;<br />
		var int_imgPLenght:Number = val.length;</p>
<p>		if((int_imgPLenght-int_imgExtL)&lt;3) return -1;</p>
<p>		var str_imgExt:String = val.substr(-(int_imgPLenght-int_imgExtL)).toLowerCase();<br />
		switch(str_imgExt)<br />
		{<br />
			case "jpg" :<br />
			case "png" :<br />
			case "gif" :<br />
			case "jpeg" :<br />
				isLoaded = false;<br />
				__str_loadTarget = val;<br />
				break;<br />
			default :<br />
				break;<br />
		}<br />
		load();<br />
	}</p>
<p>	/* private drawing functions */<br />
	private function drawSolidRect(mc_target:MovieClip, int_w:Number, int_h:Number, int_fillC:Number, int_lineC:Number, int_lineW:Number, str_clipName:String, int_depth:Number):MovieClip<br />
	{<br />
			var mc_retClip:MovieClip = mc_target.createEmptyMovieClip(str_clipName, int_depth);<br />
			if(int_lineW != null && int_lineC != null) mc_retClip.lineStyle(int_lineW, int_lineC);<br />
			mc_retClip.beginFill(int_fillC);<br />
			_drwRct(mc_retClip, 0, 0, int_w, int_h);</p>
<p>			mc_retClip.endFill();</p>
<p>			return mc_retClip;<br />
	}<br />
	private function _drwRct(mc_clip:MovieClip, int_x1:Number, int_y1:Number, int_x2:Number, int_y2:Number):Void<br />
	{<br />
		mc_clip.moveTo (int_x1, int_y1);<br />
		mc_clip.lineTo (int_x2, int_y1);<br />
		mc_clip.lineTo (int_x2, int_y2);<br />
		mc_clip.lineTo (int_x1, int_y2);<br />
		mc_clip.lineTo (int_x1, int_y1);<br />
	};<br />
}[/as]</p>
<p>BmpImageList.as uses the previous bitmap loader/button class to populate lists of sequencial images, each image loader is pull in only after the previous one has loaded. The datasource for the list is taken in as an array.</p>
<p>It is possible to specify the number of images that should be visible within the list, or shown within the list, this is effectivly the maximum number of images that will be loaded. </p>
<p>The height of the component dictates the height ratio of each image shown.</p>
<p>[as]import mx.core.UIComponent;<br />
import mx.utils.Delegate;<br />
import BmpImageLoad;</p>
<p>class BmpImageList extends UIComponent<br />
{<br />
	private static var symbolName:String = "BmpImageList";<br />
	private static var className:String = "BmpImageList";<br />
	private static var bmpImageList:MovieClip;</p>
<p>	private var boundingBox_mc:MovieClip;</p>
<p>	private var __arr_imageList:Array;<br />
	private var __arr_imageClips:Array;</p>
<p>	private var __int_imagePad:Number;<br />
	private var __int_imageNumber:Number;<br />
	private var __int_loadImage:Number;<br />
	private var __bln_isVertical:Boolean;</p>
<p>	function dispatchEvent() {};<br />
 	function addEventListener() {};<br />
 	function removeEventListener() {};</p>
<p> 	public function BmpImageList()<br />
	{<br />
		mx.events.EventDispatcher.initialize(this);<br />
	}</p>
<p>	private function init():Void<br />
	{<br />
		super.init();<br />
		__arr_imageList = new Array();<br />
		__arr_imageClips = new Array();</p>
<p>		boundingBox_mc._visible = false;<br />
		boundingBox_mc._width = width<br />
		boundingBox_mc._height = height;<br />
	}</p>
<p>	private function size():Void<br />
	{<br />
		super.size();<br />
		boundingBox_mc._width = width<br />
		boundingBox_mc._height = height;<br />
	}</p>
<p>	private function draw():Void<br />
	{<br />
		size();<br />
		createChildren();<br />
	}</p>
<p>	private function createChildren():Void<br />
	{<br />
		var i:Number = 0;<br />
		var __mc_currentImageClip:MovieClip;<br />
		__int_loadImage = 0;</p>
<p>		removeChildren();</p>
<p>		while(i < imageList.length)<br />
		{<br />
			__mc_currentImageClip = createObject("BmpImageLoad", "mc_newImage"+i, getNextHighestDepth(), {_width:((width - (imagePadding*(imageNumber-1)))/imageNumber), _height:height});<br />
			__arr_imageClips[i] = __mc_currentImageClip;</p>
<p>			__arr_imageClips[i]._visible = false;<br />
			__arr_imageClips[i].addEventListener("bitmapImageLoaded", Delegate.create(this, bmpLoaded));<br />
			++i;<br />
		}<br />
		arrange()<br />
	}</p>
<p>	private function arrange()<br />
	{<br />
		var i:Number = 0;<br />
		while(i < imageList.length)<br />
		{<br />
			if(i)<br />
			{<br />
				__arr_imageClips[i]._x = ((((width - (imagePadding*(imageNumber-1)))/imageNumber) + imagePadding)*i);<br />
			}<br />
			else<br />
			{<br />
				__arr_imageClips[i]._visible = true;<br />
				__arr_imageClips[i].loadTarget = _root.str_folderRoot + imageList[i].firstChild.nodeValue<br />
			}<br />
			++i;<br />
		}</p>
<p>	}<br />
	private function removeChildren():Void<br />
	{<br />
		var i:Number = 0;<br />
		while(i < __arr_imageClips.length)<br />
		{<br />
			destroyObject(__arr_imageClips[i]._name);<br />
			++i;<br />
		}<br />
	}</p>
<p>	private function bmpLoaded(obj_evnt:Object)<br />
	{<br />
		dispatchEvent({type:"bitmapImageLoaded",target:__arr_imageClips[__int_loadImage]});<br />
		__arr_imageClips[++__int_loadImage]._visible = true;<br />
		if(!(__int_loadImage == imageList.length))<br />
		{<br />
			__arr_imageClips[__int_loadImage].loadTarget = _root.str_folderRoot + imageList[__int_loadImage].firstChild.nodeValue;<br />
		}<br />
		else<br />
		{<br />
			dispatchEvent({type:"bitmapListLoaded",target:this});<br />
		}<br />
	}</p>
<p>	[Inspectable (type="Array")]<br />
	public function set imageList(arr_iL:Array)<br />
	{<br />
		__arr_imageList = arr_iL;<br />
		invalidate();<br />
	}<br />
	public function get imageList():Array<br />
	{<br />
		return __arr_imageList;<br />
	}</p>
<p>	[Inspectable (type="Number", defaultValue=10)]<br />
	public function set imageNumber(int_n:Number)<br />
	{<br />
		__int_imageNumber = int_n;<br />
		invalidate();<br />
	}<br />
	public function get imageNumber():Number<br />
	{<br />
		return __int_imageNumber;<br />
	}</p>
<p>	[Inspectable (type="Number", defaultValue=10)]<br />
	public function set imagePadding(int_p:Number)<br />
	{<br />
		__int_imagePad = int_p;<br />
		invalidate();<br />
	}<br />
	public function get imagePadding():Number<br />
	{<br />
		return __int_imagePad;<br />
	}</p>
<p>	[Inspectable (type="Boolean", defaultValue=true)]<br />
	public function set isVertical(bln_v:Boolean)<br />
	{<br />
		__bln_isVertical = bln_v;<br />
		invalidate();<br />
	}<br />
	public function get isVertical():Boolean<br />
	{<br />
		return __bln_isVertical;<br />
	}<br />
}[/as]</p>
<p>BmpImageGrid.as is effectively a control class for the number of bitmap image lists that are required to display all images in a given data source when the number of images in each list is set. Again the data source is provided as an array.</p>
<p>It is possible to affect the height and padding of the image lists that are created within the image grid.</p>
<p>[as]import mx.utils.Delegate;<br />
import mx.core.UIComponent;<br />
import BmpImageList;</p>
<p>class BmpImageGrid extends UIComponent<br />
{<br />
	private static var symbolName:String = "BmpImageGrid";<br />
	private static var className:String = "BmpImageGrid";<br />
	private static var bmpImageGrid:MovieClip;</p>
<p>	private var boundingBox_mc:MovieClip;<br />
	private var __mc_contentHolder:MovieClip;<br />
	private var __arr_imageLists:Array;</p>
<p>	private var __int_imagePad:Number;<br />
	private var __int_imageNumber:Number;<br />
	private var __int_rowHeight:Number;<br />
	private var __int_loadImage:Number;<br />
	private var __int_iRowNumber:Number;</p>
<p>	private var __bln_autoSize:Boolean;</p>
<p>	function dispatchEvent() {};<br />
 	function addEventListener() {};<br />
 	function removeEventListener() {};</p>
<p> 	public function BmpImageGrid()<br />
	{<br />
		mx.events.EventDispatcher.initialize(this);<br />
	}</p>
<p>	private function init():Void<br />
	{<br />
		super.init();<br />
		__arr_imageLists = new Array();</p>
<p>		boundingBox_mc._visible = false;<br />
		boundingBox_mc._width = width<br />
		boundingBox_mc._height = height;<br />
	}</p>
<p>	private function size():Void<br />
	{<br />
		super.size();<br />
		boundingBox_mc._width = width<br />
		boundingBox_mc._height = height;<br />
	}</p>
<p>	private function draw():Void<br />
	{<br />
		size();<br />
		createChildren();<br />
	}</p>
<p>	private function getImageCellDims():Void<br />
	{<br />
		var int_minRow:Number = Math.ceil(imageList.length/imageNumber);<br />
		__int_iRowNumber = Math.max((height / rowHeight), int_minRow);<br />
		if(autoSize)setSize(width, (rowHeight + imagePadding));<br />
		dispatchEvent({type:"gridDimensionsSet",target:this});<br />
	}</p>
<p>	private function createChildren():Void<br />
	{<br />
		getImageCellDims()<br />
		removeChildren();<br />
		__mc_contentHolder = createEmptyMovieClip("mc_contentHolder", 0);<br />
		var __mc_currentImageRow:MovieClip;<br />
		var i:Number = 0;<br />
		var int_arrSplice:Number<br />
		var tmp_arrImages:Array;<br />
		__int_loadImage = 0;</p>
<p>		while(i < __int_iRowNumber)<br />
		{<br />
			int_arrSplice = (imageNumber*i);<br />
			tmp_arrImages = imageList.slice(int_arrSplice, (int_arrSplice+imageNumber));</p>
<p>			__mc_currentImageRow = createObject("BmpImageList", "mc_newBmpImgList"+i, i, {_width:width, _height:rowHeight, imageNumber:imageNumber, imagePadding:imagePadding});<br />
			__mc_currentImageRow._visible = false;<br />
			__mc_currentImageRow.addEventListener("bitmapListLoaded", Delegate.create(this, bmpRowLoaded));<br />
			__mc_currentImageRow.addEventListener("bitmapImageLoaded", Delegate.create(this, bmpLoaded));</p>
<p>			if((int_arrSplice+imageNumber) > imageList.length) __int_iRowNumber = ++i;<br />
			++i;<br />
		}<br />
		arrange();<br />
	}</p>
<p>	private function arrange()<br />
	{<br />
		var i:Number = 0;<br />
		var int_arrSplice:Number<br />
		var __mc_currentImageRow:MovieClip;</p>
<p>		while(i < __int_iRowNumber)<br />
		{</p>
<p>			int_arrSplice = (imageNumber*i);<br />
			__mc_currentImageRow = this["mc_newBmpImgList"+i];<br />
			if(i)<br />
			{<br />
				__mc_currentImageRow._y = (rowHeight + imagePadding) *i;<br />
			}<br />
			else<br />
			{<br />
				__mc_currentImageRow._visible = true;<br />
				__mc_currentImageRow.imageList = imageList.slice(int_arrSplice, (int_arrSplice+imageNumber));<br />
			}<br />
			++i;<br />
		}</p>
<p>	}</p>
<p>	private function bmpClicked(obj_evnt:Object)<br />
	{<br />
		dispatchEvent({type:"click",target:obj_evnt.target});<br />
	}<br />
	private function bmpLoaded(obj_evnt:Object)<br />
	{<br />
		obj_evnt.target.useHandCursor = true;<br />
		obj_evnt.target.addEventListener("click", Delegate.create(this, bmpClicked));<br />
	}</p>
<p>	private function bmpRowLoaded(obj_evnt:Object)<br />
	{</p>
<p>		if(autoSize)setSize(width, ((rowHeight + imagePadding) * (__int_loadImage+2)));<br />
		dispatchEvent({type:"bitmapListLoaded",target:this});</p>
<p>		++__int_loadImage</p>
<p>		if(!(__int_loadImage == __int_iRowNumber))<br />
		{<br />
			this["mc_newBmpImgList" + (__int_loadImage)]._visible = true;<br />
			var int_arrSplice:Number = (imageNumber*__int_loadImage);<br />
			this["mc_newBmpImgList"+__int_loadImage].imageList = imageList.slice(int_arrSplice, (int_arrSplice+imageNumber));<br />
		}<br />
		else<br />
		{<br />
			if(autoSize)setSize(width, ((rowHeight + imagePadding) * (__int_loadImage)));<br />
			dispatchEvent({type:"bitmapGridLoaded",target:this});<br />
		}<br />
	}</p>
<p>	private function removeChildren():Void<br />
	{<br />
		var i:Number = 0;<br />
		while(i < __int_iRowNumber)<br />
		{<br />
			destroyObject(this["mc_newBmpImgList"+i])<br />
			++i;<br />
		}<br />
		__mc_contentHolder.removeMovieClip();<br />
	}</p>
<p>	[Inspectable (type="Array")]<br />
	public function set imageList(arr_iL:Array)<br />
	{<br />
		__arr_imageLists = arr_iL;<br />
		invalidate();<br />
	}<br />
	public function get imageList():Array<br />
	{<br />
		return __arr_imageLists;<br />
	}</p>
<p>	[Inspectable (type="Number", defaultValue=35)]<br />
	public function set rowHeight(int_n:Number)<br />
	{<br />
		__int_rowHeight = int_n;<br />
		invalidate();<br />
	}<br />
	public function get rowHeight():Number<br />
	{<br />
		return __int_rowHeight;<br />
	}</p>
<p>	[Inspectable (type="Number", defaultValue=10)]<br />
	public function set imageNumber(int_n:Number)<br />
	{<br />
		__int_imageNumber = int_n;<br />
		invalidate();<br />
	}<br />
	public function get imageNumber():Number<br />
	{<br />
		return __int_imageNumber;<br />
	}</p>
<p>	[Inspectable (type="Number", defaultValue=10)]<br />
	public function set imagePadding(int_p:Number)<br />
	{<br />
		__int_imagePad = int_p;<br />
		invalidate();<br />
	}<br />
	public function get imagePadding():Number<br />
	{<br />
		return __int_imagePad;<br />
	}<br />
	[Inspectable (type="Boolean", defaultValue=true)]<br />
	public function set autoSize(bln_aS:Boolean)<br />
	{<br />
		__bln_autoSize = bln_aS;<br />
		invalidate();<br />
	}<br />
	public function get autoSize():Boolean<br />
	{<br />
		return __bln_autoSize;<br />
	}<br />
}[/as]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2005/11/22/flash-8-photo-gallery-files/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash Apps &amp; Flex Apps</title>
		<link>http://blog.bittube.com/2005/10/26/flash-apps-flex-apps/</link>
		<comments>http://blog.bittube.com/2005/10/26/flash-apps-flex-apps/#comments</comments>
		<pubDate>Wed, 26 Oct 2005 13:41:32 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash 8]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/wordpress/?p=26</guid>
		<description><![CDATA[Interesting discussion on Flash, Flex, RIA development and the freelance world]]></description>
			<content:encoded><![CDATA[<p>I haven’t finished reading this article yet, but it seems to start off in an area I can understand well. Also given that I know some developers (<a href="http://blog.flashgen.com">no.1</a>, <a href="http://www.flashcoder.net/blog/">no.2</a>) that are wrestling with flash in a RIA development; I thought it was quite relevant.</p>
<p>It’s amazing that some companies just don’t listen to the developers that are trying to build there products.</p>
<p><a href="http://www.jessewarden.com/archives/2005/10/reinvent_yourse.html">http://www.jessewarden.com/archives/2005/10/reinvent_yourse.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2005/10/26/flash-apps-flex-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash 8 Development</title>
		<link>http://blog.bittube.com/2005/10/26/flash-8-development/</link>
		<comments>http://blog.bittube.com/2005/10/26/flash-8-development/#comments</comments>
		<pubDate>Wed, 26 Oct 2005 10:07:04 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
				<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[Flash 8]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Photos]]></category>

		<guid isPermaLink="false">http://blog.bittube.com/wordpress/?p=25</guid>
		<description><![CDATA[Over the last few weeks i have been playing with flash 8, of course, here are the results so far...]]></description>
			<content:encoded><![CDATA[<p>The Fist thing was to transfer my early light site (<a href="http://www.bittube.com">bittube.com</a>) into Flash 8. The site was originally produced using 90% code with a few classes and obviously the Bitmaps.<br />
Using the new Bitmap capabilities in Flash 8 and some of the filters i was able to drop the processing requirements of the site and also the file size. Not to mention that now the whole Shebang is Code generated, with the exception of the loaded bitmaps of course.</p>
<p><a href="http://development.bittube.com">bittube.com</a> Flash 8 version</p>
<p>The next job was to provide a photo gallery that would show the loaded background images from the site in a more user friendly format, (thanks to Sean for the prompt). Again the whole lot is Code generated, so nice and small on the file size and driven by XML, so easy to update.</p>
<p><a href="http://development.bittube.com/photogallery.php">Flash 8 Photo Gallery</a></p>
<p>Once I have tidied up the source i will post the classes. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bittube.com/2005/10/26/flash-8-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
