<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1377552797269709203</id><updated>2012-01-12T07:56:26.302-08:00</updated><category term='mobile'/><category term='images'/><category term='swfloader'/><category term='flash'/><category term='FlexUnit 4'/><category term='Flex Button Custom DropShadoFilter Override'/><category term='Flex 4.1 Tabbar tabnavigator skin css mx spark'/><category term='javascript'/><category term='Email'/><category term='debugging'/><category term='dynamic'/><category term='4.5.1'/><category term='load'/><category term='Flex 4'/><category term='Apple'/><category term='ApplicationStorageDirectory'/><category term='Test'/><category term='Error 2173'/><category term='AR'/><category term='datechooser'/><category term='skinning'/><category term='datefield'/><category term='saved'/><category term='eclipse'/><category term='iOS'/><category term='image'/><category term='breakpoint'/><category term='clipped'/><category term='halo effect'/><category term='Adobe'/><category term='embedded'/><category term='catch'/><category term='JVM'/><category term='borders'/><category term='basic'/><category term='mx skin'/><category term='Flash Builder'/><category term='controls'/><category term='robotlegs'/><category term='Flash Actionscript Flex IDE Curly cuddling cuddler'/><category term='AIR'/><category term='resizing'/><category term='AS3'/><category term='asset loading'/><category term='simple'/><category term='smooth scrolling'/><category term='Java'/><category term='Dreamweaver'/><category term='PV3D'/><category term='flex'/><category term='iPhone'/><category term='drawRoundRect'/><category term='horizontallist'/><category term='flashbuilder 4'/><category term='external'/><category term='Glassfish'/><category term='iPad'/><category term='fizzbuzz'/><category term='CS4'/><title type='text'>Flexpletives</title><subtitle type='html'>Lordb8r's ramblings on Flex, RIA, SaaS, PaaS, DbaaS, Python, Ruby, MongoDB, robots, AR, geekiness, and anything that makes me curious, just not tax codes...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-6011415532408663754</id><published>2012-01-09T09:07:00.000-08:00</published><updated>2012-01-09T09:07:05.446-08:00</updated><title type='text'>Javascript error in Flex: Why my html won't load my swf...oy!</title><content type='html'>Boy, I hate Javascript...actually I don't hate it, but I hate the errors it can throw. &amp;nbsp;Anyways, in this issue I explain why a spurious error actually was correct. &amp;nbsp;I haven't done much Flex 3 in a while, but a current client project asked me to stay within these bounds. &amp;nbsp;I checked out the code from CVS (ugh) and got everything up. &amp;nbsp;But when I tried to run the project, I never launched the swf in the html. &amp;nbsp;Finally I found the error. &lt;br /&gt;&lt;br /&gt;Using &lt;a href="http://getfirebug.com/"&gt;FireBug&lt;/a&gt;, I found that the DetectFlashVer() wasn't firing. &amp;nbsp;Huh?&lt;br /&gt;&lt;br /&gt;I checked the files, made sure I hadn't changed any configuation, double checked with the team that I all the code. &amp;nbsp;Everything was there, as they had it.&lt;br /&gt;&lt;br /&gt;Only upon further investigation did I realize that I was missing the AC_OET.js and /history from my template. &amp;nbsp;This seemed strange in the beginning, but the client insisted everything was running fine for them. &amp;nbsp;I had to assume it was my configuration, trying to run Flex 3.5 from Flashbuilder 4.6, I must've been doing something wrong.&lt;br /&gt;&lt;br /&gt;My only guess is that because AC_OET.js didn't exist a long time ago (I actually don't know when it was introduced to the SDK), when I tried to build the package, because it wasn't in the html-template folder, it wasn't going to just show up, and because the html template was probably based on the newer SDK, it was looking for the javascript, and because it couldn't find that, never loaded...&lt;br /&gt;&lt;br /&gt;Case solved. &lt;br /&gt;&lt;br /&gt;Old html:&lt;br /&gt;if(DV(6,0,65)&amp;amp;&amp;amp;!hV){document.title=document.title.slice(0,47)....&lt;br /&gt;&lt;br /&gt;New html:&lt;br /&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;var&lt;/span&gt; hasProductInstall = DetectFlashVer(6, 0, 65);&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;This made a big difference. &amp;nbsp;Hope this helps you.&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-6011415532408663754?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/6011415532408663754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2012/01/javascript-error-in-flex-why-my-html.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6011415532408663754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6011415532408663754'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2012/01/javascript-error-in-flex-why-my-html.html' title='Javascript error in Flex: Why my html won&apos;t load my swf...oy!'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-6259767648435292522</id><published>2011-12-13T14:22:00.000-08:00</published><updated>2011-12-13T14:22:08.929-08:00</updated><title type='text'>Flex a Spoon, Flash some AIR, and stick around for a while</title><content type='html'>&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Hoyt’s last Chicago Flex preso and Labriola’s SpoonProject &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Kevin Hoyt and Michael Labriola both were the guest speakers at our CFUG meetup (www.chicagoflex.org).&amp;nbsp; The great news is that this was the first time either of them had spoken together in the same room at the same time.&amp;nbsp; The sad news is, this will be the last time both of them will be together at CFUG to ever talk about Flex again.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;If you are interested in watching the near 2-hour discussion, please go here: &lt;a href="https://experts.adobeconnect.com/_a204547676/p7xqmnpakcd/?launcher=false&amp;amp;fcsContent=true&amp;amp;pbMode=normal"&gt;https://experts.adobeconnect.com/_a204547676/p7xqmnpakcd/?launcher=false&amp;amp;fcsContent=true&amp;amp;pbMode=normal&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Otherwise:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;First off, I want to discuss a few things that I feel will help clarify where I am coming from.&amp;nbsp; Often times I have discussions with multiple clients about what Flash is, how Flex fits in, and we can accomplish with AIR.&amp;nbsp; For this post (which is long – way too long perhaps, but long enough to see the point), I am going to just quickly reference and review, then I will discuss: Adobe’s PR (the reason for this meetup and me asking Michael and Kevin to come and talk); Adobe’s strengths, position, and vision for the future; The Spoon Project; Spoons opportunities and dilemmas; and my own 2 cents.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;What is Flash?&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Plain-speak: A plugin.&amp;nbsp; Want more information, check here: http://en.wikipedia.org/wiki/Flashplayer.&amp;nbsp; It is Adobe’s bread and butter when it comes to content management regarding video and video games.&amp;nbsp; More on that later.&amp;nbsp; For now, know that it is a highly evolved virtual machine (VM) that can execute code (AS3) for a rich and interactive experience.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;What is Flex?&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Plain-speak: A framework built on top of Actionscript 3.&amp;nbsp; It is a powerful tool for building applications, especially enterprise apps.&amp;nbsp; It has a terrific life cycle, amazing APIs, and is several years ahead of any other technology for delivering secure, robust, and data-driven applications&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;What is AIR?&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Plain-speak: A desktop version of the web browser version of the flashplayer.&amp;nbsp; It has some much cooler APIs than the standard flashplayer, and because it isn’t sandboxed by the browser, you get a few other neat things.&amp;nbsp; Still, it’s mainly a desktop version of the browser version.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;So?&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Adobe’s PR (fubarred, snafu, or intended)&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Adobe is great at one thing, making tools for creative people to create things.&amp;nbsp; In my experience as a developer, consultant, analyst, and everything else, I’ve learned that when it comes to businesses and software development, you get one of two things: an agency approach, or an enterprise approach.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;As a quick definition, and agency approach is the short term.&amp;nbsp; These are products that don’t have much shelf life, are short lived in the wild, and even if they win an award will fade into obscurity soon.&amp;nbsp; The enterprise approach is the opposite.&amp;nbsp; While enterprise apps are notoriously slow to come to fruition, they last (what seems) forever.&amp;nbsp; Normally they are a 5-10 year package that sells for a large amount, and comes with upgrades, new features, and snazzy options as the life of the product wears on.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In the world of Adobe, Adobe has no clue how to deal with the enterprise.&amp;nbsp; They can only see one thing, and that is the bleeding edge.&amp;nbsp; As a four-plus billion dollar ($4,000,000,000+) a year company, Adobe makes most of it’s money on creative tools.&amp;nbsp; This means Creative Suite, Photoshop, and a few other choice applications is where Adobe makes its money.&amp;nbsp; It does it by selling tools, or packages of tools, to companies and users.&amp;nbsp; Since the inception of Flex, Adobe has never really figured out how to make money off of it.&amp;nbsp; Flex uses the flashplayer and AIR, but AIR and the flashplayer don’t need Flex.&amp;nbsp; In fact, one of the biggest complaints of Flex is the bloat it brings with its myriad libraries, download times can be severely impacted. Not to mention the speed of an application because it is using the Flex messaging framework.&amp;nbsp; These have been, and will be, hotly contested for some time to come.&amp;nbsp; &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Regardless, Adobe never made (“real”) money by creating the framework.&amp;nbsp; It did make some money by consulting on projects, but the 25+ team members it has allocated to the sdk never generated revenue (unlike the large group of folks who work on Photoshop or AfterEffects, whose products do make money).&amp;nbsp; Flashbuilder does generate some revenue, but not at the same volume as the other products.&amp;nbsp; Adobe looks to start projects that can generate at least a hundred million dollars ($100,000,000) a year, and Flex never even came close.&amp;nbsp; Sure it might be a multi-million dollar venture, but is that worth the resources when those resources could be dedicated to a larger project and make more money somewhere else?&amp;nbsp; Adobe says, “Nope.”&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;So Adobe made the bold move and told the world it is no longer interested in developing Flash for mobile (completely unrelated to Flex), and making Flex completely open source, giving it, and its support to the Apache Foundation (&lt;a href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html"&gt;http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html&lt;/a&gt;).&amp;nbsp; Make no mistake about it, Adobe will support the flash player, especially for the desktop, and it &lt;b&gt;&lt;u&gt;WILL&lt;/u&gt;&lt;/b&gt; support AIR.&amp;nbsp; AIR makes the flashplayer available everywhere that isn’t a browser, so video content and games have a way to live on.&amp;nbsp; And Adobe keeps its cash cow.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;And don’t worry, Flex isn’t going anywhere too quickly, but we’ll get there in a bit. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The message from Adobe is messy, sloppy, poorly handled, but think of it like teenage angst, where the person has lost control of their emotions, and finally just said, “Enough! Enough! We can’t have it our way, we don’t want it any way!”&amp;nbsp; Adobe has not been able to capitalize on innovations that are not tools “creative” people need.&amp;nbsp; &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Adobe’s position (including Natobi/PhoneGap)&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;So what does Adobe want to do going forward?&amp;nbsp; For starters, they have their Interactive Developer Evangelist team spearheading a PR campaign to tell all developers that HTML is the future.&amp;nbsp; Their message has become pretty consistent, with their twitter feeds basically dropping any mention of Flex.&amp;nbsp; They seem to ignore everything Flex, and stick with the standards of the future.&amp;nbsp; Let’s not get caught u p in rhetoric. Adobe is not interested in maintaining Flex any longer than it has to.&amp;nbsp; Flex is a dead weight to the hipster, creative, entrepreneurial type.&amp;nbsp; And Adobe cannot wait to release itself from that death grip.&amp;nbsp; To prove that it is over Flex, it bought Natobi, Typekit (http://blog.typekit.com/2011/10/03/adobe-acquires-typekit/), Efficient Frontier (), and a few other online real estate properties, pointing towards a desire to enter and again dominate the tool making process for online advertising (because the flashplayer hasn’t been there for the last decade).&amp;nbsp; From the 8/18/11 anouncement, Adobe is building up to be the leader of “…Content Authoring and Digital Marketing.”&amp;nbsp; &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Enterprise applications are not either of those.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Adobe bought Natobi because Natobi created PhoneGap.&amp;nbsp; PhoneGap is a software application that essentially turns any application you create into an HTML5/JS/CSS application, wraps it in a pseudo-browser, and deploys like a native app.&amp;nbsp; So, for example, on iOS this is a standalone instance of Safari running on your device, and it appears to be a standalone, native app, but you are only seeing Safari rendering web pages that are considered the app.&amp;nbsp; The library works quite well, and for all intents and purposes, it acts just as good as a native application.&amp;nbsp; Adobe supports it and suggests you use it as well.&amp;nbsp; For them, this is the bleeding edge of technology, pushing mobile application development.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;There is no Spoon?&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;During the 2011 Flex|360 conference in Denver, it was announced that the Spoon Project was taking off.&amp;nbsp; If you don’t know what Spoon is, read here: &lt;a href="http://www.spoon.as/"&gt;http://www.spoon.as/&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Short take – it’s meant to help the Flex development team fix bugs faster.&amp;nbsp; It’s got an architecture of people and processes to resolve conflicts and promote fixes faster than Adobe’s Jira and engineers could handle. Spoon has PR, it has volunteers, it has a lot!&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Spoon’s dilemma&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;It might actually conflict with the Apache Software Foundation (ASF).&amp;nbsp; This is not detailed out yet, and Spoon, Adobe, and ASF have some work to do to hammer out the details.&amp;nbsp; There are a lot of license agreements, IP rights, and whatever else a lawyer wants to earn fees to help disentangle Adobe from the Flex framework.&amp;nbsp; Spoon might be a problem only because it is a separate entity ready to run and fix problems, and Adobe is saying, “Actually, let’s let the big boys handle this.&amp;nbsp; We’re gonna give it to ASF, and see that they take good care.”&amp;nbsp; Nothing is set in stone yet, and Spoon may or may not be involved.&amp;nbsp; That is to be determined.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Future&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;If there’s anything that is certain right now, the Flash player and AIR are going to continuously be improved upon, upgraded, and pushed out to be as ubiquitous, easy to use, easy to get, and easy to update.&amp;nbsp; Adobe has a lot at stake to make sure these tools remain potent sources of DRM content providers, and will keep them up to date.&amp;nbsp; But Adobe also wants users to buy their products if they are making cutting edge products.&amp;nbsp; The amazing thing about HTML advertising is that you can’t disable it without disabling your browser.&amp;nbsp; With Flash, there were plugin disablers galore that allow users the ability to block any flash-related medium trying to load on your computer.&amp;nbsp; However, now with the advent of video and canvas in HTML5, unless you disable javascript on your browser, you can’t stop the ads from coming.&amp;nbsp; It is a marketers wet dream to know that’s where we’re going.&amp;nbsp; And guess what, Adobe is looking to blaze the trail by providing you with the latest and greatest tools to make them.&amp;nbsp; Adobe is not promising Apps, they are promising rich web pages, rich ads, rich user experiences.&amp;nbsp; It is cutting edge, but not anything with a long tail.&amp;nbsp; Flex is a long-tailed beast.&lt;/div&gt;&lt;br /&gt;And just for a quick summation, here's Peter Elst's post about the exact same subject:&lt;br /&gt;&lt;br /&gt;http://www.peterelst.com/blog/2011/12/13/flex-summit-updates-on-the-open-source-strategy-and-runtimes/&lt;br /&gt;&lt;br /&gt;The Flex Summit has had some interesting notes and should help provide information about the future of this industry!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-6259767648435292522?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/6259767648435292522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/12/flex-spoon-flash-some-air-and-stick.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6259767648435292522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6259767648435292522'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/12/flex-spoon-flash-some-air-and-stick.html' title='Flex a Spoon, Flash some AIR, and stick around for a while'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-3789552654388228616</id><published>2011-11-21T13:34:00.000-08:00</published><updated>2011-11-28T13:35:02.231-08:00</updated><title type='text'>Balanced decision on the future of Flex</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Essentially, Adobe has come to the realization that the world does not&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;want plug-ins on mobile devices. &amp;nbsp;Unfortunately Adobe has done a&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;terrible job communicating what their intention is, and the initial&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;feeling many Flash/Flex users and developers had bordered on&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;pandemonium. &amp;nbsp;But this announcement is actually great news. &amp;nbsp;Adobe did&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;a poor PR job, so here's a post that really clarifies the good from&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;the bad:&amp;nbsp;&lt;/span&gt;&lt;a href="http://david.realeyes.com/?p=214" style="background-color: rgba(255, 255, 255, 0.917969); color: #1155cc; font-family: arial, sans-serif; font-size: 13px;" target="_blank"&gt;http://david.realeyes.com/?p=&lt;wbr&gt;&lt;/wbr&gt;214&lt;/a&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;. &amp;nbsp;And Adobe about their&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;strategy:&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.adobe.com/devnet/flashplatform/articles/recent-updates.html" style="background-color: rgba(255, 255, 255, 0.917969); color: #1155cc; font-family: arial, sans-serif; font-size: 13px;" target="_blank"&gt;http://www.adobe.com/devnet/&lt;wbr&gt;&lt;/wbr&gt;flashplatform/articles/recent-&lt;wbr&gt;&lt;/wbr&gt;updates.html&lt;/a&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;These are long posts, so if you don't have time, here's my summary:&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;First and foremost, Flash was never really viable on mobile devices.&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;The actual Flash player has always been clunky, resource intensive,&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;and just buggy on mobile. &amp;nbsp;It was created for a world of users that&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;had a mouse and could interact with the screen via a cursor. &amp;nbsp;On&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;mobile devices this is different, and the rules of&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;human-computer-interaction have changed. &amp;nbsp;That said, Adobe won't put&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;resources into something that isn't meant for mobile.&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Second, Adobe is finally giving us (developers) the ability to fix&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Flex faster than Adobe could. &amp;nbsp;Since Flex 1.0, Adobe has controlled&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;the entire update and release process of Flex, often times ignoring&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;blatant problems and publishing updates with a strange sense of&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;priority. &amp;nbsp;As an open source technology, the community of developers&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;gets to enhance it, much like Sun made Java open source, and aids&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;development, but doesn't control where it goes. &amp;nbsp;The community gets to&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;enhance a mature technology and improve on it, with resources from&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Adobe and the rest of the world. &amp;nbsp;Adobe is finally making good on its&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;original promise from years ago to make Flex truly open source.&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Third, the Flash player for the desktop will continue development&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;because it is viable, extremely robust, ubiquitous, and provides a&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;uniform experience regardless of which platform you are on.&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Fourth, for mobile development, Adobe stands behind AIR and the&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;continued improvement and development of this tool.&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;I am not urging anyone to simply take the path of one technology over&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;another. &amp;nbsp;HTML5 is definitely here to stay, but its tools, frameworks,&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;and community are very immature compared to the Flash platform.&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Conversely, native development is expensive in time and resources, and&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;both paths cost a lot in regards to testing every browser on every&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;device and OS.&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;There are arguments for why companies should begin acquiring and/or&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;developing talent in native and web-based technologies, but these are&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;bets being made for a future that might pan out one direction or&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;another. &amp;nbsp;I think it is beneficial to all companies that have used&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Flash in the past to realize that not much has changed or will change.&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&amp;nbsp;Flex is an awesome enterprise development tool that can be used to&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;rapidly build projects. &amp;nbsp;Flash and AIR are great resources with an&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;excellent community. &amp;nbsp;Adobe just needed to openly realize that Flash&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;on a mobile device wasn't realistic, and that the community will&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;benefit more by having Flex be truly open sourced.&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;For the future of your projects, I truly believe Flex is very strong,&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;secure, and viable. &amp;nbsp;The wariness of Adobe's commitment is&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;understandable. &amp;nbsp;Regardless, Flex isn't going anywhere, and will be&lt;/span&gt;&lt;br style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;here (specifically in the enterprise) for many years to come.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-3789552654388228616?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/3789552654388228616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/11/balanced-decision-on-future-of-flex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/3789552654388228616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/3789552654388228616'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/11/balanced-decision-on-future-of-flex.html' title='Balanced decision on the future of Flex'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-4129278547839357062</id><published>2011-10-27T22:49:00.000-07:00</published><updated>2011-10-27T22:49:13.583-07:00</updated><title type='text'>Dynamically loading audio from different locations in ApplicationStorageDirectory</title><content type='html'>Similar to my last post about getting data from different locations, this time, instead of trying to load images, i'm trying to load audio clips.&amp;nbsp; It took a little bit of finagling, but I finally have it.&amp;nbsp; Just a quick bit of back story, I am downloading a zip file and unzipping contents into my app storage directory in folders.&amp;nbsp; If I reference the directory, I need to adjust the file.nativePath for that.&amp;nbsp; Enough talk, here's the code:&lt;br /&gt;&lt;br /&gt;_file.nativePath &amp;nbsp;&amp;nbsp;&amp;nbsp; = _file.nativePath + _audio;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; req &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = new URLRequest(_file.url);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; s &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = new Sound(req,context);&lt;br /&gt;&lt;br /&gt;over and over I tried to just make the URLRequest be the _file.nativePath + _audio and kept getting the most awful Error #2032 Stream Error (which explains nothing and is not helpful).&amp;nbsp; Finally I came across a forum post that explained that the URLRequest needs the _file.url, otherwise it appends this app:/ to my string, which bombs out.&amp;nbsp; So i can adjust the nativepath, and then use the url.&amp;nbsp; ta-da!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-4129278547839357062?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/4129278547839357062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/10/dynamically-loading-audio-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/4129278547839357062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/4129278547839357062'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/10/dynamically-loading-audio-from.html' title='Dynamically loading audio from different locations in ApplicationStorageDirectory'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-2537577884267513456</id><published>2011-10-27T19:49:00.001-07:00</published><updated>2011-10-27T20:43:54.308-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='4.5.1'/><category scheme='http://www.blogger.com/atom/ns#' term='saved'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='asset loading'/><category scheme='http://www.blogger.com/atom/ns#' term='ApplicationStorageDirectory'/><category scheme='http://www.blogger.com/atom/ns#' term='load'/><category scheme='http://www.blogger.com/atom/ns#' term='external'/><title type='text'>Loading images from applicationStorageDirectory in Flex Mobile</title><content type='html'>I have to say, without a doubt, this was one of the most confounding things I've worked on in a long, long, long time.In a project for my client, I have to be able to store zip files filled w/ media assets, then be able to load audio or pictures at runtime.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Sounds easy, right? Wrong :(&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Loading a picture has never been this painful in my life.  It turns out, I can add the image to the stage (which for some reason is not respecting my skin, contentgroup, or vertical layout settings).  Regardless, I can finally load any stored image via this "not-so" simple routine. &amp;nbsp;One caveat I have is, I am downloading images in zip format, and using a utility to unpackage them into the storage directory in folders. &amp;nbsp;originally I though that would be a problem, but it turns out, because I can update the file.nativePath with the new folder, this works just fine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p1"&gt;var fl:File &lt;span class="s1"&gt;=&lt;/span&gt; File&lt;span class="s1"&gt;.&lt;/span&gt;applicationStorageDirectory;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;fl&lt;span class="s1"&gt;.&lt;/span&gt;nativePath &lt;span class="s1"&gt;=&lt;/span&gt; fl&lt;span class="s1"&gt;.&lt;/span&gt;nativePath &lt;span class="s1"&gt;+&lt;/span&gt; _image;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;var bytes:ByteArray &lt;span class="s1"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;new&lt;/span&gt; ByteArray();&lt;/div&gt;&lt;div class="p1"&gt;&lt;/div&gt;&lt;div class="p1"&gt;var filestream:FileStream &lt;span class="s1"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;new&lt;/span&gt; FileStream();&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="s2"&gt;try&lt;/span&gt;{&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;filestream&lt;span class="s1"&gt;.&lt;/span&gt;open(fl&lt;span class="s1"&gt;,&lt;/span&gt; FileMode&lt;span class="s1"&gt;.&lt;/span&gt;READ);&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;filestream&lt;span class="s1"&gt;.&lt;/span&gt;readBytes(bytes&lt;span class="s1"&gt;,&lt;/span&gt; 0&lt;span class="s1"&gt;,&lt;/span&gt; filestream&lt;span class="s1"&gt;.&lt;/span&gt;bytesAvailable);&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;filestream&lt;span class="s1"&gt;.&lt;/span&gt;close();&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;loader &lt;span class="s1"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;new&lt;/span&gt; Loader();&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;loader&lt;span class="s1"&gt;.&lt;/span&gt;contentLoaderInfo&lt;span class="s1"&gt;.&lt;/span&gt;addEventListener(Event&lt;span class="s1"&gt;.&lt;/span&gt;COMPLETE&lt;span class="s1"&gt;,&lt;/span&gt; showPic);&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;loader&lt;span class="s1"&gt;.&lt;/span&gt;contentLoaderInfo&lt;span class="s1"&gt;.&lt;/span&gt;addEventListener(IOErrorEvent&lt;span class="s1"&gt;.&lt;/span&gt;IO_ERROR&lt;span class="s1"&gt;,&lt;/span&gt; onError);&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;loader&lt;span class="s1"&gt;.&lt;/span&gt;loadBytes(bytes);&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;}&lt;span class="s2"&gt;catch&lt;/span&gt; (e){&lt;/div&gt;&lt;div class="p2"&gt;&lt;span class="s3"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;trace(&lt;/span&gt;"xml badly formed"&lt;span class="s3"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and in my showPic method:&lt;br /&gt;&lt;br /&gt;&lt;div class="p1"&gt;loader&lt;span class="s1"&gt;.&lt;/span&gt;contentLoaderInfo&lt;span class="s1"&gt;.&lt;/span&gt;removeEventListener(Event&lt;span class="s1"&gt;.&lt;/span&gt;COMPLETE&lt;span class="s1"&gt;,&lt;/span&gt; showPic);&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;var bitmapData:BitmapData &lt;span class="s1"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;new&lt;/span&gt; BitmapData(loader&lt;span class="s1"&gt;.&lt;/span&gt;content&lt;span class="s1"&gt;.&lt;/span&gt;width&lt;span class="s1"&gt;,&lt;/span&gt;loader&lt;span class="s1"&gt;.&lt;/span&gt;content&lt;span class="s1"&gt;.&lt;/span&gt;height&lt;span class="s1"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;true&lt;/span&gt;&lt;span class="s1"&gt;,&lt;/span&gt; 0x000000);&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;bitmapData&lt;span class="s1"&gt;.&lt;/span&gt;draw(loader&lt;span class="s1"&gt;.&lt;/span&gt;content&lt;span class="s1"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;new&lt;/span&gt; Matrix()&lt;span class="s1"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;null&lt;/span&gt;&lt;span class="s1"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;null&lt;/span&gt;&lt;span class="s1"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;null&lt;/span&gt;&lt;span class="s1"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;true&lt;/span&gt;);&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;img&lt;span class="s1"&gt;.&lt;/span&gt;source &lt;span class="s1"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;new&lt;/span&gt; Bitmap(bitmapData);&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Honestly, painful, but it gets the job done. &amp;nbsp;Now to load audio dynamically from saved files is another story for another post:)&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-2537577884267513456?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/2537577884267513456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/10/loading-images-from-applicationstoraged.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2537577884267513456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2537577884267513456'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/10/loading-images-from-applicationstoraged.html' title='Loading images from applicationStorageDirectory in Flex Mobile'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-2299751784432637562</id><published>2011-05-10T11:14:00.000-07:00</published><updated>2011-05-10T11:14:50.293-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex 4'/><category scheme='http://www.blogger.com/atom/ns#' term='datechooser'/><category scheme='http://www.blogger.com/atom/ns#' term='skinning'/><category scheme='http://www.blogger.com/atom/ns#' term='flashbuilder 4'/><category scheme='http://www.blogger.com/atom/ns#' term='datefield'/><category scheme='http://www.blogger.com/atom/ns#' term='mx skin'/><title type='text'>Datefields before Flex 4.5</title><content type='html'>So I wanted to take advantage of the custom skinning I had already done for a datechooser, and apply that to my new datefield without making a copy of all the skin classes. &amp;nbsp;Turns out, this is relatively easy, if you know what to look for. &amp;nbsp;Code below:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Extend datefield&lt;/li&gt;&lt;li&gt;set the dropdownFactory in the constructor to an IFactory var&lt;/li&gt;&lt;li&gt;then in css, set your custom datefielddatechooser's settings (which may be identical or different to your own datechooser custom skins)&lt;/li&gt;&lt;li&gt;and finally, in css (or wherever else you set your styles), for the extended datefield, set the dateChooserStyleName to null...i.e. ClassReference(null)&lt;/li&gt;&lt;/ol&gt;You do these steps, and you'll have your custom skins show up on the drop down of the datefield...a PITA and Flex 4.0/4.1 problem, so maybe it's no longer mx in 4.5 (but I can't find it anywhere in spark, so maybe it's still stuck in MX hell?). &amp;nbsp;Anyways, as promised, here are some code examples, if my sytnaxhighlighter doesn't eat them.&lt;br /&gt;&lt;br /&gt;DateFieldBase.as&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: as3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;&lt;br /&gt;package com.lordB8r.view.component.controls.datefield{&lt;br /&gt;&lt;br /&gt;import flash.events.Event;&lt;br /&gt;import mx.controls.DateField;&lt;br /&gt;import mx.core.ClassFactory;&lt;br /&gt;import mx.core.IFactory;&lt;br /&gt;&lt;br /&gt;public class DateFieldBase extends DateField{&lt;br /&gt;private&amp;nbsp;_dateChooser:IFactory = new ClassFactory(DateFieldDateChooserBase);&lt;br /&gt;&lt;br /&gt;public function DateFieldBase(){&lt;br /&gt;super();&lt;br /&gt;this.dropdownFactory = _dateChooser;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br/&gt;DateFieldDateChooserBase.as:&lt;pre class="brush: as3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;package view.component.datefield.datechooser{&lt;br /&gt; import mx.controls.DateChooser;&lt;br /&gt; &lt;br /&gt; import view.component.datechooser.skins.CommonsDateChooserNextMonthSkin;&lt;br /&gt; import view.component.datechooser.skins.CommonsDateChooserPrevMonthSkin;&lt;br /&gt; import view.component.datechooser.skins.CommonsDateChooserRollOverIndicatorSkin;&lt;br /&gt; import view.component.datechooser.skins.CommonsDateChooserSelectionIndicatorSkin;&lt;br /&gt; import view.component.datechooser.skins.CommonsDateChooserTodayIndicatorSkin;&lt;br /&gt; &lt;br /&gt; [Style(name="highlightFillColors",  type="Array", arrayType="uint")]&lt;br /&gt;&lt;br /&gt; public class DateFieldDateChooserBase extends DateChooser{&lt;br /&gt;  public function DateFieldDateChooserBase(){&lt;br /&gt;   super();&lt;br /&gt;   setStyle("nextMonthSkin",    nextMonthSkin);&lt;br /&gt;   setStyle("prevMonthSkin",    prevMonthSkin);&lt;br /&gt;   setStyle("rollOverIndicatorSkin",  rollOverIndicatorSkin);&lt;br /&gt;   setStyle("selectionIndicatorSkin",  selectionIndicatorSkin);&lt;br /&gt;   setStyle("todayIndicatorSkin",   todayIndicatorSkin);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  protected function get nextMonthSkin():Class{&lt;br /&gt;   return CommonsDateChooserNextMonthSkin;&lt;br /&gt;  }&lt;br /&gt;  protected function get prevMonthSkin():Class{&lt;br /&gt;   return CommonsDateChooserPrevMonthSkin;&lt;br /&gt;  }&lt;br /&gt;  protected function get rollOverIndicatorSkin():Class{&lt;br /&gt;   return CommonsDateChooserRollOverIndicatorSkin;&lt;br /&gt;  }&lt;br /&gt;  protected function get selectionIndicatorSkin():Class{&lt;br /&gt;   return CommonsDateChooserSelectionIndicatorSkin;&lt;br /&gt;  }&lt;br /&gt;  protected function get todayIndicatorSkin():Class{&lt;br /&gt;   return CommonsDateChooserTodayIndicatorSkin;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br/&gt;CSS:&lt;br/&gt;&lt;pre class="brush: as3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;datefield|DateFieldBase{&lt;br /&gt;date-chooser-style-name: ClassReference(null);&lt;br /&gt;}&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;datechooser|DateFieldDateChooserBase{&lt;br /&gt;headerColors: #e2e6eb,  #f4f5f7; &lt;br /&gt;todayColor: #818181;&lt;br /&gt;rollOverColor: #b2e1ff;&lt;br /&gt;selectionColor: #7fceff;&lt;br /&gt;color:   #373830;&lt;br /&gt;borderColor:  #b7babc;&lt;br /&gt;headerStyleName:"mydateChooserHeaderStyle";   &lt;br /&gt;weekDayStyleName:"mydateChooserWeekDayStyle";   &lt;br /&gt;todayStyleName:"mydateChooserTodayStyle";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.mydateChooserHeaderStyle {&lt;br /&gt;color:         #373830;&lt;br /&gt;font-weight:      bold;&lt;br /&gt;}&lt;br /&gt;.mydateChooserWeekDayStyle {&lt;br /&gt;color:         #373830;&lt;br /&gt;font-weight:      bold;&lt;br /&gt;}&lt;br /&gt;.mydateChooserTodayStyle {&lt;br /&gt;color:         #ffffff;&lt;br /&gt;fontWeight:       normal;&lt;br /&gt;fontStyle:        normal;&lt;br /&gt;textDecoration:      none;&lt;br /&gt;border-visible:      false;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;DateChooser&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-2299751784432637562?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/2299751784432637562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/05/datefields-before-flex-45.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2299751784432637562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2299751784432637562'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/05/datefields-before-flex-45.html' title='Datefields before Flex 4.5'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-2370376119468700755</id><published>2011-05-09T21:28:00.000-07:00</published><updated>2011-05-09T21:28:16.529-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex 4'/><category scheme='http://www.blogger.com/atom/ns#' term='skinning'/><category scheme='http://www.blogger.com/atom/ns#' term='halo effect'/><category scheme='http://www.blogger.com/atom/ns#' term='borders'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash Builder'/><category scheme='http://www.blogger.com/atom/ns#' term='controls'/><title type='text'>Adding Rollover/rollout halos to Flex 4 skins</title><content type='html'>&lt;style type="text/css"&gt;p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 16.0px 'Courier New'}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 11.0px Monaco}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 11.0px Monaco; color: #1355f5}p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 16.0px 'Courier New'; color: #1355f5}p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 12.0px Times}li.li1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times}span.s1 {text-decoration: underline ; color: #1636ee}span.s2 {color: #1355f5}span.s3 {color: #3ba77d}span.s4 {color: #78abd2}span.s5 {color: #000000}span.Apple-tab-span {white-space:pre}ol.ol1 {list-style-type: decimal}&lt;/style&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;style type="text/css"&gt;p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 16.0px 'Courier New'}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 11.0px Monaco}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 11.0px Monaco; color: #1355f5}p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 16.0px 'Courier New'; color: #1355f5}p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 12.0px Times}li.li1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times}span.s1 {text-decoration: underline ; color: #1636ee}span.s2 {color: #1355f5}span.s3 {color: #3ba77d}span.s4 {color: #78abd2}span.s5 {color: #000000}span.Apple-tab-span {white-space:pre}ol.ol1 {list-style-type: decimal}&lt;/style&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;style type="text/css"&gt;p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 16.0px 'Courier New'}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 11.0px Monaco}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 11.0px Monaco; color: #1355f5}p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 16.0px 'Courier New'; color: #1355f5}p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 12.0px Times}li.li1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times}span.s1 {text-decoration: underline ; color: #1636ee}span.s2 {color: #1355f5}span.s3 {color: #3ba77d}span.s4 {color: #78abd2}span.s5 {color: #000000}span.Apple-tab-span {white-space:pre}ol.ol1 {list-style-type: decimal}&lt;/style&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;style type="text/css"&gt;p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 16.0px 'Courier New'}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 11.0px Monaco}p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 11.0px Monaco; color: #1355f5}p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 16.0px 'Courier New'; color: #1355f5}p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #1355f5}p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 17.0px; font: 12.0px Times}li.li1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times}span.s1 {text-decoration: underline ; color: #1636ee}span.s2 {color: #1355f5}span.s3 {color: #3ba77d}span.s4 {color: #78abd2}span.s5 {color: #000000}span.Apple-tab-span {white-space:pre}ol.ol1 {list-style-type: decimal}&lt;/style&gt;&lt;br /&gt;&lt;div class="p1"&gt;So in my current project, I'm working on skinning several controls in Flex 4. One of the issues that I'm coming across is the desire to have the rollover halo effect that used to be in Flex 3. I was getting css styles from the &lt;a href="http://examples.adobe.com/flex3/consulting/styleexplorer/Flex3StyleExplorer.html#"&gt;&lt;span class="s1"&gt;Flex Style Explorer&lt;/span&gt;&lt;/a&gt; developed several years ago by the Adobe Consulting team. &amp;nbsp;Now, don't get me wrong, that explorer has saved me many sleepless nights. However those styles no longer apply in Flex 4. &amp;nbsp;The main reason is that some components no longer extend from button that used to normally extend from button.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;ButtonBase.as is fascinating, and a great place to read up and understand the most basic principles of skinning and the skin UIComponent that is attached to the Button. &amp;nbsp;Flex 4 is wonderful, and I really, really, really enjoy the maintainability of skinning components in this framework much more than the previous framework.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Anyways, the point of this post is to quickly show you how you can take advantage of skin parts, and pre-existing components, to extend your components and get effects that you thought were lost in the transition to Flex 4.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Anyways, if you haven't seen, I think (but can't remember right now) I did a post on passing CSS styles into Flex 4 skins via custom components. &amp;nbsp;Regardless, you can easily add rollover effects to standard components with a few steps.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol class="ol1"&gt;&lt;li class="li1"&gt;Create a new component that extends skinnableComponent&lt;/li&gt;&lt;/ol&gt;&lt;div class="p3"&gt;&lt;/div&gt;&lt;pre class="brush: actionscript3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;span class="s2"&gt;public&lt;/span&gt; &lt;span class="s3"&gt;class&lt;/span&gt; ComboBoxBase &lt;span class="s2"&gt;extends&lt;/span&gt; SkinnableComponent{&lt;/div&gt;&lt;br /&gt;&lt;div class="p3"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;In that component, add a skinPart. &amp;nbsp;For more information about skin parts, see Ryan Stewarts quick blog about it &lt;a href="http://blog.digitalbackcountry.com/2009/07/building-custom-components-in-flex-4-skinparts/"&gt;&lt;span class="s1"&gt;here&lt;/span&gt;&lt;/a&gt;. &amp;nbsp;That got me going further&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p3"&gt;&lt;/div&gt;&lt;pre class="brush: actionscript3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;[&lt;span class="s2"&gt;SkinPart&lt;/span&gt;(required=&lt;span class="s3"&gt;"true"&lt;/span&gt;)]&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;public&lt;/span&gt; &lt;span class="s4"&gt;var&lt;/span&gt; cbo:ComboBox;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="p1"&gt;Create a new skin that extends from skinnableComponent&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p3"&gt;&lt;/div&gt;&lt;pre class="brush: actionscript3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;span class="s2"&gt;&amp;lt;s:Skin&lt;/span&gt;&lt;span class="s3"&gt; xmlns:fx="&lt;/span&gt;http://ns.adobe.com/mxml/2009&lt;span class="s3"&gt;"&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;span class="s3"&gt;xmlns:s="&lt;/span&gt;library://ns.adobe.com/flex/spark&lt;span class="s3"&gt;"&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;span class="s3"&gt;xmlns:mx="&lt;/span&gt;library://ns.adobe.com/flex/mx&lt;span class="s3"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&amp;lt;!-- host component --&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p3"&gt;&lt;br /&gt;&amp;lt;fx:Metadata&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;span class="s3"&gt;[&lt;/span&gt;&lt;span class="s4"&gt;HostComponent&lt;/span&gt;&lt;span class="s3"&gt;(&lt;/span&gt;"spark.components.supportClasses.SkinnableComponent"&lt;span class="s3"&gt;)]&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p3"&gt;&lt;br /&gt;&amp;lt;/fx:Metadata&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="p1"&gt;Add the states you want (mine were hover, hoverNormal, normal)&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p3"&gt;&lt;/div&gt;&lt;pre class="brush: actionscript3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&amp;lt;s:states&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p6"&gt;&lt;br /&gt;&amp;lt;s:State&lt;span class="s5"&gt; name="&lt;/span&gt;&lt;span class="s3"&gt;normal&lt;/span&gt;&lt;span class="s5"&gt;"&lt;/span&gt;/&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p6"&gt;&lt;br /&gt;&amp;lt;s:State&lt;span class="s5"&gt; name="&lt;/span&gt;&lt;span class="s3"&gt;hover&lt;/span&gt;&lt;span class="s5"&gt;"&lt;/span&gt;/&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p7"&gt;&lt;br /&gt;&amp;lt;s:State&lt;span class="s4"&gt; name="&lt;/span&gt;&lt;span class="s5"&gt;hoverNormal&lt;/span&gt;&lt;span class="s4"&gt;"&lt;/span&gt;/&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&amp;lt;/s:states&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="p1"&gt;Add to the skin the control you want to have a halo around&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p3"&gt;&lt;/div&gt;&lt;pre class="brush: actionscript3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;&amp;lt;s:ComboBox&lt;/span&gt; id="&lt;span class="s3"&gt;cbo&lt;/span&gt;" width="&lt;span class="s3"&gt;100%&lt;/span&gt;" height="&lt;span class="s3"&gt;100%&lt;/span&gt;"&lt;span class="s2"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;notice that the combobox here has the exact same ID as in the component class (that is important!)&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Add a rect before (or after - depending on the effect you want) with a solidStroke.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p3"&gt;&lt;/div&gt;&lt;pre class="brush: actionscript3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;span class="s2"&gt;&amp;lt;s:Rect&lt;/span&gt; left="&lt;span class="s3"&gt;-1&lt;/span&gt;" right="&lt;span class="s3"&gt;-1&lt;/span&gt;" top="&lt;span class="s3"&gt;-1&lt;/span&gt;" bottom="&lt;span class="s3"&gt;-1&lt;/span&gt;" radiusX="&lt;span class="s3"&gt;3&lt;/span&gt;" &lt;span class="s2"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&amp;lt;s:stroke&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&lt;span class="s2"&gt;&amp;lt;s:SolidColorStroke&lt;/span&gt; color="&lt;span class="s3"&gt;0x0000ff&lt;/span&gt;" alpha.normal="&lt;span class="s3"&gt;0&lt;/span&gt;" alpha="&lt;span class="s3"&gt;1&lt;/span&gt;"&lt;span class="s2"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&amp;lt;/s:stroke&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p4"&gt;&lt;br /&gt;&amp;lt;/s:Rect&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;I put my rectangle afterwards, and you can specify radiusX and many other items using script or CSS.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;In the custom component, override the partAdded and add some eventlisteners for mouseEvent.ROLL_OVER/ROLL_OUT. (and don't forget to remove them, otherwise some other person might get angry).&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p3"&gt;&lt;/div&gt;&lt;pre class="brush: actionscript3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;override&lt;/span&gt; &lt;span class="s2"&gt;protected&lt;/span&gt; &lt;span class="s3"&gt;function&lt;/span&gt; partAdded(partName:String, instance:Object):&lt;span class="s2"&gt;void&lt;/span&gt;{&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;super&lt;/span&gt;.partAdded(partName, instance);&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;if&lt;/span&gt;(instance == cbo){&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;cbo.addEventListener(MouseEvent.ROLL_OUT, haloEffect);&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;cbo.addEventListener(MouseEvent.ROLL_OVER, &lt;span class="Apple-tab-span"&gt; &lt;/span&gt;haloEffect);&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;}&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;override&lt;/span&gt; &lt;span class="s2"&gt;protected&lt;/span&gt; &lt;span class="s3"&gt;function&lt;/span&gt; partRemoved(partName:String, instance:Object):&lt;span class="s2"&gt;void&lt;/span&gt;{&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;super&lt;/span&gt;.partRemoved(partName, instance);&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;if&lt;/span&gt;(instance == cbo){&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;cbo.removeEventListener(MouseEvent.ROLL_OUT, &lt;span class="Apple-tab-span"&gt; &lt;/span&gt;haloEffect);&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;cbo.removeEventListener(MouseEvent.ROLL_OVER, &lt;span class="Apple-tab-span"&gt; &lt;/span&gt;haloEffect);&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;In your event handler, change the skin.currentState to the new state that you setup in your skin.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p3"&gt;&lt;/div&gt;&lt;pre class="brush: actionscript3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;protected&lt;/span&gt; &lt;span class="s3"&gt;function&lt;/span&gt; haloEffect(me:MouseEvent):&lt;span class="s2"&gt;void&lt;/span&gt;{&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;if&lt;/span&gt;(me.type == MouseEvent.ROLL_OVER){&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;//stateChanged('normal','hoverNormal',false);&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;this&lt;/span&gt;.skin.currentState = 'hoverNormal';&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div class="p8"&gt;&lt;br /&gt;else&lt;span class="s5"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;//stateChanged('hoverNormal', 'normal', false);&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;this&lt;/span&gt;.skin.currentState = 'normal'&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div class="p9"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p9"&gt;And finally, don't forget to add your skin to your component via setStyle('skinClass', skinClass):&lt;/div&gt;&lt;div class="p3"&gt;&lt;/div&gt;&lt;pre class="brush: actionscript3; highlight: [5, 15]; html-script: true"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;public&lt;/span&gt; &lt;span class="s3"&gt;function&lt;/span&gt; ComboBoxBase(){&lt;/div&gt;&lt;br /&gt;&lt;div class="p8"&gt;&lt;br /&gt;super&lt;span class="s5"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;setStyle(&lt;span class="s4"&gt;'skinClass'&lt;/span&gt;, skinClass);&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;protected&lt;/span&gt; &lt;span class="s3"&gt;function&lt;/span&gt; &lt;span class="s2"&gt;get&lt;/span&gt; skinClass():Class{&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;&lt;span class="s2"&gt;return&lt;/span&gt; ComboboxSkin;&lt;/div&gt;&lt;br /&gt;&lt;div class="p5"&gt;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div class="p3"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p3"&gt;And there you have it, a fully haloed Flex 4 component, that you dind't have to do a lot to get...if enough folks want to see the code files, I'll try to find a way to get Blogger to let me post those as well.&amp;nbsp; Hope this helps someone else&lt;br /&gt;&lt;br /&gt;(ps - i apologize for any code syntaxHighlighting formatting problems...I've spent too much time trying to figure out how to do this right now, but if it is really causing someone headaches, please let me know, and I'll spend some more time cleaning it up. &amp;nbsp;Thanks!)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-2370376119468700755?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/2370376119468700755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/05/adding-rolloverrollout-halos-to-flex-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2370376119468700755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2370376119468700755'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/05/adding-rolloverrollout-halos-to-flex-4.html' title='Adding Rollover/rollout halos to Flex 4 skins'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-6002877229451200924</id><published>2011-04-24T13:21:00.000-07:00</published><updated>2011-04-24T13:21:06.753-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex 4.1 Tabbar tabnavigator skin css mx spark'/><title type='text'>Custom skinning mx tabnavigator tabbars in Flex 4.1 (pre-4.5 mx style)</title><content type='html'>For anyone who doesn't care about my explanation and just wants code, please see the bottom of the post.&lt;br /&gt;&lt;br /&gt;The annoying part about this post is that it probably won't matter for anyone using Flex 4.5 or later, but if you are using Flex SDK 4.0 or 4.1, this might just help you. &amp;nbsp;I've been working on skinning a tab navigator, and in the process, kept running into roadblocks, especially when I wanted the skin to respect a new state. &amp;nbsp;Long story short, skinstates in MX components were not behaving correctly, and skinning a Flex 3 component with a flex 4 mxml skin, expecting states to help me change views, wasn't working. &lt;br /&gt;&lt;br /&gt;I tried to invalidateSkinState, but that's not a feature of Flex 3, and I tried to overwrite the Tabbar and Tab, but that become a bloody mess because of all the needed inheritance. &amp;nbsp;The best answer to solve the riddle came &lt;a href="http://forums.adobe.com/message/2956325"&gt;here&lt;/a&gt; from&amp;nbsp;&lt;span class="Apple-style-span" style="color: #777777; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 12px;"&gt;&lt;a class="jiveTT-hover-user jive-username-link" href="http://forums.adobe.com/people/Ivan%20Latysh" id="jive-X6xE6HfCWJ8Y305s" style="color: #555555; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;Ivan Latysh&lt;/a&gt;,&lt;/span&gt;&amp;nbsp;who succinctly says, "doc's are lying". &amp;nbsp;Hellz yes they are. &amp;nbsp;The docs only tell me to use the css (it doesn't mention that the framework actually comes with two). &amp;nbsp;The biggest problem I was having was just getting the skinning rectangles to respect their selected/non-selected states. &amp;nbsp;They wouldn't. &amp;nbsp;The couldn't. because when I traced down to it, tab navigator doesn't fire off a StateChangeEvent for anything other than "up" (*disclaimer: myriad reasons might be at fault, including my own customizations of my setup, but for sake of argument, I couldn't skin a tabbar as part of a tabnavigator [separate components wouldn't work because by the time I was brought in on the project, the logic was heavily embedded for the tab navigator]).&lt;br /&gt;&lt;br /&gt;Because I can't have the tabnavigator separated, I needed to figure out how to skin it appropriately to recognize the events and the actions. &amp;nbsp;Justin, aka Saturnboy has an amazing post on pushing component events into skins &lt;a href="http://saturnboy.com/2009/09/flex4-component-states-skin-states/"&gt;here&lt;/a&gt;. &amp;nbsp;So did &lt;a href="http://devgirl.org/2009/11/16/tabbed-navigation-in-flex-4/"&gt;WebDevGirl&lt;/a&gt; and &lt;a href="http://jameswhittaker.com/journal/skinning-flex-with-degrafa-and-fxg/"&gt;James Whitakker&lt;/a&gt;. &amp;nbsp;And &lt;a href="http://stackoverflow.com/questions/5399392/how-to-implement-this-pseudo-tabnavigation-ui-in-flex"&gt;this stackoverflow&lt;/a&gt; post helped, but still, I still find the right info. &amp;nbsp;The tabbar refused to accept anything for mouse over events, and the only thing I could eventually figure out was that the component wasn't applying state events to the tabbar.&lt;br /&gt;&lt;br /&gt;If this is the case, then it's a bug in 4.1.&lt;br /&gt;&lt;br /&gt;But here's my solution, because I wanted to set everything in my library to respect the classes, and then styles could be overwritten in later CSS files (this tabnavigator was actually part of my core library, and I needed it to have the default skins to be adjusted by later users.&lt;br /&gt;&lt;br /&gt;&lt;title&gt;&lt;/title&gt;&lt;style type="text/css"&gt;p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #bb0000}span.s1 {color: #4900ad}span.s2 {color: #000000}span.s3 {color: #4038da}span.Apple-tab-span {white-space:pre}&lt;/style&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;up-skin&lt;/span&gt;&lt;span class="s2"&gt;:&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s3"&gt;ClassReference&lt;/span&gt;&lt;span class="s2"&gt;(&lt;/span&gt;"lordB8r.view.component.navigableContainer.skin.CustomTabNavigatorSkin"&lt;span class="s2"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s2"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s1"&gt;over-skin&lt;/span&gt;&lt;span class="s2"&gt;:&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s3"&gt;ClassReference&lt;/span&gt;&lt;span class="s2"&gt;(&lt;/span&gt;"lordB8r.view.component.navigableContainer.skin.CustomTabNavigatorSkin"&lt;span class="s2"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s2"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s1"&gt;down-skin&lt;/span&gt;&lt;span class="s2"&gt;:&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s3"&gt;ClassReference&lt;/span&gt;&lt;span class="s2"&gt;(&lt;/span&gt;"lordB8r.view.component.navigableContainer.skin.CustomTabNavigatorSkin"&lt;span class="s2"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s2"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s1"&gt;selected-over-skin&lt;/span&gt;&lt;span class="s2"&gt;: &lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s3"&gt;ClassReference&lt;/span&gt;&lt;span class="s2"&gt;(&lt;/span&gt;"lordB8r.view.component.navigableContainer.skin.CustomTabNavigatorSkinSelectedTab"&lt;span class="s2"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s2"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s1"&gt;selected-down-skin&lt;/span&gt;&lt;span class="s2"&gt;: &lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s3"&gt;ClassReference&lt;/span&gt;&lt;span class="s2"&gt;(&lt;/span&gt;"lordB8r.view.component.navigableContainer.skin.CustomTabNavigatorSkinSelectedTab"&lt;span class="s2"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s2"&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s1"&gt;selected-up-skin&lt;/span&gt;&lt;span class="s2"&gt;: &amp;nbsp; &lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="s3"&gt;ClassReference&lt;/span&gt;&lt;span class="s2"&gt;(&lt;/span&gt;"lordB8r.view.component.navigableContainer.skin.CustomTabNavigatorSkinSelectedTab"&lt;span class="s2"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s2"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s2"&gt;However, if I want the original skins from the mx component, and have those skins and their faculties recognized, use this to override the default skins that I was trying to set styles to:&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s2"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s2"&gt;&lt;title&gt;&lt;/title&gt;&lt;style type="text/css"&gt;p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #a9a9a9}span.Apple-tab-span {white-space:pre}&lt;/style&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;skin:&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;ClassReference("mx.skins.halo.TabSkin");&lt;/div&gt;&lt;div class="p1"&gt;border-skin:&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;ClassReference("mx.skins.halo.HaloBorder");&lt;/div&gt;&lt;div class="p1"&gt;border-side:&lt;span class="Apple-tab-span"&gt;	&lt;/span&gt;"left, top, bottom";&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;The main purpose of this blog post is to point out that even though the styling that I wanted to use in Flex 4.1 on an MX component should have allowed me to create a custom skin (albeit in AS3 or MXML), and apply to the class, I couldn't do it because the component was reverting everything back to 1 class and not passing state events into the component (the only event I could capture was "UP", which was not very helpful.&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;Anyways, I do believe the tabnavigator is now a Spark component, and this headhache should evaporate with Flex 4.5, however, if you are stuck on a 4.0 or 4.1 project, and need to apply skins to the tabbar, this should at least show you that the skins themselves aren't very good for listening for events, so either override them completely, or use the original skin, and use original stylings for mx components (and just override in the css - apparently doing so at the component creation point doesn't seem to help ;p )&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-6002877229451200924?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/6002877229451200924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/04/custom-skinning-mx-tabnavigator-tabbars.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6002877229451200924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6002877229451200924'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/04/custom-skinning-mx-tabnavigator-tabbars.html' title='Custom skinning mx tabnavigator tabbars in Flex 4.1 (pre-4.5 mx style)'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-4751647318440474942</id><published>2011-02-21T19:17:00.000-08:00</published><updated>2011-10-27T20:37:27.418-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='simple'/><category scheme='http://www.blogger.com/atom/ns#' term='basic'/><category scheme='http://www.blogger.com/atom/ns#' term='AS3'/><category scheme='http://www.blogger.com/atom/ns#' term='fizzbuzz'/><title type='text'>FizzBuzz in AS3</title><content type='html'>&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I'm not sure why this didn't seem hard, but in 10 minutes I came up w/ this solution to&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/FizzBuzz"&gt;fizzBuzz&lt;/a&gt;:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="s1"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span class="s2"&gt;function&lt;/span&gt;&amp;nbsp;fizzBuzz():&lt;span class="s1"&gt;void&lt;/span&gt;{&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="s1"&gt;&amp;nbsp;&amp;nbsp;for&lt;/span&gt;&amp;nbsp;(&lt;span class="s3"&gt;var&lt;/span&gt;&amp;nbsp;i:int = 1; i &amp;lt;= 100; i++){&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="s3"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var&lt;/span&gt;&amp;nbsp;str:String = String(i) +&amp;nbsp;&lt;span class="s4"&gt;" "&lt;/span&gt;&amp;nbsp;;&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if&lt;/span&gt;(i%3==0){&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;str +=&amp;nbsp;&lt;span class="s4"&gt;"Fizz"&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="s1"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if&lt;/span&gt;(i%5==0){&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;str +=&amp;nbsp;&lt;span class="s4"&gt;"Buzz"&lt;/span&gt;;&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="s5"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;trace&lt;/span&gt;(str);&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;}&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Was there an easier way to do this? &amp;nbsp;Could I refactor this down further in AS3? &amp;nbsp;I tried overcomplicating it for reuse, but then said, "why?" &amp;nbsp;I just need it to spit out Fizz, Buzz or FizzBuzz, and the value of i...so that's it for now...Go AS3, modulo, and procrastineering...&lt;br /&gt;&lt;br /&gt;edit: After reviewing the code, I decided to expand it (yes, I wasted another 10 minutes on this), but now I can pass in to fizzBuzz any values so that I don't have to have my modulo hardcoded. &amp;nbsp;Here it is, eat your heart out :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;public&lt;/span&gt; &lt;span class="s2"&gt;function&lt;/span&gt; fizzBuzz(starter:int&lt;span class="s3"&gt;,&lt;/span&gt; ender:int&lt;span class="s3"&gt;,&lt;/span&gt; fizzer:int&lt;span class="s3"&gt;,&lt;/span&gt; buzzer:int):&lt;span class="s1"&gt;void&lt;/span&gt;{&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="s1"&gt;for&lt;/span&gt;(var i:int &lt;span class="s3"&gt;=&lt;/span&gt; starter; i&lt;span class="s3"&gt;&amp;lt;=&lt;/span&gt;ender; i&lt;span class="s3"&gt;++&lt;/span&gt;){&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;var str:String &lt;span class="s3"&gt;=&lt;/span&gt; i &lt;span class="s3"&gt;+&lt;/span&gt; &lt;span class="s3"&gt;" "&lt;/span&gt;;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="s1"&gt;if&lt;/span&gt;(i &lt;span class="s3"&gt;%&lt;/span&gt; fizzer &lt;span class="s3"&gt;==&lt;/span&gt; 0){ str &lt;span class="s3"&gt;+=&lt;/span&gt; &lt;span class="s3"&gt;"Fizz"&lt;/span&gt;;}&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="s1"&gt;if&lt;/span&gt;(i &lt;span class="s3"&gt;%&lt;/span&gt; buzzer &lt;span class="s3"&gt;==&lt;/span&gt; 0){ str &lt;span class="s3"&gt;+=&lt;/span&gt; &lt;span class="s3"&gt;"Buzz"&lt;/span&gt;;}&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;trace(str);&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-4751647318440474942?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/4751647318440474942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/02/fizzbuzz-in-as3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/4751647318440474942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/4751647318440474942'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/02/fizzbuzz-in-as3.html' title='FizzBuzz in AS3'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-9135360530012099269</id><published>2011-02-02T08:10:00.000-08:00</published><updated>2011-02-02T08:10:31.865-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='AIR'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash Builder'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><category scheme='http://www.blogger.com/atom/ns#' term='iOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Hacking an iOS app from an existing Flex app</title><content type='html'>&lt;br /&gt;To make an iPhone application work from an existing Flex/AS3 app, you have to jump through a few hoops. &amp;nbsp;The first and foremost are getting a few certificates, png's and licenses out of the way. &amp;nbsp;Before going any further, you need the following:&lt;br /&gt;&lt;br /&gt;1) Provisioning profile&lt;br /&gt;2) PKCS12&lt;br /&gt;3) icons&lt;br /&gt;4) an app (not necessary before you start, but indeed necessary for the end result)&lt;br /&gt;5) PFI (Packager For IPhone)&lt;br /&gt;6) AIR SDK (2.0.2 or later)&lt;br /&gt;&lt;br /&gt;Ok, the provisioning profile is the hardest bastard to deal with. &amp;nbsp;If you are like me, and just want to put together a proof of concept, you don't (nor shouldn't) have to pay a company $99 just to try it out. &amp;nbsp;However that's not how it works for iOS applications. &amp;nbsp;Apple wants your money any way they can get it, and even if you want to write just a simple app, they'll try and get it however they may. &amp;nbsp;After asking Lord Google the best way to get past paying money, I found this one link with a hacked provisioning profile...success!!! &amp;nbsp;Actually, I need to learn the mechanics of this profile to understand what's really in there. &amp;nbsp;But for my POC, I just grabbed one from &lt;a href="http://www.mediafire.com/?dntmntnzm3r"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Next, I needed a PKCS12 (or more short-handedly known as a .p12) certficate. &amp;nbsp;This wasn't easy because I've never created one before. &amp;nbsp;After much searching and trying, I came across Flat Mountain's awesome posts on how to do it. &amp;nbsp;Always looking to improve my shell skills, I followed &lt;a href="http://www.flatmtn.com/article/creating-pkcs12-certificates"&gt;his post&lt;/a&gt; and finally got some certs built. &amp;nbsp;I could've used &lt;a href="http://developer.apple.com/library/mac/#documentation/darwin/reference/manpages/man1/pkcs12.1ssl.html"&gt;Apple's developer site&lt;/a&gt;, but that seemed to obtuse. &amp;nbsp;and &lt;a href="http://docs.info.apple.com/article.html?path=Mac/10.4/en/mh2139.html"&gt;this is for OSX.4&lt;/a&gt;, so it might not be relevant, but it's also a start. &amp;nbsp;On a Mac you can even use Keychain Access, but I didn't go the "easy" route until Flex Builder started complaining that my cert wasn't a "code-signing" cert... &amp;nbsp;I spent another few minutes trying (However, now that I'd gone through the process of making the cert manually, I understood a lot more about what keychain access wanted to do). &amp;nbsp;In less than 3 minutes I had created a CA and a cert…but dangit! I couldn't export those as code signing certs (at least not right off the bat, even though I had created them as code signing certs). &amp;nbsp;About 2 minutes later, i figured I had to evaluate the cert. &amp;nbsp;I changed the viewing and evaluation to Code signing and voila! I could export the cert as a .p12! &amp;nbsp;WOOT! &lt;br /&gt;&lt;br /&gt;OK, fine, I should also post that exporting the final release will also give you the option of creating your own .p12 right there on the spot, but I felt like that is just way too easy to do, and you don't actually have a clue what's going on in the black magic voodoo of Flex Builder's sneaky background (maybe a post is required about how FB builds keys…but not right now).&lt;br /&gt;&lt;br /&gt;Armed with my cert and profile, I just needed a quick default icon, so I used some Photoshop (which isn't necessary, but can help), then Apple's Icon Composer (part of the xCode package: /Developer/Applications/Utilities/Icon Composer). &amp;nbsp;This guy's blog post helped, but I wasn't interested in paying for CandyBar, so I skipped &lt;a href="http://tutorialdog.com/how-to-create-icons-for-mac-os-x/"&gt;that step&lt;/a&gt;&amp;nbsp;. &amp;nbsp;It's also about 4 years old, so unless you're still running just Leopard or Tiger, and CS3 or CS4, then you have to use a little imagination.&lt;br /&gt;&lt;br /&gt;Ok, icons and certs down, now to getting my AIR app to work. &amp;nbsp;I used FB4's converter to change the project from Flex to AIR. &amp;nbsp;A few errors (read: Flex 3.5 SDK custom preloader doesn't like AIR applications because of the addedToStage event. &amp;nbsp;With a workaround in my custom preloader, I have a functioning AIR app that works on my desktop.)&lt;br /&gt;&lt;br /&gt;Now, command line is cool, but sometimes we just need functional. &amp;nbsp;I got the steps from Kevin Cantrell's post to start with, but I didn't like figuring out all the paths, tabbing through and hopefully not messing up the spelling of anything (I'm lazy, not a hipster). &amp;nbsp;Even after making it all, putting it into a text editor so I could copy and paste for later use seemed trite. &amp;nbsp;So I used FB's export tool with my custom signed certs to at least build my app's swf (it exports as a .air, but that's just code for .zip/.tar/.air/.whatever). &amp;nbsp;I un-tarred it to have the swf, but there's also a copy in my bin folder by default. &amp;nbsp;I also want to be lazy, so I used &lt;a href="http://www.ivanalvarez.com/2010/10/flex-4-in-ios-3"&gt;this post from Ivan&lt;/a&gt; to update the ant build process so I could remain lazy. &amp;nbsp;Now I have everything in place, so let's let it run, and tada!!!&lt;br /&gt;&lt;br /&gt;I've got a functioning Flex app converted from Flex 3.5 to iOS (with some hefty mods). and it runs! &amp;nbsp;Ok, it isn't native, but as a POC, it doesn't matter. &amp;nbsp;The point is the point. &lt;br /&gt;&lt;br /&gt;This was for me a POC as well as an aggregation of different user's experiences. &amp;nbsp;If you have any questions, please ping me or the other guys who put this together.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-9135360530012099269?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/9135360530012099269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/02/hacking-ios-app-from-existing-flex-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/9135360530012099269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/9135360530012099269'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/02/hacking-ios-app-from-existing-flex-app.html' title='Hacking an iOS app from an existing Flex app'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-627629786587028379</id><published>2011-02-01T17:50:00.000-08:00</published><updated>2011-02-02T18:07:41.622-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='catch'/><category scheme='http://www.blogger.com/atom/ns#' term='breakpoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='Glassfish'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><title type='text'>Debugging Flex and Java on Glassfish on OSX6</title><content type='html'>Just a short post about debugging apps. &amp;nbsp;If you are using OSX and Glassfish, if you want to debug a remote java application, you need to do the following on the glassfish (there are 2 ways to do this)&lt;br /&gt;&lt;br /&gt;The first is going through the admin screen -&amp;gt; application server -&amp;gt; JVM Settings -&amp;gt; JVM Options -&amp;gt; and add the following to JVM Option:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="bz_comment_text" style="font-family: monospace; font-size: medium; white-space: pre-wrap; width: 50em;"&gt;-XX:+UseParallelGC&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_IB4l2fjDZI8/TUoLmg7HKnI/AAAAAAAAACY/BEnLxWrzck8/s1600/Glassfish_debug.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="88" src="http://4.bp.blogspot.com/_IB4l2fjDZI8/TUoLmg7HKnI/AAAAAAAAACY/BEnLxWrzck8/s320/Glassfish_debug.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Save your options and you'll need to restart your server.&lt;br /&gt;&lt;br /&gt;Make sure you only add that here, otherwise your server won't start up correctly and you'll be forced to do what I learned the hard way (proceed to step two if you added it to the General tab's Debug Options)&lt;br /&gt;&lt;br /&gt;Open the following file:&lt;br /&gt;&lt;br /&gt;~/glassfish/domains/domain1/config/domain.xml&lt;br /&gt;&lt;br /&gt;Add a child &lt;jvm-options&gt; to the &lt;java-config&gt; with the same parameters:&lt;/java-config&gt;&lt;/jvm-options&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="bz_comment_text" style="font-family: monospace; font-size: medium; white-space: pre-wrap; width: 50em;"&gt;&lt;jvm-options&gt;-XX:+UseParallelGC&lt;/jvm-options&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_IB4l2fjDZI8/TUoNlBDceBI/AAAAAAAAACc/vJgZ02V2M9M/s1600/Glassfish_debug2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="115" src="http://1.bp.blogspot.com/_IB4l2fjDZI8/TUoNlBDceBI/AAAAAAAAACc/vJgZ02V2M9M/s320/Glassfish_debug2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Then restart your server and you're all set! &amp;nbsp;I hope this helps anyone else trying to get eclipse breakpoints to actually catch on debug mode using glassfish!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-627629786587028379?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/627629786587028379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/02/debugging-flex-and-java-on-glassfish-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/627629786587028379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/627629786587028379'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/02/debugging-flex-and-java-on-glassfish-on.html' title='Debugging Flex and Java on Glassfish on OSX6'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_IB4l2fjDZI8/TUoLmg7HKnI/AAAAAAAAACY/BEnLxWrzck8/s72-c/Glassfish_debug.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-6101701299786216381</id><published>2011-01-07T12:08:00.000-08:00</published><updated>2011-01-07T12:08:34.578-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Email'/><category scheme='http://www.blogger.com/atom/ns#' term='AS3'/><title type='text'>Sending an email from your Flex app just got easier (short post)</title><content type='html'>I want to send an email from my Flex app. &amp;nbsp;Well, if I don't have a backend mailserver setup, and I want my user to send me a message about, say, the app's service crashing, the easiest way to do this is through URLRequest!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quick demonstration -&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) Create the url request:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;var u:URLRequest = new URLRequest("mailto:"+EMAIL_ADDRESS);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) Create a variable for the subject and body:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;var v:URLVariables = new URLVariables(); //interestingly, you can put all the variables into a string and pass that in, but here we're just going to append them as properties to the object&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) Assign those properties:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;v.subject = "Application crashed";&lt;/div&gt;&lt;div&gt;v.body = TEXT_OF_CRASH_MESSAGE;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4) Pass those variable properties into the URLRequest:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;u.data = v;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5) Navigate to the URL:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;navigateToURL(u, "_self"); //the _self is .js and not required&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is an easy way to pass any valuable info from your flex app into your user's default email program (Entourage/Outlook, Thunderbird, Mail, etc.)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-6101701299786216381?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/6101701299786216381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/01/sending-email-from-your-flex-app-just.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6101701299786216381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6101701299786216381'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/01/sending-email-from-your-flex-app-just.html' title='Sending an email from your Flex app just got easier (short post)'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-3009125337272265433</id><published>2011-01-06T07:31:00.000-08:00</published><updated>2011-01-06T07:31:14.708-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Error 2173'/><category scheme='http://www.blogger.com/atom/ns#' term='FlexUnit 4'/><category scheme='http://www.blogger.com/atom/ns#' term='AS3'/><title type='text'>Error #2173: Unable to read object in stream</title><content type='html'>&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I've been working on building up async tests (which I should have a different post for shortly), and came across this annoying error:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: red; font-size: x-small;"&gt;ArgumentError: Error #2173: Unable to read object in stream.&amp;nbsp; The class com.lordB8r.model.Control does not implement flash.utils.IExternalizable but is aliased to an externalizable class.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: red; font-size: x-small;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;at ObjectInput/readObject()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: red; font-size: x-small;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;at mx.collections::ArrayList/readExternal()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: red; font-size: x-small;"&gt;&lt;span class="Apple-tab-span"&gt;&lt;/span&gt;at mx.collections::ArrayCollection/readExternal()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Finding&amp;nbsp;&lt;a href="http://www.flashsecrets.com/2009/04/argumenterror-error-2173-unable-to-read.html#links"&gt;FlashSecret's comment&lt;/a&gt;&amp;nbsp;helped, but didn't get me all the way there. &amp;nbsp;While I could put the path inside an array, I wasn't assigning the return value to an array, or Control. &amp;nbsp;Instead, I needed to import a/the class(es) needed by IExternalizable in my test. &amp;nbsp;So, simply putting this in my test class made it work:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="s1" style="color: blue;"&gt;import&lt;/span&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: red;"&gt;com.lordB8r.model.Control;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Is this correct for testing? &amp;nbsp;I'm not sure, but it helped me get my async test to retrieve data from a Spring RESTful service. &amp;nbsp;Test passed because I got data, but only once I told my test what data type it should be expecting.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I've dealt with this when bootstrapping an application, also when requesting data back from the server. &amp;nbsp;Often times, my service class (or service recipient) doesn't know the type I just asked for, so I need to import it into that class.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-3009125337272265433?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/3009125337272265433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2011/01/error-2173-unable-to-read-object-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/3009125337272265433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/3009125337272265433'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2011/01/error-2173-unable-to-read-object-in.html' title='Error #2173: Unable to read object in stream'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-6757802063861003196</id><published>2010-12-21T09:42:00.000-08:00</published><updated>2010-12-21T09:42:29.782-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash Actionscript Flex IDE Curly cuddling cuddler'/><title type='text'>To Cuddle or not to Cuddle :} setting curly brace defaults in my IDE</title><content type='html'>After a short stint of not understanding what the heck people were moaning about on twitter (re @jesterxl's comments about cuddling), and thanks to him, I came across Grant Skinner's &lt;a href="http://gskinner.com/blog/archives/2008/11/curly_braces_to.html"&gt;post&lt;/a&gt; about curly braces. &lt;br /&gt;&lt;br /&gt;I am personally a cuddler. &amp;nbsp;I find the code easier to read, and I am of the school of thought that less lines of code is better. &amp;nbsp;Also, to me logic dictates that if you are starting a block of code, you would emphasize that by showing me on the line that you are declaring the opening of that code, that the code block begins with the curly. &amp;nbsp;In Ruby, there are no curly's for code blocks, so it doesn't bother me there.&lt;br /&gt;&lt;br /&gt;But what bothers me, and Grant mentioned it, is how Flashbuilder autogenerates non-cuddled code blocks. And he griped about it, asking that anyone who knows how to fix the problem please let him know. &amp;nbsp;Well, here's my quick fix, using Flashbuilder 4 on Eclipse 3.6 on OSX6.5:&lt;br /&gt;&lt;br /&gt;-&amp;gt; Preferences (cmd + ,) -&amp;gt; Flash Builder -&amp;gt; Editors -&amp;gt; Code Templates -&amp;gt; ActionScript&lt;br /&gt;&lt;br /&gt;For each of these classes, I manually updated the templates so that the curly braces all were at the end of the opening line for package, class and constructor, i.e.&lt;br /&gt;&lt;br /&gt;package com.lordB8r.controller{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public class TestClass{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public function TestClass():{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;and methods did the same thing:&lt;br /&gt;&lt;br /&gt;private function runTestClass():void{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;ahhh, breathe deeply, knowing that all auto-magically generated code in AS3 will now conform to my preferences.&lt;br /&gt;&lt;br /&gt;And yes, I can export these settings, in case I don't want to manually change all of them for each instance of Eclipse (and then reimport them).&lt;br /&gt;&lt;br /&gt;Now, I obviously am not smart enough to be the first person to have come up with this. &amp;nbsp;There is the following resources I found:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://insideria.com/2009/08/code-formatting-in-flash-build.html"&gt;InsideRia's article by Greg Owen&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/flexformatter/"&gt;FlexFormatter&lt;/a&gt;&lt;br /&gt;&lt;a href="http://active.tutsplus.com/articles/reviews/flash-builder-for-as3-developers/"&gt;ActiveTuts by Jesse Freeman&lt;/a&gt;&lt;br /&gt;and the best example so far is someone who actually made real templates of what they use in their workflow:&lt;br /&gt;&lt;a href="http://kachurovskiy.com/2010/buritto/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed:+kachurovskiy+(Maxim+Kachurovskiy)"&gt;FBB blogpost by Maxim Kachurovskiy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And you can quickly find your own by&amp;nbsp;using lord google.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-6757802063861003196?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/6757802063861003196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/12/to-cuddle-or-not-to-cuddle-setting.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6757802063861003196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6757802063861003196'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/12/to-cuddle-or-not-to-cuddle-setting.html' title='To Cuddle or not to Cuddle :} setting curly brace defaults in my IDE'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-7385970137394923674</id><published>2010-12-06T23:57:00.000-08:00</published><updated>2010-12-06T23:57:13.737-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex 4'/><category scheme='http://www.blogger.com/atom/ns#' term='swfloader'/><category scheme='http://www.blogger.com/atom/ns#' term='robotlegs'/><category scheme='http://www.blogger.com/atom/ns#' term='resizing'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='clipped'/><title type='text'>Resizing Dynamically Loaded swfs using swfloader</title><content type='html'>In my current project, I am using RobotLegs and a parent application to load in "modules". &amp;nbsp;However, I don't use modules, because frankly, I don't quite get why I should. &amp;nbsp;Instead, I have separate swfs that I can load, and pass information to them, if necessary. &amp;nbsp;The biggest frustration that I have is that when I resize the parent application, my child, which is a loaded swf, doesn't know it's stage has been resized, and thus doesn't resize itself. &amp;nbsp;To fix that, I tried a few different options, including resizing the loader, the system manager, the loaded application, the screen, everything!!!&lt;br /&gt;&lt;br /&gt;The problem I was running into is that my loaded swf was getting it's size clipped. &amp;nbsp;This was unacceptable.&lt;br /&gt;&lt;br /&gt;For example, if I loaded my swf into my app, if the window was sized at 700x400 (w x h), if I resized my window to something smaller, the controls inside the loaded swf would follow accordingly. However when I resized the window larger than 700x400, the controls would get clipped by an auto-assumed max size of the loaded swf's stage.&lt;br /&gt;&lt;br /&gt;GRRRRRRR!!!!!!&lt;br /&gt;&lt;br /&gt;So I have lost countless hours of sleep, including the time it's taking me to post this incoherent message. &amp;nbsp;But I feel I must share about resizing a loaded swf without scaling. &amp;nbsp; Right now I have some jerkiness in the movement, but it forces a scale and resize of the loaded swf's width and height.&lt;br /&gt;&lt;br /&gt;I avoid using the _loadedSwf.scaleContent and _loadedSwf.maintainAspectRatio. &amp;nbsp;These together were fun to figure out, but the end result was that my controls were scaling, and I didn't want that. &amp;nbsp;If I turned off scaleContent, then nothing would resize. &amp;nbsp;If I turned off aspect ration, then things started looking wonky.&lt;br /&gt;&lt;br /&gt;because I had added my _loadedSwf to a SkinnableContainer, and that container was getting resized, I wanted my _loadedSwf to update to that container's size. &amp;nbsp;On initialization I do use a method inside _loadedSwf. &amp;nbsp;And to use that, I have something like the following:&lt;br /&gt;&lt;br /&gt;var loadedSM:SystemManager = SystemManager(_loadedSwf.content)&lt;br /&gt;loadedSM.application["updateDimensions"](container.width, container.height);&lt;br /&gt;&lt;br /&gt;This worked great for the initial setup, but resizing still didn't work. &amp;nbsp;I won't recount the countless hours I've tried to make it work. &amp;nbsp;Needless to say, and the reward for reading this post is to see that to make this work, I did the following on the resizeMyApp(), called by the parent application whenever an EVENT.RESIZE_EVENT is dispatched:&lt;br /&gt;&lt;br /&gt;_loadedSwf.content.width = container.width;&lt;br /&gt;_loadedSwf.content.height = container.height;&lt;br /&gt;Object(_loadedSwf.content).setActualSize(container.width, container.height);&lt;br /&gt;loadedSM.application["updateDimensions"] (container.width, container.height);&lt;br /&gt;&lt;br /&gt;I got the idea on page 48 of this manual (Thank you Matt Horn!!!)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; line-height: 18px;"&gt;&lt;a href="http://livedocs.adobe.com/flex/3/loading_applications.pdf" style="color: #1e6a00; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline;"&gt;http://livedocs.adobe.com/flex/3/loading_applications.pdf&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These last 2 lines seem a bit hazy to me, but if I remove one of them, then the resizing doesn't work. &amp;nbsp;I do have some jerkiness that I need to work out, but the overall resizing now commits correctly. &amp;nbsp;I think there is something in the updateDisplayList() that I've missed, but somehow this makes the call work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-7385970137394923674?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/7385970137394923674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/12/resizing-dynamically-loaded-swfs-using.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/7385970137394923674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/7385970137394923674'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/12/resizing-dynamically-loaded-swfs-using.html' title='Resizing Dynamically Loaded swfs using swfloader'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-2587250693657239640</id><published>2010-06-07T19:37:00.000-07:00</published><updated>2010-06-07T19:37:02.372-07:00</updated><title type='text'>the iPhone, development, and Hedonism</title><content type='html'>&lt;!--StartFragment--&gt;Sorry, should’ve clarified...some emails were going around amongst my colleagues, and we were discussing the newest iPhone.&amp;nbsp; While Apple is the king of cool right now, they're still stuck with a crappy cell phone provider that is worthless if you want your phone conversation to last longer than&amp;nbsp; 30 seconds (about the average amount of time before an average call drops - with full signal strength, mind you).&lt;br /&gt;&lt;br /&gt;For me, Flash happens to be a medium I work in, but I’m a Rich Internet Application developer, and HTML5 + javascript, or Flash + javascript, or Silverlight + javascript all can achieve the same thing (eventually)...My job is to make shit look cool (kinda like bouncing gradient balls using gravity to propel themselves through millions of particles of pixie dust (optimized by apparat, of course), all while synthetically growing and teaching you something about polymorphism, or something like that)&lt;br /&gt;&lt;span style="font-family: Lucida Grande;"&gt;&lt;span style="font-size: 11pt;"&gt; &lt;br /&gt;I don’t think the hedonistic value of owning an iPhone would actually improve my life in the least, aside from earning the respect and envy of toy collectors...I know I’m a luddite, because I don’t want a phone that surfs the web on a shoddy little screen (high res or not).&lt;br /&gt;&lt;br /&gt;Smart phone or not, I hate surfing the web on tiny screens...watching a movie, or playing a game is ok, and getting some quick information distilled down to a quick blurb on twitter-like basis would be useful, but reading entire sites, surfing through the Nytimes, or even going to craigslist suck on these little screens (at least for someone like me with big fat fingers). &amp;nbsp;The iPad comes closer for casual users, or people who don’t need a professional development environment, and just some connectedness...the iPhone (compared to the Incredible) is ok, but I’m not losing sleep. &lt;br /&gt;&lt;br /&gt;I’ve got to get back to making cool shit happen on the screen (whichever size screen that may be).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande;"&gt;&lt;span style="font-size: 11pt;"&gt;Oh, and Hedonism is an amazing scotch by &lt;a href="http://www.compassboxwhisky.com/home.html"&gt;Compass Box&lt;/a&gt;.&amp;nbsp; I really love their bottle of Peat monster, and they've got some yummy other bottles.&amp;nbsp; Try them out if you can.&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-2587250693657239640?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/2587250693657239640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/06/iphone-development-and-hedonism.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2587250693657239640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2587250693657239640'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/06/iphone-development-and-hedonism.html' title='the iPhone, development, and Hedonism'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-5169204807171249332</id><published>2010-04-22T21:06:00.000-07:00</published><updated>2010-04-22T21:06:21.807-07:00</updated><title type='text'>Getting Flex 3.6 SDK, Flashbuilder 4, Tomcat, and BlazeDS to all play nice?</title><content type='html'>Ok, I'll be honest, I haven't gotten Blaze to play nicely yet, but I haven't had anything to setup w/ it yet.&amp;nbsp; I'm connecting to a previous setup that used Tomcat to connect to OLAP, and I'm recreating it in FB4 instead of Spring Suite tools.&amp;nbsp; Much of my team prefers STS, but I am comfortable right now in my efficiency in FB3/4, so I blogged &lt;a href="http://flexpletives.blogspot.com/2010/04/getting-up-to-speed-on-latest-flex-3.html"&gt;yesterday about wiring up the Flex 3.6 SDK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Connecting to a Tomcat server was the last hurdle before I get to a BlazeDS, and so I found this nice little plugin that I couldn't get from any other source.&amp;nbsp; For some reason, Tomcat isn't supported easily on Eclipse 3.5, and I'm not a fan of the standalone Flash Builder.&amp;nbsp; I prefer the Eclipse plugins, and found this would help me stay within the Eclipse.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.eclipsetotale.com/tomcatPlugin.html#A3"&gt;http://www.eclipsetotale.com/tomcatPlugin.html#A3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This was a very nice find.&amp;nbsp; I simply put the package in my eclipse plugin folder, and immediately when I restarted Eclipse, I had a Tomcat option on my toolbar.&amp;nbsp; In the preferences pane (Command+,) I could point the plugin at my Tomcat install, and away I go.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Now I can setup keyboard shortcuts (like Command+shift+t) to start/restart, or stop Tomcat.&amp;nbsp; The information from eclipsetotale is quite helpful, and I'm glad I came across it.&lt;br /&gt;&lt;br /&gt;Now to get down to some hardcore devving&lt;br /&gt;&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-5169204807171249332?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/5169204807171249332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/04/getting-flex-36-sdk-flashbuilder-4.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/5169204807171249332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/5169204807171249332'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/04/getting-flex-36-sdk-flashbuilder-4.html' title='Getting Flex 3.6 SDK, Flashbuilder 4, Tomcat, and BlazeDS to all play nice?'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-1644985963998120094</id><published>2010-04-21T20:55:00.000-07:00</published><updated>2010-04-22T21:00:45.398-07:00</updated><title type='text'>Getting up to speed on the latest Flex 3 SDK’s</title><content type='html'>This is not assuming you already have Flex 3 installed on your machine (eclipse plug-in or stand alone).&lt;br /&gt;&lt;br /&gt;In order to do this and avoid buggy errors, the latest nightly build of Flex SDK 3.6 is what I’ve used successfully.&amp;nbsp; I found one of many a &lt;a href="https://bugs.adobe.com/jira/browse/SDK-25567"&gt;bug&lt;/a&gt; which are annoying as all get out regarding comboboxes (which is why I prefer/recommend 3.6).&lt;br /&gt;&lt;br /&gt;In order to get up and running quickly, download either the latest or 2nd to latest nightly build of SDK 3.6, found &lt;a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3"&gt;here&lt;/a&gt; from Adobe.&lt;br /&gt;&lt;br /&gt;Inside your Flexbuilder sdk folder, create a folder for 3.6.0, something like this:&lt;br /&gt;for  Windows: C:\Program Files\Adobe\Flex Builder 3\sdks &lt;br /&gt;for Mac: [I use eclipse w/ the plugin, but it’s probably something similar] /Applications/Adobe Flex Builder 3 Plug-in/sdks&lt;br /&gt;&lt;br /&gt;Now install (or copy over) the newest SDK to this folder from the download.&lt;br /&gt;&lt;br /&gt;Next you’ll need to download the &lt;a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk"&gt;data visualization package&lt;/a&gt; (and unit testing if you use that).&amp;nbsp; While the latest build is for 3.5, you can use the package for 3.6 as well.&lt;br /&gt;&lt;br /&gt;And &lt;a href="http://www.adobe.com/support/documentation/en/flex/3/releasenotes_flex3_sdk.html#Datavisualization"&gt;instructions&lt;/a&gt; for where to copy the files from/to:&lt;br /&gt;&lt;br /&gt;This helped me get the environment up and running quickly in 3.6.&amp;nbsp; This can also apply to anyone developing using Flashbuilder 4 and working with SDK 3.x (for previous projects).&amp;nbsp;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-1644985963998120094?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/1644985963998120094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/04/getting-up-to-speed-on-latest-flex-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/1644985963998120094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/1644985963998120094'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/04/getting-up-to-speed-on-latest-flex-3.html' title='Getting up to speed on the latest Flex 3 SDK’s'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-7623077410078511247</id><published>2010-04-12T21:24:00.000-07:00</published><updated>2010-04-22T21:25:34.467-07:00</updated><title type='text'>Creating an AIR Installer badge for Flex Devs</title><content type='html'>In building a recent app, the customer asked me to also make a flash badge for their installer.&amp;nbsp; This way they could deploy the app installer, yet control the download of the AIR app.&amp;nbsp; For me, the badge allows two things, control of the app's image, and some nice SEO.&amp;nbsp; If you can get other sites to deploy your badge (which is a simple group of files), then you can get some nice cross linkage SEO (not to mention and SEO linking/MetaData you might have in the SWF that runs the installer), and also some good data.&lt;br /&gt;&lt;br /&gt;So to create a Badge, use Adobe's sample badge which I found here (on my Mac):&lt;br /&gt;&lt;br /&gt;/Applications/Adobe Flex Builder 3 Plug-in/sdks/3.6.0/samples.&lt;br /&gt;&lt;br /&gt;After you copy it into your project's folder (or wherever you'll most effectively work with it), you'll need to open it in Flash to manipulate some of it.&amp;nbsp; Now, I am not a Flash IDE user.&amp;nbsp; It takes me quite some time to figure out what the heck timelines are, and what layers are doing where, but in all honesty, if I could just figure this out, I'm sure I could do some killer stuff in Flash that would help out my enterprise apps.&amp;nbsp; Anyways, inside the group of items are .js, .html, .as, .swf, .jpg, and .fla.&amp;nbsp; The .fla allows me some room for designing, creating, and manipulating my text area.&amp;nbsp; Following Lee Brimelow's (http://www.gotoandlearn.com/play?id=56) example of making a tooltip in Flash (something I enjoy taking for granted in Flex), I built a hover over tooltip in my installer badge, as well as added some SEO in the metadata of the swf, and inside the jsp/html page.&lt;br /&gt;&lt;br /&gt;It took me a few minutes to realize that the badge itself was generated from Flash, so once I got inside of Flash, and started tooling around, I found out I could easily automate, or graphically change around, things on my installer badge.&amp;nbsp; And by using my own customized image, I could adjust inside the .fla what the image was to be shown, and could now use an animated .gif, or a .png, or (&lt;a href="http://www.zaalabs.com/2010/04/introducing-zaail-40-image-format-support-for-flash/"&gt;using the awesomeness of alchemy and ZaalLabs) 40+ image types&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also, because the fla incorporates the as file, I adjusted a few settings there for some more seo, and used that to compile and push out my swf.&amp;nbsp; bada-boom, bedaubing, I now have a kick-a$$ installer badge, with a custom logo, and I can mess around and adjust anything about the badge I want (including animation, or generative art, or what not).&amp;nbsp; And the installer file is tiny (in comparison to a flex app, this thing was only about 6k when I was done).&amp;nbsp; 6 friggin K.&amp;nbsp; That's ridiculously small…I need to learn to make Flex apps that small.&lt;br /&gt;&lt;br /&gt;Anyways, please enjoy hopefully these step by steps will help you make a better AIR app installer badge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-7623077410078511247?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/7623077410078511247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/04/creating-air-installer-badge-for-flex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/7623077410078511247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/7623077410078511247'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/04/creating-air-installer-badge-for-flex.html' title='Creating an AIR Installer badge for Flex Devs'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-5040515111657774499</id><published>2010-03-19T05:31:00.000-07:00</published><updated>2010-04-13T05:34:40.142-07:00</updated><title type='text'>Working w/ Global settings in Flash to get around Sandbox Security issue</title><content type='html'>I am working on an app that needs local resources and network resources.&amp;nbsp; I was getting very frustrated during my development because I couldn't read the local setup file.&amp;nbsp; Unfortunately, after a lot of digging around, the only reason I could find that the app wouldn't load was because the global settings for flash had been changed.&amp;nbsp; Because these settings are only available by going online here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager02.html"&gt;http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager02.html&lt;/a&gt;&lt;br /&gt;or here:&lt;br /&gt;&lt;a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html"&gt;http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html&lt;/a&gt;&lt;br /&gt;or here:&lt;br /&gt;&lt;a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html"&gt;http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html&lt;/a&gt;&lt;br /&gt;or here:&lt;br /&gt;&lt;a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager06.html"&gt;http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager06.html&lt;/a&gt;&lt;br /&gt;or here: &lt;br /&gt;&lt;a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager07.html"&gt;http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager07.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The following isn't a tab, but allow you to view set your player updates:&lt;br /&gt;&lt;a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager05.html"&gt;http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager05.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Anyways, the annoyance for me is a couple of things:&lt;br /&gt;1) why is this remote (aka why do I have to keep reloading a page&amp;nbsp; to look at flash player settings inside of a flash swf?)&lt;br /&gt;2) What is the garbage that Charles is recording going back and forth, and &lt;br /&gt;3) where is this swf object located on my machine so that I may have some more control over it.&lt;br /&gt;&lt;br /&gt;It's amazing to see what sites (intentionally visited or not - which includes pop-ups) that are stored in the global settings…I need to understand this more if I'm going to want more security for my machine.&lt;br /&gt;&lt;br /&gt;Anyways, the point I had about this post was that the global security settings were causing me some problems in connecting my app to the intertubes.&amp;nbsp; Once I made a checkmark on the Global Security Settings, I could actually see content and it resolved my problems (and all of this started as a search into possible cross domain issues, and not just my own irrational fears that someone might actually want to track all the websites I've been to and store private information about it without letting me know/delete/erase this stuff, manage my own security, etc…).&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-5040515111657774499?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/5040515111657774499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/03/working-w-global-settings-in-flash-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/5040515111657774499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/5040515111657774499'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/03/working-w-global-settings-in-flash-to.html' title='Working w/ Global settings in Flash to get around Sandbox Security issue'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-7605467595145551930</id><published>2010-02-14T17:38:00.000-08:00</published><updated>2010-02-14T17:38:10.708-08:00</updated><title type='text'>Compiling Release Build in Flex - non-alerted memory error:</title><content type='html'>I use Eclipse with FB3 plug-in for all my development, and often can become the case with opportunistic applications, Eclipse will grab more and more memory.&amp;nbsp; If I'm working on 2-3 apps at once, compiling and changing objects, I quickly lose up to 500MB to Eclipse.&amp;nbsp; Garbage collection and heap status size are determined by the .ini file.&amp;nbsp; When working on projects that have to embed a couple of fonts, I've had to increase the size, so that the compiler doesn't give me an out of memory error and ask me to close my workbench.&lt;br /&gt;&lt;br /&gt;Well, to keep Eclipse from becoming a memory hog, I changed the runtime and max perm size to 128 respectively.&amp;nbsp; This normally keeps Eclipse happy, running pretty quickly, and about as close to 300MB at runtime as I can keep it.&amp;nbsp; Well, recently while building out a project, I tried to export my final build, and the application kept crashing or bombing out.&amp;nbsp; The problem was that it wasn't telling me what was going on.&amp;nbsp; It just kept stopping, and not giving me a reason why.&amp;nbsp; I knew something was wrong because the release-bin folder remained empty.&lt;br /&gt;&lt;br /&gt;Switching over to Eclipse's plug-in development, I checked the error logs (very, very important resource when Flex and Eclipse fail without giving you warning…).&amp;nbsp; The error:&lt;br /&gt;java.lang.reflect.InvocationTargetException&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;Caused by: java.lang.OutOfMemoryError: Java heap space&lt;br /&gt;Root exception:&lt;br /&gt;java.lang.OutOfMemoryError: Java heap space&lt;br /&gt;&lt;br /&gt;Aha! Eureka - my answer lay in the fact that I had changed my workbench max and permanent size to something smaller than it could use, but it wouldn't tell me that.&amp;nbsp; Why Eclipse, is there now message?&amp;nbsp; Well, glad I know how to find the error log in Eclipse.&lt;br /&gt;&lt;br /&gt;Hope this helps anyone else who's Release Build fails, and no answer/reason is given…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-7605467595145551930?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/7605467595145551930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/02/compiling-release-build-in-flex-non.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/7605467595145551930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/7605467595145551930'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/02/compiling-release-build-in-flex-non.html' title='Compiling Release Build in Flex - non-alerted memory error:'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-3583006006864590184</id><published>2010-02-04T10:55:00.000-08:00</published><updated>2010-02-04T10:57:18.249-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='images'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='AS3'/><title type='text'>Dynamically Showing Embedded Images in Flex</title><content type='html'>Dynamically Showing Embedded Images&lt;br /&gt;&lt;br /&gt;Several resources will show how easy it is to embed an Image in Flex.  You can embed inline, via meta tag, and another way (which I forgot right now).  Regardless of any of these ways, they assume you always know when you are going to be using your embedded image, and don't have much flexibility if you want to dynamically change the image for a component based on something as arbitrary as mouseOver.  &lt;br /&gt;&lt;br /&gt;If you look at the profuse examples when googling, you come across many that show you how to embed inline:&lt;br /&gt;&amp;lt;&lt;br /&gt;&amp;lt;mx:Image id="img" source="{@Embed(source=assets/img.jpg)}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;Or you can embed an image via metatag inside your class, and then call it explicitly in your component:&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Metadata&amp;gt;&lt;br /&gt; [Embed(source="assets/icons/myImg.png")]&lt;br /&gt; public static const myImg:Class;&lt;br /&gt;&amp;lt;/mx:Metadata&amp;gt;&lt;br /&gt;…&lt;br /&gt;&amp;lt;mx:Image id="img" source="{myImg}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;Or you can embed the object in another class, foo, and then reference it in your Image:&lt;br /&gt;&lt;br /&gt;import location.for.assetClass.foo;&lt;br /&gt;...&lt;br /&gt;&amp;lt;mx:Image id="img" source="{foo.myImg}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;More often than not, I like to go the third route, mainly because I want to be able to access the images from another class, or from multiple components.  Now knowing how to embed images is great, but my quandary was, "What do I do if I have 30 or 100 small icons/images that I want to embed, and the component that is using the image doesn't know the embedded image to use until runtime, i.e. itemRenderer, or dynamically generated object using static icons (recycled buttons…)?"  &lt;br /&gt;&lt;br /&gt;For this example, I am using a simple list, with a custom itemRenderer.  The list's dataprovider has an id and some other information for each record.  In my customItemRenderer, I can get the data.id and use that to determine the picture I wanted to use.  The only problem was, I have know idea how to call foo.myImg dynamically.  I tried getClassByName(data.id), but it refused to cast my object to a class or would return null.  &lt;br /&gt;&lt;br /&gt;I really thought that because I had embedded my image, then cast it as a class, I'd be able to call it by name.  Bummer!  &lt;br /&gt;&lt;br /&gt;Next I setup an array and a method inside of class foo.  The array, called myAssets, is an array of all the classes inside of foo.  The function was called from the itemRenderer, in init() to get the class for the image to assign it, as a ByteAsset, to the source for the image.  Inside of foo, I have the following:&lt;br /&gt;&lt;br /&gt;  public function getClass(str:String):Class{&lt;br /&gt;   var s:String = "[class IconAssets_" + str + "]";&lt;br /&gt;   for (var i:int = 0; i &amp;lt; myAssets.length; i++){&lt;br /&gt;    var t:String = myAssets[i].toString();&lt;br /&gt;    trace(t);&lt;br /&gt;    if(s == t){&lt;br /&gt;     return myAssets[i];&lt;br /&gt;    }&lt;br /&gt;   } &lt;br /&gt;   return null; &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;I would pass in the data.id to the getClass(), and the return would be the class I needed.  This actually worked, but seemed quite cumbersome, especially because now I was not only responsible for creating the embedded image, but also adding and maintaining an array for all objects.  This seemed a bit extraneous, so I finally hit on a solution that let's me do this quickly and easily.&lt;br /&gt;&lt;br /&gt;The most annoying part of all of this is either not knowing the correct syntax (because I'm a music major and am learning coding on my own), wording to search the world of Flex development blogs, or something else involving the continual error between seat and keyboard…&lt;br /&gt;&lt;br /&gt;Anyways, the ultimate solution was actually quite easy.&lt;br /&gt;&lt;br /&gt;Keeping the foo class with all my embedded images is fine, and in my itemRenderer, for the image, I just need to put the following for the source:&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Image id="img" source="{foo[data.id]}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;That's it!  Probably too much time spent trying to figure this out, but in the end, the class is acting like an object, and I can get any of my "properties" out of the class pretty easily now.  I struggled w/ this concept on an earlier project, but now that I have the quick fix to dynamically change the source of an image with an embedded image without having to hard code any values in the component is much, much better.  Ok, so lesson learned, the answer wasn't that hard, but I needed to futz with the other possibilities before I could finally get it right.  Now that I got it right, I promise I shouldn't get it wrong again*.&lt;br /&gt;&lt;br /&gt;*I might, but that's all part of my slow learning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-3583006006864590184?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/3583006006864590184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/02/dynamically-showing-embedded-images-in.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/3583006006864590184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/3583006006864590184'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/02/dynamically-showing-embedded-images-in.html' title='Dynamically Showing Embedded Images in Flex'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-3571537765006597235</id><published>2010-01-25T19:27:00.000-08:00</published><updated>2010-01-25T19:27:05.108-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Button Custom DropShadoFilter Override'/><title type='text'>Custom Buttons In Flex - Drop Shadow on Text</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Just recently I was asked about adding a drop shadow to the text in a button.&amp;nbsp; Going through a few blogs, I found quickly that the best example to follow was from some guys who're way more advanced than me (http://www.davidflatley.com/2007/12/17/programmatic-button-skins-in-flex-3/, http://www.asfusion.com/blog/entry/stateful-skins-in-flex-3e-color-transitions-in-buttons-now-possible, http://www.tink.ws/blog/stateful-skins-in-flex/).&amp;nbsp; Essentially, the label inside a button is a IUITextField.&amp;nbsp; It can have filters, styles, whatever you want.&amp;nbsp; So I simply extended the Button class in .as, and added my own 'filters = [new DropShadowFilter(x,y)]', and when I implement the button, I get text w/ drop shadows.&amp;nbsp; More excitingly, I can setup some local vars that can be adjusted at runtime, so not every custom button has to have a drop filter, or if I click on it, I can quickly, in a programmatic skin, remove the drop shadow on over or down states.&amp;nbsp; This means I now have some cooler looking buttons that can shift text formatting dynamically (which is so much better than hardcoding in the style - just in case I'd like to reuse my buttons!)&lt;br /&gt;&lt;br /&gt;Here's some code:&lt;br /&gt;&lt;br /&gt;In the class itself, I have to override the rollover and rollout so I can remove the drop shadow to give a different dynamic effect.&amp;nbsp; Also, I have to override the updateDisplayList because the disabled buttons shouldn't have a drop shadow (again, just for fun).&lt;br /&gt;&lt;br /&gt;/**Class**/&lt;br /&gt;package com.studioNorth.skins{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.display.DisplayObject;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.events.MouseEvent;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import flash.filters.DropShadowFilter;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.controls.Button;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.core.IUITextField;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.core.UITextField;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class CustomButtonTextDropShadow extends Button{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private var ds:DropShadowFilter; //This could be public so users could access and change it or any other variable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public function CustomButtonTextDropShadow(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ds = new DropShadowFilter(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; override protected function rollOverHandler(event:MouseEvent):void{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textField.filters = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super.rollOverHandler(event);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; override protected function rollOutHandler(event:MouseEvent):void{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super.rollOutHandler(event);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(enabled)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; textField.filters = [ds];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; override protected function createChildren():void{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!textField){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textField = IUITextField(createInFontContext(UITextField));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textField.filters = [ds];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textField.styleName = this;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addChild(DisplayObject(textField));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super.updateDisplayList(unscaledWidth, unscaledHeight);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(!this.enabled){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; textField.filters = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**Main App**/&lt;br /&gt;&lt;mx:application layout="absolute" xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:view="com.lordB8r.view.*"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;view:custombuttontextdropshadow color="white" fontsize="20" height="100" label="Click Me" width="240"&gt;&lt;br /&gt;&lt;/view:custombuttontextdropshadow&gt;&lt;br /&gt;&lt;br /&gt;before mouse over:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_IB4l2fjDZI8/S15SSsgaKJI/AAAAAAAAAB4/66d6aiwB2Tc/s320/clickBefore.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;during mouse over:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_IB4l2fjDZI8/S15gp_QQl6I/AAAAAAAAACA/yMtX1naHj_w/s320/clickAfter.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;that simple!&lt;br /&gt;&lt;br /&gt;&lt;/mx:application&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-3571537765006597235?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/3571537765006597235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/01/custom-buttons-in-flex-drop-shadow-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/3571537765006597235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/3571537765006597235'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/01/custom-buttons-in-flex-drop-shadow-on.html' title='Custom Buttons In Flex - Drop Shadow on Text'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_IB4l2fjDZI8/S15SSsgaKJI/AAAAAAAAAB4/66d6aiwB2Tc/s72-c/clickBefore.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-2762979701459452435</id><published>2010-01-21T06:43:00.000-08:00</published><updated>2010-01-21T06:43:51.484-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='drawRoundRect'/><category scheme='http://www.blogger.com/atom/ns#' term='skinning'/><category scheme='http://www.blogger.com/atom/ns#' term='borders'/><category scheme='http://www.blogger.com/atom/ns#' term='AS3'/><title type='text'>drawRoundRect in Flex is nice, but what about non-straight rectangular borders</title><content type='html'>rounded rectangles are nice, but...&lt;br /&gt;&lt;br /&gt;Everyone wants at least one rounded rectangle corner these days in Flex…well, it's easy to do if you just want to define the corner radius for each corner.&amp;nbsp; However, what do you do if you want to notch a side, extend another side, and still have the corners?&amp;nbsp; Well, just drawing a rounded rectangle doesn't work, because you're now changing the shape of the object. Now I've gotta use the graphics.curveTo, moveTo, and lineTo methods to give me a cooler rectangular border (this might even work well for tabNavigatorButtons)&lt;br /&gt;&lt;br /&gt;Because I'm big into programmatic skinning (it mainly just makes sense to me not to have to hardcode a project to specific images imported/exported from Flash or Illustrator or whatnot.&amp;nbsp; I'd like my skins to be able to redraw themselves quickly and efficiently.&amp;nbsp; For my project, I wanted to create rounded rectangles, but also have the notch.&amp;nbsp; Using the drawRoundRectangle was a start, but I couldn't change anything else in the border.&amp;nbsp; I searched and came across this guys article about dynamically creating shapes based on where you click on the canvas.&amp;nbsp; Amazing idea which would be really neat to extend to the use of manipulating images or cutting anything on the canvas (think lasso or scissor tool in any image editing software by Adobe)&lt;br /&gt;&lt;br /&gt;Anyways, to create the rectangle with rounded corners and non-straight borders, I abused the example from Adobe and added my own flair. You need the plotPoints part to make the rectangle draw everything, including the corners.&amp;nbsp; In addition, I had to adjust for my 3 rounded corners, which include curveTo functionality.&amp;nbsp; That was the trickier part, but in the end, got me a programmatic skin with notches…yippee!!!&lt;br /&gt;&lt;br /&gt;package your.package&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; import flash.filters.BitmapFilterQuality;&lt;br /&gt;&amp;nbsp; import flash.filters.DropShadowFilter;&lt;br /&gt;&amp;nbsp; import flash.geom.Point;&lt;br /&gt;&amp;nbsp; import flash.geom.Rectangle;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; import mx.graphics.RectangularDropShadow;&lt;br /&gt;&amp;nbsp; import mx.skins.RectangularBorder;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; public class CustomContainerBorderSkin extends RectangularBorder {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var dropShadow:RectangularDropShadow;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var _points:Array = [];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var rect:Rectangle;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Constructor.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public function CustomContainerBorderSkin() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super.updateDisplayList(unscaledWidth, unscaledHeight);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var cornerRadius:Number = getStyle("cornerRadius");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var backgroundColor:int = getStyle("backgroundColor");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var backgroundAlpha:Number = getStyle("backgroundAlpha");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; graphics.clear();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var indent:Number = 10;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; plotPoints(indent);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; graphics.beginFill(backgroundColor,1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; graphics.moveTo(_points[0].x, _points[0].y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i:int = 0; i &amp;lt; _points.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(i == 2 || i == 7 || i == 9){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; switch(i){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case(2):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; graphics.curveTo(x + width, y, _points[i].x, _points[i].y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case(7):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; graphics.curveTo(x + width, y + height, _points[i].x, _points[i].y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case(9):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; graphics.curveTo(x, y + height, _points[i].x, _points[i].y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }else{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; graphics.lineTo(_points[i].x, _points[i].y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; graphics.lineTo(_points[0].x, _points[0].y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; graphics.endFill();&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; parentObj = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function plotPoints(n:Number):void {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points = [];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points.push(new Point(x, y));&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //0 topLeft&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points.push(new Point(x + width - 10&amp;nbsp;&amp;nbsp;&amp;nbsp; , y));&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //1 topRight curve from&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points.push(new Point(x + width&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; , y + 10)); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //2 topRight curve to&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points.push(new Point(x + width&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; , y + height - 45));&amp;nbsp;&amp;nbsp;&amp;nbsp; //3 indent begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points.push(new Point(x + width - n&amp;nbsp;&amp;nbsp;&amp;nbsp; , y + height - 35));&amp;nbsp;&amp;nbsp;&amp;nbsp; //4 indent point&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points.push(new Point(x + width&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; , y + height - 25));&amp;nbsp;&amp;nbsp;&amp;nbsp; //5 indent end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points.push(new Point(x + width&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; , y + height - 10)); &amp;nbsp;&amp;nbsp;&amp;nbsp; //6 bottomRight curve from&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points.push(new Point(x + width - 10&amp;nbsp;&amp;nbsp;&amp;nbsp; , y + height));&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //7 bottomRight curve to&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points.push(new Point(x + 10&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; , y + height));&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //8 bottomLeft curve from&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _points.push(new Point(x&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; , y + height - 10));&amp;nbsp;&amp;nbsp;&amp;nbsp; //9 bottomLeft curve to&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function getBitmapFilter():DropShadowFilter {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var distance:Number = 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var angle:Number = 45;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var color:Number = 0x000000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var alpha:Number = .5;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var blurX:Number = 8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var blurY:Number = 8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var strength:Number = 0.65;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var quality:Number = BitmapFilterQuality.LOW;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var inner:Boolean = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var knockout:Boolean = false;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new DropShadowFilter(distance, angle, color, alpha, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; blurX, blurY, strength, quality, inner, knockout);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-2762979701459452435?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/2762979701459452435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/01/drawroundrect-in-flex-is-nice-but-what.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2762979701459452435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2762979701459452435'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/01/drawroundrect-in-flex-is-nice-but-what.html' title='drawRoundRect in Flex is nice, but what about non-straight rectangular borders'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-2099015697232425444</id><published>2010-01-15T18:45:00.000-08:00</published><updated>2010-01-18T18:47:05.265-08:00</updated><title type='text'>Eclipse Navigator Link with Editor</title><content type='html'>This as a small setting that I made about 6 months ago, forgot where I did it, and about 2 days later, regretted ever making this change.&amp;nbsp; I hate having my navigator bounce around all the time every time I change a tab, so this was annoying as all get out.&amp;nbsp; Stoopid me, I didn't find it again until my co-worker showed me &lt;a href="http://johnvh.com/2009/03/30/ignoring-files-in-flex-builder-navigator/"&gt;this&lt;/a&gt; link.&amp;nbsp; It was for something completely different (i.e. hiding .svn folders, but on a Windows machine, however on my mac svn files are hidden in Eclipse).&amp;nbsp; Needless to say, I saw that example image, with the term 'Link with Editor'.&amp;nbsp; My eyes misted and I got very smiley, as my co-worker accidentally solved my problem (and he just wanted to help me hide the hidden .svn folders).&amp;nbsp; Oh well.&amp;nbsp; Glad I'm back on a more efficient route!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-2099015697232425444?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/2099015697232425444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/01/eclipse-navigator-link-with-editor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2099015697232425444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2099015697232425444'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/01/eclipse-navigator-link-with-editor.html' title='Eclipse Navigator Link with Editor'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-2522653607707529588</id><published>2010-01-13T07:50:00.000-08:00</published><updated>2010-01-13T07:50:31.877-08:00</updated><title type='text'>Flex Builder error: The project properties files could not be read.</title><content type='html'>My recent flex adventure almost came to a crashing end when I shut down and restarted Eclipse, only to find that my file's project properties could no longer be read?!?!&amp;nbsp; I got very angry trying to figure out what happened, thinking to myself that I recently tried committing my project to SVN via subclipse (which is another story on its own).&amp;nbsp; One thing I'm very happy I did was create a backup before trying to commit.&amp;nbsp; Pretty much every time I tried to open my project I got the project properties files could not be read.&amp;nbsp; I looked at the .actionScript and .project files, and couldn't see anything missing.&amp;nbsp; I looked high and low, and ran a -diff on my project and the backup copy.&amp;nbsp; Turns out, I was missing the .flexProperties file.&amp;nbsp; How that got deleted from the project I don't know, but it was horrifyingly maddening to only get a mystic message saying the project properties files could not be read.&amp;nbsp; Which files?!?&amp;nbsp; A better message would be preferred, but alas, I copied the old over to the project folder, and I'm back in shape.&amp;nbsp; Lesson learned, if you get this error, make sure you have all three project files in the correct location (aka CYA).&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://www.benclinkinbeard.com/2009/09/flex-builder-error-the-project-properties-files-could-not-be-read/"&gt;Ben Clinkenbeard&lt;/a&gt; and &lt;a href="https://bugs.adobe.com/jira/browse/FB-21707" onclick="javascript: pageTracker._trackPageview('/2009/09/flex-builder-error-the-project-properties-files-could-not-be-read/links/erichelier');"&gt;Eric Hélier&lt;/a&gt; for getting me in the right direction!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-2522653607707529588?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/2522653607707529588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/01/flex-builder-error-project-properties.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2522653607707529588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2522653607707529588'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/01/flex-builder-error-project-properties.html' title='Flex Builder error: The project properties files could not be read.'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-6334270939615259312</id><published>2010-01-11T19:18:00.000-08:00</published><updated>2010-01-11T19:18:58.125-08:00</updated><title type='text'>Massive amounts of memory consumption via image swapping in Flex</title><content type='html'>On my project, I was using &lt;a href="http://demonsterdebugger.com/"&gt;De MonsterDebugger&lt;/a&gt; (DMD) (great tool, easy to implement, but can get heavy if you don't have a lot of RAM - peaks at about 150MB for me, which can hurt because I'm running on only 2 GB).&amp;nbsp; In my project, I am rolling over canvases, and on each rollover, the background of the application should have its images change.&amp;nbsp; My initial development had me doing this by changing the style of the Application (application.setStyle("backgroundImage",assets/myNewImg)).&amp;nbsp; And to make the transition smooth, I had a second Image that I was using on top of the background, but underneath all the other components (z level = lowest possible).&amp;nbsp;&lt;br /&gt;&lt;br /&gt;The problem quickly became clear (even more so w/ DMD because I could see why my computer would stop responding when debugging, i.e. my RAM usage was spiking).&amp;nbsp; In the last several days I have been reading about garbage collection (GC) and how it seems to act on its own accord.&amp;nbsp; It was happening w/ my app, which would always return to about 40MB in runtime, but could (and often did) spike upwards of 250MB!!!&amp;nbsp; All that for a single swf file running in Safari.&amp;nbsp; I checked my objects, commented out different things (including custom turtle border graphics), and went through item by item that could've ran up so much RAM.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Finally it came back to my images being swapped in and out.&amp;nbsp; I thought the image class could handle changing sources quickly, but it turns out, that was eating huge resources to render the image (all while doing some lightweight tweening).&amp;nbsp; I tried my best to build this application to follow OOP and reusability as best as I could.&amp;nbsp; The data source (an xml config file) is what drives the layout and information of the app, so I wanted to avoid embedding anything that needed to be called up explicitly w/ a case/if.&amp;nbsp; But alas, I could only do so much before I had to make some exceptions in my class and embed the background images, and use a case statement to assign it correctly on hover.&amp;nbsp; Once here, and once I realized that changing two background images (one stacked on the other to allow me to transition smoothly - read fade - meant I needed two images).&amp;nbsp;&lt;br /&gt;&lt;br /&gt;My app now only spikes at about 68MB, no matter how many transitions I make, and I don't have to try to force GC (which eventually happens during idle time).&amp;nbsp; The last thing I think I'd like to try is possibly improving the cpu performance and keeping the fan from getting hot by adjusting frame rate, but for now, I'm happy that my app doesn't spike so much anymore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-6334270939615259312?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/6334270939615259312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/01/massive-amounts-of-memory-consumption.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6334270939615259312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6334270939615259312'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/01/massive-amounts-of-memory-consumption.html' title='Massive amounts of memory consumption via image swapping in Flex'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-1386067992670346329</id><published>2010-01-07T19:47:00.000-08:00</published><updated>2010-01-11T19:30:57.382-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='horizontallist'/><category scheme='http://www.blogger.com/atom/ns#' term='smooth scrolling'/><title type='text'>Smooth scrolling of a horizontallist</title><content type='html'>So I tried various makes of horizontal scrolling a horizontallist.&amp;nbsp; I followed these&lt;a href="http://thanksmister.com/?p=450"&gt; examples&lt;/a&gt;, yet either my canvas never added the hlist (because the canvas initialized after I added the hlist, so the hlist was garbage collected before it's parent was initialized), or the scroll bar never moved the list (although I came close to rewriting the scrollhandler function.&amp;nbsp; Suffice it to say, finally my hack involved adding the hlist to my canvas through a calllater(addHList), and then having external buttons be able to scroll my hlist left and right a designated amount based not on the scroll bar of the parent canvas, but on the x coordinate of my hlist.&amp;nbsp; Simple enough!&amp;nbsp; I don't need to worry about overriding the location of the scroll bar, and now i can use something like tweenmax to handle the transitioning of the horizontal lists position, so i get scrolling, and external buttons to move my hlist, and i get all the benefits of an hlist (which has as many columns as i need because i set its columncount = dataprovider.length.&amp;nbsp; if anyone wants to see code, let me know and i'll post an update.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;private function scrollHorizontalList(e:Event):void{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var dir:String = e.currentTarget.name;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var end:int;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var pos:int = hList.x;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var max:int = hList.dataProvider.length;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var myTween:TweenMax;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;trace(dir);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(dir == "rButton"){&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end = pos + colWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!TweenMax.isTweening(hList)){&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//if(hList.x-colWidth*colsToScroll)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myTween = new TweenMax(hList,1,{x: hList.x - colWidth*colsToScroll, ease:Cubic.easeInOut});&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myTween.play();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hListScroll+=colsToScroll;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (dir == "lButton") {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end = pos - colWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!TweenMax.isTweening(hList)){&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myTween = new TweenMax(hList,1,{x: hList.x + colWidth*colsToScroll, ease:Cubic.easeInOut});&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myTween.play();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hListScroll-=colsToScroll;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lButton.enabled = (hListScroll &amp;gt; 0)?true:false; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rButton.enabled = (hListScroll &amp;lt; max-colsToScroll)?true:false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-1386067992670346329?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/1386067992670346329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/01/smooth-scrolling-of-horizontallist.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/1386067992670346329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/1386067992670346329'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/01/smooth-scrolling-of-horizontallist.html' title='Smooth scrolling of a horizontallist'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-6987551031914289219</id><published>2010-01-05T19:37:00.000-08:00</published><updated>2010-01-11T19:39:24.687-08:00</updated><title type='text'>Eclipse .ini changes</title><content type='html'>FB3 breaks then fixes, all because I forgot an 'm' in my init file.&amp;nbsp; Actually, I was trying to change the min, max, and permanent sizes of my eclipse runtime, and I accidentally deleted one of the 'm's, and then eclipse never started or worked for me again.&amp;nbsp; I got really angry, wasted 30 minutes trying to figure out what happened, including trying to read the logs and see where it went wrong, and finally decided to skip ahead and reinstall eclipse (3.4.2 of course, as FB3 won't work on 3.5, &lt;a href="http://margelatu.org/2009/06/30/migrating-to-eclipse-galileo-and-the-flash-builder-4-plug-in/"&gt;although some have figured it out&lt;/a&gt;…)&amp;nbsp; So long story short, I reinstalled, did the software update to &lt;a href="http://blog.flashgen.com/2009/04/09/reconnecting-flex-builder-plug-in-to-eclipse/"&gt;re-attach FB3 plugin&lt;/a&gt; (the new 3.5 sdk rocks!), and then couldn't get SVN to attach via subclipse.&amp;nbsp; Another half hour later, and I returned to my .ini file, checked it against my old install, found the missing 'm', almost kicked myself, fixed the 'm', and now I have everything back in order…how annoying!&amp;nbsp; Although, now &lt;a href="http://www.aptana.com/"&gt;Aptana&lt;/a&gt; makes things a bit slower...anyone else having that problem?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-6987551031914289219?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/6987551031914289219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/01/eclipse-ini-changes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6987551031914289219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/6987551031914289219'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/01/eclipse-ini-changes.html' title='Eclipse .ini changes'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-1349686799981002963</id><published>2009-12-15T19:44:00.000-08:00</published><updated>2010-01-11T19:45:05.650-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='PV3D'/><category scheme='http://www.blogger.com/atom/ns#' term='AR'/><title type='text'>Flex, AR and speed improvement</title><content type='html'>I am working on an AR project for a client when I ran into major performance issues.&amp;nbsp; It drove me batty because I tested out a bunch of stuff and couldn't get the performance up.&amp;nbsp; For starters, I am using a dae file (standard stuff), then I load it in using collada, and that's where the crap started bottoming out.&amp;nbsp; I tried multiple ways to fix it, testing whether it was my app, the dae, the AR, or what!&amp;nbsp; I even connected w/ ARToolworks and Eric Socolofsky.&amp;nbsp; They made some suggestions, like using Windows to take advantage of FP10.1.5's newest drivers which are great on the graphics card (but don't help me because I'm on a Mac).&amp;nbsp; Instead, after countless hours and angry griping, I happened upon a small discovery, the rendering engine in Papervision.&amp;nbsp; This little sucker is rendering my dae and making my 3D model work.&amp;nbsp; Well, it was using Quadrant, which was eating up about every resource to make my model look nice and smooth.&amp;nbsp; Once I switched that to Lazy, I got a huge performance boost (going from 1-2 fps up to 10-11 fps).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-1349686799981002963?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/1349686799981002963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2010/01/flex-ar-and-speed-improvement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/1349686799981002963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/1349686799981002963'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2010/01/flex-ar-and-speed-improvement.html' title='Flex, AR and speed improvement'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-8405290809258534934</id><published>2009-12-10T19:45:00.000-08:00</published><updated>2010-01-11T19:46:52.869-08:00</updated><title type='text'>Who works in a corporate environment and is allowed to use FB4 yet?</title><content type='html'>FB4 - oh how I pine for you!&lt;br /&gt;&lt;br /&gt;Actually, I wanted to create my latest project in FB4, utilizing the pleasures of the vector class in FP10, but alas, my compatriots managed to convince me that the upgrade isn't necessary yet.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Is there anyone out there who's corporate policy is banning them from using the beta product to develop apps?&amp;nbsp; If they do, how do you get to play (aside from on your own time?)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-8405290809258534934?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/8405290809258534934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2009/12/who-works-in-corporate-environment-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/8405290809258534934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/8405290809258534934'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2009/12/who-works-in-corporate-environment-and.html' title='Who works in a corporate environment and is allowed to use FB4 yet?'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-9176988135395371032</id><published>2009-12-01T19:42:00.000-08:00</published><updated>2010-01-11T19:43:31.221-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='CS4'/><category scheme='http://www.blogger.com/atom/ns#' term='Dreamweaver'/><title type='text'>Dreamweaver and CS4 killing performance</title><content type='html'>Is Dreamweaver running slow for anyone else who does Flex development.&amp;nbsp; I'm not on a great machine, but I'm running a MacBook 13" w/ a 2.16 GHz Core 2 Duo, and 2 GB of Ram, but I do love my MacBook, and get quite frustrated by the fact that when I open up most of my CS4 products, my computer can come to a grinding halt.&amp;nbsp; Actually, it's mostly just Dreamweaver, which I'm using for reading, writing and editing C#.&amp;nbsp; I've thought about running my XP partition, then running visual studio for the coding, but that'd take up just about as much resources as me running Dreamweaver.&amp;nbsp; What I don't understand (and maybe it comes from being spoiled by a wonderful Eclipse community), but why is Dreamweaver so unwieldily and ugly and hard to use?&amp;nbsp; I'm happy that I can edit multiple languages with it, but frankly, I would've been happier if netBeans or even Eclipse let me work on it.&amp;nbsp; It's annoying!&amp;nbsp; But regardless, I'm trying to figure out what is killing my cpu?&amp;nbsp; I do know and have configured my Eclipse for larger memory management (I believe I set the min at 84, and the max at 1024), but I'm almost never using all of that.&amp;nbsp; Aside from a few smaller apps (read: iTunes, Adium, Thunderbird), I'm at a loss for such inefficiency.&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-9176988135395371032?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/9176988135395371032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2009/12/dreamweaver-and-cs4-killing-performance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/9176988135395371032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/9176988135395371032'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2009/12/dreamweaver-and-cs4-killing-performance.html' title='Dreamweaver and CS4 killing performance'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-5478706690679968777</id><published>2009-11-27T21:09:00.000-08:00</published><updated>2010-01-27T21:10:23.352-08:00</updated><title type='text'>Recruiters and Pricing one's services</title><content type='html'>Recruiters - I enjoy when you call to discuss things, but seriously, please don't contact me when it's about something I haven't done in 5-10 years.  And don't get offended when I have fun at your expense for responding w/ ridiculous information, like absurd rates…Honestly, I don't want your gig, that's why I stopped doing it what I did.  And don't get mad because you're spamming me that I shouldn't just respond w/ a bit of wit.  If you actually take it seriously, then the problem is you.&lt;br /&gt;&lt;br /&gt;However if you want to pay me that much, then I might reconsider :)  &lt;br /&gt;&lt;br /&gt;And why not pay me that much?  Most companies are willing to pay other companies that much for consulting on something (for example, look what any of the big consulting or management consulting or accounting firms charge).  I should be paid that much to consult as well, right?  Wrong?  While it would be nice to charge that much, and companies always feel they get more bang for their buck at the higher price (I mean, who wouldn't want bragging rights about spending top dollar to get the best - it happens all the time regarding MBAs and other degrees, and just because you have more people with accolades doesn't mean you'll get a better resolve).  For example, look at the financial companies in dire straits (only as an example).  They claim they have 10 (or 20 or 100) of the brightest minds working to solve the problems.  Yet it's like saying I have 10 (or 20 or 100) copies of the "special report".  No copy is better than the other, yet there is a belief, a horrible misconception, that if you gather enough bright minds of the same ilk, you'll get superior results.  And for that, you get to charge bucko bucks.&lt;br /&gt;&lt;br /&gt;Yet nobody stops to ask, "What difference is all this making for me?"  Large companies, time and time again, say they want to cut costs, improve efficiencies, and grow the bottom line.  Yet they normally farm out work to contractors and consultants, almost all of whom (except the rare exceptions of really brilliant people - not just smart, but those that actually can figure things out for themselves) use Google, Bing, YouTube, Twitter, and whatever other technological device to help themselves learn from what everyone else has done and use their examples.  &lt;br /&gt;&lt;br /&gt;People can learn quickly, and those that are the most profitable should make good money.  But companies that charge buckets for their services, when they aren't necessarily the best game in town (most often they rely on normal people because nobody is a superhero - unless you are Jonny Lee - then I'll make an exception).  But even so, most people aren't that brilliant, and companies don't have a lot of brilliant people in them, so why should they get to charge so much and I can't?  Brand recognition?  Paint?  Logo?  What?&lt;br /&gt;&lt;br /&gt;So back to my original rant, if someone's willing to pay it, shouldn't I oblige them?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-5478706690679968777?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/5478706690679968777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2009/11/recruiters-and-pricing-ones-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/5478706690679968777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/5478706690679968777'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2009/11/recruiters-and-pricing-ones-services.html' title='Recruiters and Pricing one&apos;s services'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-7929516316467283099</id><published>2009-11-15T20:13:00.001-08:00</published><updated>2009-11-15T20:13:09.696-08:00</updated><title type='text'>Flex Builder Recursion Variable?</title><content type='html'>Wouldn't it be nice if Flex allowed us to have some kind of global that would let us know (especially when building, testing, and debugging) what level we're at when working w/ a recursive loop?&amp;nbsp; I created some XML a bit back that involves recursion, and the trick to it was knowing how I built it, but what about times when you have something that Flex makes - such as the simpleXMLEncoder - which is simple, but only works on basic Flex objects and provides really lame tags…In the simpleXMLEncoder/Decoder, their own code runs recursion, and it would be nice to have a way of tracking what level in which we are working.&lt;br /&gt;&lt;br /&gt;My own projects have used recursive Data Transfer Objects to drill through and build up external complex data sets.&amp;nbsp; However, when debugging and working through it, I can't easily nail down what level I'm at and how to go backwards.&amp;nbsp; Sometimes the debug window can hold up to a few locations where I can click and view my location and progress, but it would be much simpler to have some kind of level tracking, especially in recursion.&lt;br /&gt;&lt;br /&gt;This flexplitive rant is brought to you by a recursive loop that is brought to you by a recursive loop that is brought to you by a recursive loop that is…well you get the idea :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-7929516316467283099?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/7929516316467283099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2009/11/flex-builder-recursion-variable.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/7929516316467283099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/7929516316467283099'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2009/11/flex-builder-recursion-variable.html' title='Flex Builder Recursion Variable?'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-1075662198718631059</id><published>2009-11-13T13:46:00.001-08:00</published><updated>2009-11-13T13:46:43.989-08:00</updated><title type='text'>Not Flex directly, but html, Outlook 2007, and the evil colSpan</title><content type='html'>During a current project, one of the requirements is being able to send an email from a Flex application to one or more recipients.&amp;nbsp; To accomplish this, through an amalgam of remote services, flex, and an email server, we are able to send out the emails.&amp;nbsp; The Flex side is quite easy, and using fluorine, we were able to quickly generate the c# code for the backend.&amp;nbsp; However the problem lies in QA'ing these emails for recipients and ultimately from the various email clients available.&amp;nbsp; While it would be nice to send a .swf in an email (like an html email) and allow it to play as soon as one opens the email, I can imagine how that could negatively impact a lot of users - think of a user who unwittingly opens an email that has a swf (which now wants to import and open up inside of your email client all of its components).&amp;nbsp; This could bog down the email client considerably, but more important, isn't email meant to be for simple text and images?&amp;nbsp; Leave the swf to the browser, right?&amp;nbsp; Well, I think it would be awesome if thunderbird allowed you to read .swf's in your email, and run flash right there…regardless, I digress.&lt;br /&gt;&lt;br /&gt;What I'd like to get at is the complexity we've had in testing an html email template that all clients would read (i.e. gMail, Outlook 07 and 03, thunderbird, aol, yahoo, etc.)&amp;nbsp; There are tons of clients, but most business savvy users are on the Outlook clients.&amp;nbsp; So how do I, running on a mac, without access (nor desire) to Outlook, test this?&amp;nbsp; Well, our handy QA team is doing that for me, and they've noticed some really annoying *flexplitive here* things w/ Outlook.&amp;nbsp; Namely, the absence of support for colSpan inside a table.&amp;nbsp; C'mon mang, colspans are the bread and butter of making a table work right, otherwise I'm stuck putting a bunch of 's inside of the 's which just makes my life really, really complicated.&amp;nbsp; the easy trick we figured out is that to avoid col spans, you can put multiple 's next to eachother, then put those in a row, and finally, to avoid the colspan, just move the items that you wanted to span, move them into a table above or below the table that has the row w/ the multiple columns.&amp;nbsp; This essentially makes your table have multiple columns, but only one row, or multiple rows.&amp;nbsp; This is extremely annoying, yet useful, if you have multiple columns, want someone to see your email in html, and send it to anyone using outlook 07.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Anyways, that's just my annoyance, so this flexplitive rant really isn't much about Flex and more about html and how much Outlook 07 really stinks...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-1075662198718631059?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/1075662198718631059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2009/11/not-flex-directly-but-html-outlook-2007.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/1075662198718631059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/1075662198718631059'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2009/11/not-flex-directly-but-html-outlook-2007.html' title='Not Flex directly, but html, Outlook 2007, and the evil colSpan'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-5732264566706066703</id><published>2009-11-13T07:57:00.001-08:00</published><updated>2009-11-13T07:57:25.435-08:00</updated><title type='text'>Remoting</title><content type='html'>During this project I’ve learned that it is important to try and limit the number of calls back to the server.&amp;nbsp; I understand it is important to make sure any progress is saved, but it is even more important that the system not constantly rely on asynchronous calls to make future progress. While small calls might not bring down the system, it is important, in my experience, that the fewer calls made to the back-end, the better.&lt;br /&gt;&lt;br /&gt;This rant is brought to you by the remoting services of Flex, Fluorine, and WebOrb.&amp;nbsp; All three have their benefits, which are documented on their respective sites.&amp;nbsp; However there doesn’t seem to be a list of best practices for using them.&amp;nbsp; It is true that a RIA should be Rich, connect to the Internet, and be an Application.&amp;nbsp; But that connection to the Internet shouldn’t happen every turn of the page or every mouse click. In my experience, you can achieve a better user experience if a whole bunch of miniscule calls can be tracked by the app, then uploaded when truly required.&amp;nbsp; Interaction with the backend is important, don’t get me wrong, Flex can only do so much. Yet the code shouldn’t beat a dead horse, like this blog post, with too many of the same calls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-5732264566706066703?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/5732264566706066703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2009/11/remoting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/5732264566706066703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/5732264566706066703'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2009/11/remoting.html' title='Remoting'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-1267961485506157873</id><published>2009-11-12T08:45:00.001-08:00</published><updated>2009-11-12T08:45:35.470-08:00</updated><title type='text'>Miscommunication</title><content type='html'>Has anyone ever read a Harvard Business Review?&amp;nbsp; Or what about a case study?&amp;nbsp; Or anything business related that talks about efficiencies, sales relationships, processes, etc?&amp;nbsp; I’ve read several of them over the last decade, and one of the most important lessons I’ve learned from them is the balance a company must strike between internal and external resources. I’ve learned (oft the hard way) that sales people are happy to go and sell anything and everything to everyone and anyone.&amp;nbsp; However it must be understood that without their efforts, a company probably wouldn’t survive (so what if Beta was better than VHS, their sales team sucked).&amp;nbsp; So in that vein, I also must say that resources that support sales, or develop products that the sales team is responsible for selling, must also be understood.&amp;nbsp; Regardless of product, there is a symbiotic relationship between the two sides, and the most successful organizations are the ones that realize that.&amp;nbsp; The companies that insist on superstar R&amp;amp;D folk, or only go after rockstar sales people often learn the hard way that success isn’t from them.&amp;nbsp; It is from being able to continuously improve a product that customers like, while at the same time increasing the breadth and depth of understanding that the people who interact with the product have.&amp;nbsp; If it means that the Sales department take some time to learn more about the product, then they should.&amp;nbsp; If the other departments want to learn more about the sales process, or management, or what not, then they should, in order to understand why success is defined through teamwork and understanding.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;This long rant is brought to you by too angry Sales and R&amp;amp;D&amp;nbsp; staffers.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-1267961485506157873?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/1267961485506157873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2009/11/miscommunication.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/1267961485506157873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/1267961485506157873'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2009/11/miscommunication.html' title='Miscommunication'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-8710646133638660933</id><published>2009-11-10T06:10:00.001-08:00</published><updated>2009-11-10T07:00:06.103-08:00</updated><title type='text'>Flex Embedded Fonts, Images, and Compile Times</title><content type='html'>A couple of recent projects that I've worked on have had the requirement to add special fonts, and generally this means adding them via CSS, and every time I clean or build my project for testing, the compile speed becomes horrendous (read - compile times went from just a few seconds up to a minute in some cases).&amp;nbsp; This was horrible, especially if all I did was change something simple in the app, like spacing between labels.&amp;nbsp; Other problems included running out of memory in my eclipse environment and CPU consumption.&amp;nbsp; For my own efficiencies, that was just too annoying and aggrevating to deal with.&lt;br /&gt;&lt;br /&gt;I dug around the internet and found a few resources that made some suggestions.&amp;nbsp; Two I found &lt;a href="http://stackoverflow.com/questions/1490803/how-to-reduce-eclipses-memory-usage"&gt;here&lt;/a&gt;. &amp;nbsp; They include changing the heap size of Eclipse and turning off auto-spell checking.&amp;nbsp; While this didn't alleviate everything, it at least has kept my MacBook from freezing up and my workbench from vomiting everywhere.&lt;br /&gt;&lt;br /&gt;The next option I found comes from &lt;a href="http://www.axelscript.com/2008/10/03/improving-compile-times-with-runtime-css/"&gt;axelscript&lt;/a&gt;.&amp;nbsp; His suggestion to improve compile time by getting the font (and possibly images - although he admittedly didn't have time/nor need to test) into a separate project, then compiling it into a swf that would build into the current project's folder.&amp;nbsp; This helps compile times, but it does require a few extra steps and maybe a good look at Flex's StyleManager.&lt;br /&gt;&lt;br /&gt;One more option I found very convenient (especially if you pre-initialise a few fonts or want to lazy-load some fonts) comes from this &lt;a href="http://etcs.ru/"&gt;Russian site&lt;/a&gt;.&amp;nbsp; It provides an excellent loader that allows you to load fonts dynamically (although again, nothing about embedding images) from anywhere, locally or remotely.&amp;nbsp; The setup is extremely easy and can be incorporated dynamically add fonts at runtime.&lt;br /&gt;&lt;br /&gt;What I would really like to know from Adobe is why compile times turn horrendous when adding new fonts.&amp;nbsp; And why do they need to be included in every build, shouldn't there be a simple way to introduce and embed multiple fonts without bloating an app and without killing my compile times?&amp;nbsp; Nothing in Jira points to this as being a bug, just a standard feature.&amp;nbsp; Will these same problems exist in FB4, Catalyst, or FP10?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-8710646133638660933?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/8710646133638660933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2009/11/flex-embedded-fonts-images-and-compile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/8710646133638660933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/8710646133638660933'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2009/11/flex-embedded-fonts-images-and-compile.html' title='Flex Embedded Fonts, Images, and Compile Times'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1377552797269709203.post-2548126363793070801</id><published>2009-11-09T06:25:00.000-08:00</published><updated>2009-11-09T06:27:25.711-08:00</updated><title type='text'>TCPProxy and Grinder</title><content type='html'>I recently was working on a project and it was necessary to see what I was sending across the wire.  Without having done much in the past w/ reading my data while in transit (go figure, I normally only worry about the end results), I needed to know if Flex or my backend was regurgitating my data because the transmission was garbled or what.  To watch what was happening, I started using &lt;a href="http://grinder.sourceforge.net/"&gt;Grinder&lt;/a&gt;.  Grinder's a really easy to use tool: you just download the zip, unzip it, then from a command line, simply type:&lt;br /&gt;&lt;br /&gt;java -cp Downloads/grinder-3.2/lib/grinder.jar net.grinder.TCPProxy -console&lt;br /&gt;&lt;br /&gt;My java from the command line is horrendous, but from what I understand, the first part tells the command line it's a java file to look for, the second part says what it is about to search for, the third part says where, the fourth part says what operation should be invoked, and -console says when you run the engine, pop-up the console (for mac users like me, this last part was crucial because shy of shutting down the terminal, I have no other way of telling the Grinder engine to stop grinding.&lt;br /&gt;&lt;br /&gt;It was also important that I set my browser's proxy configuration to run through 8001, so I made my changes to the settings and now, every page loaded horrendously slow, but grinder was spitting out all the data I needed.&amp;nbsp; (I tried to upload the image, but couldn't get it out...sorry).&lt;br /&gt;&lt;br /&gt;Now I had access to everything I was posting across the wire and what it looked like.&amp;nbsp; Grinder has many other important features than just watching your internet traffic.&amp;nbsp; It can help you record user actions to make test scripts for testing network traffic.&amp;nbsp; It comes w/ an awesome library of test scripts (and if you look hard enough can find some really funny comments)&lt;br /&gt;&lt;br /&gt;Anyways, before I completely sign off on Grinder as being the only tool to use, I'll mention briefly another tool (you have to pay for) that is quite nice.&amp;nbsp; It's called &lt;a href="http://www.charlesproxy.com/"&gt;Charles&lt;/a&gt;, and I must say it does a pretty good job of telling me what resources are being called too often, and does a pretty good job of interpreting AMF.&amp;nbsp; It isn't perfect, doesn't have all the flexibility of Grinder, but again, I didn't pay for it, I just tested it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1377552797269709203-2548126363793070801?l=flexpletives.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://flexpletives.blogspot.com/feeds/2548126363793070801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://flexpletives.blogspot.com/2009/11/tcpproxy-and-grinder.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2548126363793070801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1377552797269709203/posts/default/2548126363793070801'/><link rel='alternate' type='text/html' href='http://flexpletives.blogspot.com/2009/11/tcpproxy-and-grinder.html' title='TCPProxy and Grinder'/><author><name>LordB8r</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_IB4l2fjDZI8/SvmBZq4XkeI/AAAAAAAAABQ/JltDEAN_iU0/S220/LordB8r_avatar.jpg'/></author><thr:total>0</thr:total></entry></feed>
