Archive

Author Archive

Twitter buys TweetDeck for $40-50 Million

May 24th, 2011 4 comments

If you’re not aware of TweetDeck, it started out as an AIR application for the desktop created by a Flex developer, Iain Dodsworth who is still CEO. Rumors have been going around for a couple of months about this acquisition but it’s been confirmed on a few different sites now.

I used TweetDeck for a minute when it first came out and thought it needed some work. They’ve come a LONG way. It’s nice to see that a Flex application can sell for $40-$50 million (cash & Twitter stock).

http://money.cnn.com/2011/05/23/technology/twitter_acquires_tweetdeck/

Another nice win for Flex ;)

Adobe Flash Player 10.3 released

May 13th, 2011 68 comments

“We’re excited to announce that Flash Player 10.3 is now available for Android, Linux, MacOS, and Windows. Flash Player 10.3 improves stability, enhances security and user privacy protection, and provides new desktop video and audio capabilities for enterprises and developers.

On the device side, with the rollout of Android 3.1 users of Honeycomb tablets like the Motorola XOOM will experience performance improvements introduced in Flash Player 10.2.”

http://blogs.adobe.com/flashplayer/

Good job Adobe…keep it going!

Flex 4.5 and FashBuilder 4.5 Released!

The Flex 4.5 SDK, FlashBuilder 4.5 and Adobe Creative Suite 5.5 (along with Flash Catalyst) are now available for download!

The major enhancement to Flex 4.5 is the ability to export ActionScript-only based projects to iOS and Blackberry and Flex applications to Android. This update does not include the ability to port Flex apps to iOS or the Blackberry Playbook quite yet (that update is coming in June).

New features released in this version of Flex include:
• Spark DataGrid
• Spark Form
• Spark Image and BitmapImage enhancements
• Spark Formatters
• Spark Validators
• Video and text enhancements
• Reduced memory consumption for full builds
• Reduced compilation time for full and incremental builds
• Improving the compiler’s RSL linking logic

I’m excited for this release and I’m excited for the next update to Flex coming in June. So excited that I’m actually considering buying an iPad (!)…something I honestly never though I would do but after getting numerous complaints of the inability to visit Xuland on the iPad, I determined its high-time I created Android and Apple app versions as soon as possible.

Congrats Adobe on another big win!

http://blogs.adobe.com/flex/2011/05/flex-4-5-sdk-flash-builder-4-5-and-flash-catalyst-cs-5-5-now-available.html

Categories: Adobe AIR, Adobe Flash, Adobe Flex Tags:

Adobe AIR 2.6, And All Was Right With The World

March 22nd, 2011 11 comments

Adobe AIR 2.6 was released officially yesterday.

In a nutshell:

  1. Adobe has been trying to replicate the success of the Flash ideology on mobile devices: “Write once, run everywhere”.
  2. Adobe already had the Packager for iPhone (PFI) functionality built into Flash CS5 which allowed developers to code in ActionScript and produce native iPhone IPA files installable through iTunes and uploadable thru iTunes Connect (now that Apple lifted the ban on 3rd party apps)
  3. Adobe created the AIR 2.5 runtime to run on Android mobile devices and began introducing the ability to write Flex & ActionScript software using the next version of Flash Builder “Burrito” (I’ve been playing with this and it works well)

Now with AIR 2.6, the PFI has been bundled into the ADT (AIR Developer Tool).

AIR 2.6 includes a host of feature upgrades to better access iPhone’s features (microphone, retina support, multitasking, camera support, etc) as well as Android.

You can also debug directly on the mobile phone thru a USB cable (imagine tapping a button on your phone and hitting a breakpoint in Flash Builder).

This will also mean Flash Builder “Burrito” will get another option to compile your app to iOS.

Pretty slick ;)

http://blogs.adobe.com/cantrell/archives/2011/03/everything-new-in-adobe-air-2-6.html

Categories: Adobe AIR, Adobe Flash, Adobe Flex Tags:

Just received a new Flex 4 book to review

January 28th, 2011 87 comments

I’ll post a review here on my blog in about a month ;)

Categories: Adobe Flex, General Tags:

Xuland: Added Twitter-like ability to “follow”

January 8th, 2011 3 comments

After a lengthy hiatus due to holidays and vacation, I returned to working on my experimental Flex 4 & Swiz social-networking site, Xuland, by adding the Twitter-like ability to follow people.

Only available to logged-in users, the “following” tab allows you to view comments by people that aren’t necessarily in the location shown on the map. There is also a new “followers” tab which allows you to view comments by people that are following YOU.

Although I am still ironing out small bugs here and there, the functionality works rather well. Give it a whirl and let me know what you think!

Categories: Adobe Flex, General, Xuland Tags:

Flash Player Penetration Study

January 6th, 2011 11 comments

Interesting note from Adobe today:
http://blogs.adobe.com/flashplayer/2011/01/new-flash-player-penetration-stats.html

The study reveals Flash Player 10.1 (just this version) has reached 85% penetration…breaking previous records of market penetration by other versions. There have also been over 3 million downloads of Flash Player 10.1 from the Android market.

The main take-away from this is that more people are upgrading to the next version of Flash Player faster than ever before, which is good news when Flash 10.2 comes out which includes GPU-hardware acceleration (currently Flash uses all CPU), multiple-monitor support and 3D API’s.

Now imagine playing a fully 3D first-person shooter from an average website (no download necessary) with no CPU-utilization ;)

Categories: General Tags:

FLEX: How to create a wrapping LinkButton

December 1st, 2010 11 comments

For my experimental Flex4-powered social networking application Xuland, I wanted to display local news specifically tailored to fit the location that was currently displayed on the map.

A service call to obtain a local newsfeed was easy enough, but I wanted each news title to appear underneath the Xuland map as a link. Using the default Flex LinkButton resulted in something close to what I wanted. Clicking each link opened up the local news story in a separate browser window or tab, however if the title of the news story was longer than the width I had allotted for the LinkButton, the resulting title was cut off:

I needed the LinkButton to essentially wrap without truncating the title. Figuring out how to do so was not easy but after a little digging and a little experimenting, here’s the resulting code.

First, we need to create a non-truncating UITextField that will serve as our textField component within the LinkButton class. The only purpose of this custom UITextField class is to override the truncateToFit Boolean so that it always returns false:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package
{
	import mx.core.UITextField;
 
	public class NonTruncatingUITextField extends UITextField
	{
		public function NonTruncatingUITextField ()
		{
			super();
		}
 
		override public function truncateToFit(s:String = null):Boolean
		{
			return false;
		}
	}
}

Next, we need to utilize that new UITextField class in a customized version of our LinkButton. We’ll extend LinkButton and call it WrappingLinkButton. The primary purpose of this class is to override createChildren and set the textField component property to point to our new NonTruncatingUITextField class.

We’ll also override updateDisplayList to change the y-index of our textField so that it appears higher on the button. At this point, we also need to increase the height of the button to fit our newly wrapped textField. You’ll notice I added a little more logic to underline the text when you mouseOver and to zero out the leading (space between characters):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package
{
	import flash.display.DisplayObject;
	import flash.events.MouseEvent;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
 
	import mx.controls.LinkButton;
	import mx.core.UITextField;
 
	public class WrappingLinkButton extends LinkButton
	{
		private var m_textFormat:TextFormat;
 
		public function WrappingLinkButton()
		{
			super();
			addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
			addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
 
			m_textFormat = new TextFormat();
			m_textFormat.leading = 0;
		}
 
		private function onMouseOver( event:MouseEvent ):void
		{
			setStyle( "textDecoration", "underline" );
		}
 
		private function onMouseOut( event:MouseEvent ):void
		{
			setStyle( "textDecoration", "none" );
		}
 
		override protected function createChildren():void
		{
			super.createChildren();
 
			textField = new NonTruncatingUITextField();
			textField.styleName = this;
			textField.multiline = true;
			textField.wordWrap = true;
			textField.autoSize = TextFieldAutoSize.LEFT;
			addChild(DisplayObject(textField));
		}
 
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
		{
			super.updateDisplayList(unscaledWidth, unscaledHeight);
			textField.y = (this.height - textField.height ) >> 1;
			height = textField.height + getStyle("paddingTop") + getStyle("paddingBottom");
			textField.setTextFormat( m_textFormat );
		}
	}
}

Now we just need to drop the component into our view. I use mine within a custom ItemRenderer component that serves as the item renderer for a DataGroup component that lists my news items vertically:

1
2
3
4
5
6
7
<component:WrappingLinkButton
          width="245"
          label="{ m_news.title }" 
          textAlign="left"
          paddingBottom="0" paddingTop="0"
          paddingLeft="0" paddingRight="0"
          click="onClick()"/>

My click handler simply calls navigateToURL to send our user to the story of their choice. And this is our resulting newsfeed in Xuland:

Hope this helps others out there looking to create their own wrapping LinkButtons (or Buttons). ;)

To read more about Xuland, visit my other blog post regarding this application.

Erich

Categories: Adobe Flex, Xuland Tags:

Adding a Facebook “like” button to a Flash/Flex Application

November 17th, 2010 36 comments

Mission: Add a Facebook “like” button to my experimental Flex social networking site Xuland.

I initially thought, “Boy this must be a piece of cake. Surely thousands of other developers have already figured this out!”. Boy was I wrong.

The best example I could find on this specific topic was http://labs.byhook.com/2010/08/03/facebook-like-button-in-flash/. Spend a good half hour digesting the contents of that blog posting and you’ll be ready to scratch the idea altogether.

I wanted a simple implementation that I could knock out in less than an hour. I figured why not just use an iframe!

Here’s the steps:

First, go to http://developers.facebook.com/docs/reference/plugins/like

Fill out the form to get your special iframe code

Next, open up your Flex application’s HTML wrapper (e.g. index.template.html) in FlexBuilder

Copy and paste the iframe code (from above) into the HTML template. I put mine right under the <div id=”flashContent”> section.

1
2
3
4
5
6
7
8
9
<div id="flashContent" style="z-index:-1">
  ...
</div>
 
<iframe 
     src="<< insert your custom facebook like URL here >>" 
     scrolling="no" frameborder="0" 
     style="border:none; overflow:hidden; width:100px; height:21px; z-index:99; position: absolute; top: 0px; left: 100;" 
     allowTransparency="true"></iframe>

Notice the iframe style declaration. Make sure z-index=99, then you can use CSS to position your like button exactly where you want it.

Also notice the flashContent div style declaration. Set its z-index = -1.

In the SWFObject section, add a param for “wmode”. Set it to “transparent”.

1
2
3
4
5
6
7
var params = {};
params.wmode = "transparent";
swfobject.embedSWF(
  "${swf}.swf", "flashContent", 
  "${width}", "${height}", 
  swfVersionStr, xiSwfUrlStr, 
  flashvars, params, attributes);

In the body tag, set the z-index=0

1
<body style="position:relative;left:0px;top:0px;z-index:0;">

That’s it!

The result should look something like this:

Good luck with your implementation!

To read more about Xuland, visit my other blog post regarding this application.

Erich

Categories: Adobe Flash, Adobe Flex, Xuland Tags:

XULAND: World’s First FLEX 4 Based Social Networking Application?

November 4th, 2010 39 comments

Truth is, I’m not sure if this is the technically the world’s “first” Flex-based social networking application, but I can say that I haven’t see anything else like it in Flex – so there’s a good chance it is. Nevertheless, hopefully the title was enough to grab some attention ;)

I came up with the idea for Xuland a year ago. At the time I simply wanted to come up with a project that would allow me to dive into the Flex 4 Beta and try out some new frameworks (other than Cairngorm). I chose Swiz for its “brutal simplicity” and I was immediately impressed.

I present this first to the greater Flex community as I’m really interested in feedback at this stage of its development. Does it make sense? Does it load fast?

My biggest concern: determining whether Flash was the right platform for a site like this. Honestly, I don’t see why not. Flex is a great framework. Flash is a great multimedia platform. Add a little social networking features and you could have the makings of something great.

I wasn’t able to attend MAX this year although I did enter Xuland into the 2010 MAX Awards. There were several other amazing sites that Adobe chose over Xuland and I don’t blame them. There truly is some fantastic talent out there and I feel blessed to even be remotely part of this group.

To put it simply, Xuland is a social network centered on location, rather than a friend’s list.

It started off as a way to get to know your neighbors…the people that are most likely *not* on your friend’s list. I’ve always thought Facebook was a great way to re-connect with old friends and family (not “old family”, sorry Mom) but you wouldn’t necessarily meet new people on Facebook. I remember back in the days of MySpace when random strangers would friend each other…some folks had thousands of “friends”. It was always so bizarre to me. I’m not sure if that same trend has crossed over into Facebook since its advent of fan-pages but still sites like these didn’t feel like the appropriate place to establish new friends.

A better opportunity arose through Yelp. Yelp centers itself on geography. You can see reviews of the restaurant down the street which is fantastic but it was difficult to carry on a conversation with past reviewers. Sure there’s message boards, but it would be nice to carry on a real-time conversation with someone in your same town that you did not already have a past relationship with (i.e. “on your friend’s list”).

Xuland eventually morphed into a FLASH-ier alternative to Craigslist, complete with a commenting & rating engine, Google map that pools postings into the comment stream based on location and selected radius, a built-in ad & local event submittal system and there’s even a simple image editor. No, this isn’t your father’s Craigslist.

I’m going to add a lot more, including extending the project to include mobile. What I’ve done so far took a lot of work (spare time with a family, mind you) but I’m happy to keep chugging forward as long as the site finds some real use out there.

What I really hope is to prove that Adobe Flash & Flex can be used for much more than dashboard and charting widgets or for unseen back-office intranet apps.

I had a lot of fun exploring Flex 4′s new skinning architecture, the Swiz inversion-of-control framework, the cloud technology that I’m using to host Xuland and many other bits and pieces of knowledge I had to find to assemble this all together.

I don’t think the site is ready for global public consumption quite yet. There’s a lot of little details I need to iron out but it works for the most part. I invite anyone reading to try it out and let me know what you think!

http://www.xuland.com

The map should geolocate to your general area, but it won’t be exact. If it’s off, drag the map around and set your new default location (you’ll have to login).

You can also (change) the map to anywhere else in the world which is nice. Talk to folks in Munich, or Paris. Change the map zoom, too. As the radius changes, so does the number of viewable comments. The red dot in the middle essentially shows the center of the map around which it pools comments.

Login with your Facebook or other social networking accounts, or create your own Xuland account via the registration form. Try posting a comment, attach an image, or real estate posting. There are many categories similar to what you’d find on any classified ads website. You can also post a local event (I got a little tired of getting invited on Facebook to events that were in other cities!).

I’ll post more on this blog and on Xuland’s own Tumblr blog. It’s getting a little difficult juggling all of this so bear with me if I seem a little slow, otherwise thanks so much for reading and trying out Xuland.

Flex: Validating a checkbox using StringValidator

November 3rd, 2010 19 comments

Thought this might help someone. I had a small task to add validation for a “terms and conditions” checkbox for a work project today and after researching a couple of ways to do that (easily), I found this clever trick.

Use the built-in Flex mx:StringValidator!

By pointing to the selected property of the checkbox component, then validating the length of its string value you can effectively validate a checkbox field without having to extend Validator and create your own customized component.

1
2
3
4
5
6
7
8
<mx:StringValidator 
	id="validatorTermsAndConditions"
	source="{chkTermsAndConditions}" 
	required="true" 
	property="selected" 
	maxLength="4" 
	requiredFieldError="You must agree to the Terms and Conditions." 
	tooLongError="You must agree to the Terms and Conditions."/>

Nifty!

Categories: Adobe Flex Tags:

Flex: How to execute a method from an htmlText anchor

October 24th, 2010 6 comments

With Flex, I learn something new every day.

Today I wanted to add a link to the htmlText property of an mx:Text component. However, I wanted the link to actually execute a function rather than navigate to some external content.

When I’ve needed this in the past, I’ve had to very carefully layout some Text components inline with a LinkButton to give the appearance of a homogeneous flow of text, but this was clunky and I figured there had to be a better way.

The mx:Text component has a built-in event listener property called “link”:

1
<mx:Text link="onLinkClick(event)"/>

You can dispatch link events from your anchor href tags embedded in your htmlText. The event type can be passed through the listener to the handler to accommodate multiple event types:

1
2
3
4
5
6
7
<mx:Text link="onLinkClick(event)">
	<mx:htmlText>
		<![CDATA[
			This is my HTML.  I can <a href="event:myEventType">link</a> this text to execute an actionscript method.
		]]>
	</mx:htmlText>
</mx:Text>

The handler can then use the text property of the TextEvent to use in a switch or other conditional if your htmlText contains multiple links, or you can skip passing the event to the handler altogether if you wish.

1
2
3
4
5
6
7
private function onLinkClick( event:TextEvent ) : void
{
	if ( event.text == "myEventType" )
	{
		//do something
	}
}

This is incredibly simple to implement and would have come in sooo handy in the past.

C’est la vie ;)

Categories: Adobe Flex Tags:

Flex: Manually centering a popup based on browser width & height

September 3rd, 2010 18 comments

Most Flex developers know that the default PopUpManager in Flex has a centerPopUp method that allows you to center the popup over the display object passed in through the method signature:

1
2
3
var _popup:MyPopup = new Popup();
PopUpManager.addPopUp( _popup, this );
PopUpManager.centerPopUp( this );

You may even switch out the “this” reference and replace with “parent” or “parent.parentApplication” to center the popup on the entire application.

This can be especially true if you’re opening a popup from a small component in your application and don’t necessary want the popup to get centered on that one single component.

Unfortunately, if the dimensions of your parent Application are larger than the dimensions of the viewable browser window, you will have to center the popup manually rather than use the built-in centerPopUp() function.

Here’s how I center popups manually in Flex:

First, in your HTML template, I create a JavaScript function to return the browser width and height. I found this handy function on the web somewhere and it seems to do the trick:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function getBrowserHeight()
{
	var winW = 630, winH = 460;
 
	if (parseInt(navigator.appVersion)>3) {
	 if (navigator.appName=="Netscape") {
	  winW = window.innerWidth;
	  winH = window.innerHeight;
	 }
	 if (navigator.appName.indexOf("Microsoft")!=-1) {
	  winW = document.body.offsetWidth;
	  winH = document.body.offsetHeight;
	 }
	}
 
	return winH;
}

In this case, it’s only returning height (which I’m mostly interested in), however you can modify it to return both attributes if you’d like.

In Flex, I make a call to JavaScript using ExternalInterface during application startup and store that value somewhere (say on the Model) where I can access it later:

1
model.browserHeight = ExternalInterface.call( "getBrowserHeight" );

Now, whenever I open a popup, I use the browserHeight I’ve stored on the Model and manually compute a centered position on the screen:

1
2
3
4
5
6
7
8
9
10
/**
 * Opens this popup
 */
public static function open( parent:UIComponent, model:MyModel) : void
{
	var _popup:MyPopup= new MyPopup();				
	PopUpManager.addPopUp( _popup, parent.parentApplication as DisplayObject, true );
	_popup.y = ( model.browserHeight / 2 ) - ( _popup.height / 2 );
	_popup.x = ( ((parent.parentApplication.width) / 2) - (_popup.width / 2) ); 
}

In this example, I place a static function within the popup class itself, which nicely encapsulates that logic. I also pass in some UIComponent. This is used mostly to get access to the parentApplication object, which I can use to figure out the application’s total width.

As you can see, by dividing the application width and height, then subtracting the popup’s width and height, you can manually center the popup in the visible area of the browser regardless of the application’s full height (which could be thousands of pixels high in some scrollable instances).

Opening the popup from a view is as simple as calling the static function:

1
SubmitAdPopup.open( this, model );

I’ve run into this situation quite often in various Flex applications so I hope this may help others who finds themselves in the same boat.

Opinions? I’m curious in seeing how others solved this riddle. ;)

Categories: Adobe Flex Tags:

Flex : Allowing mouse events to “pass through” an overlay

August 10th, 2010 29 comments

I ran into an issue today I didn’t immediately have an answer for.

I added an overlay to the map of my Xuland flex-based social networking tool which resembled a radar (concentric circles, tinted slightly green):

Xuland Radar

Before adding the radar overlay, I could drag the map as normal, however after adding the overlay atop the visible map area, the map no longer responded to mouse drag events.

Before writing a lot of code to catch and re-dispatch mouse events from the overlay to the map, I admit I felt a little silly after discovering a simple property that just needed to get added to my overlay:

1
2
3
4
<map:RadarOverlay
	id="radar"
	buttonMode="true" useHandCursor="true"
	mouseEnabled="false"/>

As the API mentions: “Specifies whether this object receives mouse messages. The default value is true, which means that by default any InteractiveObject instance that is on the display list receives mouse events. If mouseEnabled is set to false, the instance does not receive any mouse events. Any children of this instance on the display list are not affected. ”

And it worked perfectly!

Categories: Adobe Flex, Xuland Tags:

Flex 4: Switching to Railo from ColdFusion

July 5th, 2010 5 comments

With the Xuland Flex-based social networking application I’ve been working on for the past eight months, I decided to switch things up on the back-end, most notably in the services layer where I’ve been using ColdFusion 9 for my data-access objects.

ColdFusion has been a perfect fit for Flex since I had used the software quite extensively for much of my programming career. However, as I prepare Xuland for go-live (August 13th – which also coincides with the Adobe MAX Awards deadline for entry date), I realized that without a license for the software I would be restricted to shared hosting services – a solution that would not work in the long-run, especially if Xuland were to suddenly gain popularity.

As I considered dedicated or “cloud” hosting, I would have to either buy an $8,000 ColdFusion license (umm, no) or switch to an alternative. BlueDragon piqued my interest, but it unfortunately does not yet support AMF. Without the ability to remote, my application would launch already dead in the water.

Another alternative, completely unknown to me before today, is Railo (pronounced “Rhylo” after a fictitious alien dog in Star Trek).

“Railo is a free, open-source alternative for ColdFusion application development.” It currently supports the AMF3 format (whereas in the last version it only supported AMF0) and comes shipped with its own application server and servlet engine (Caucho Resin). In fact, the Express versions can be downloaded, configured for Flex and launched within minutes. The best part is it’s completely FREE.

I’ve since switched from ColdFusion to Railo and with hardly any tweaking, Xuland was running against Railo executing the same CFC’s I had already written for ColdFusion 9. After starting the Railo service locally the first time, it automatically created the necessary Flex remoting-config and services-config XML files needed in the WEB-INF directory. Remoting worked perfectly, and I dare say it seems a bit faster (I have not run any benchmarks quite yet, however).

If you’re looking for a solution similar to this, definitely consider Railo as it works as well as ColdFusion without the sheer cost.

Categories: Adobe Flex, ColdFusion, General, Xuland Tags:

Flex Random Password Generator

June 26th, 2010 143 comments

Here’s a nice static method for creating random passwords…should the need ever arise ;)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static function generateRandomPassword( length:int = 7 ) : String
{
	//characters to use in password
	var _salt : String = "abchefghjkmnpqrstuvwxyz0123456789ABCHEFGHJKMNPQRSTUVWXYZ";
 
	//initialize vars
	var _password : String = '';			
	var _i:Number = 0;
 
	//loop 
	while ( _i <= length )
	{
		var _num : Number = Math.random() * _salt.length;
		_password += _salt.charAt( _num );
		_i++;
	}
 
	return _password;
}

Enjoy!

Categories: Adobe Flash, Adobe Flex Tags:

Flex 4: Changing the “displayAsPassword” default character

Today I ran into a situation where I wanted to display my password characters as a bullet versus the default asterisk (“*”).

I thought this would be pretty simple to do but realized after digging through the Flex 4 SDK that there was no public property I could set to change this. I tried hacking commitProperties and a couple of other methods but came up short in those areas as well until I found the exact spot in the Flex libraries where this character was defined:

RichEditableText.as (line 679)

1
2
3
4
    /**
     *  @private
     */
    mx_internal var passwordChar:String = "*";

A-ha! I see here that it’s prefixed with the “mx_internal” namespace and I remembered from other examples around the web that you can easily tap into that namespace and modify properties not normally meant to be modified.

Luckily, I had already extended the TextInput class for various other reasons and decided to add an event listener for the CREATION_COMPLETE lifecycle event of the component. This was added in the constructor:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import mx.core.mx_internal;
 
/**
 * Constructor
 */
public function myTextInput()
{
	super();
 
	this.addEventListener( FlexEvent.CREATION_COMPLETE, onCreationComplete );
}
 
private function onCreationComplete( event : FlexEvent ) : void
{
	//change internal passwordChar to a bullet versus an asterisk
	this.textDisplay.mx_internal::passwordChar = "●";
}

…and voila! By tapping into the mx_internal namespace, I found I could modify the normally private variable “passwordChar” and set it to something I preferred better (in this case, the bullet point used in some sites like Twitter).

Hope this helps someone!

Categories: Adobe Flex Tags:

Adobe Targets Apple in New Ad Campaign

May 13th, 2010 95 comments

Today, Adobe launched a nationwide advertising campaign promoting “choice” and criticizing those (read: Apple) that try to control it.

Adobe Loves Apple

In addition to the ad campaign, a new web page was added to Adobe’s website: http://www.adobe.com/choice/?sdid=GXRUX, which discusses the Open Screen Project, and includes a Flash fact sheet (no doubt, from Adobe product manager Mike Chambers), and a message from Adobe’s founders John Warnock and Chuck Geschke.

This is undoubtedly in response to Steve Job’s memo published on Apple’s website, http://www.apple.com/hotnews/thoughts-on-flash/ back on April 29th. The letter, which publicly blasts Flash as being a closed, proprietary technology that is no longer relevant or in “touch” with today’s mobile devices has received a massive response from the Adobe community and today from Adobe, itself.

Read other posts about this subject:

Mashable: http://mashable.com/2010/05/13/adobe-responds-flash/

NY Times: http://bits.blogs.nytimes.com/2010/05/13/next-round-in-the-adobe-apple-fight/

Categories: General Tags:

Apple vs Adobe Peace Plan from InfoWorld

May 10th, 2010 102 comments

InfoWorld has published a four-point “peace plan” aimed at reducing collateral damage from the current Apple vs Adobe war.

The article discusses the history between the two companies, outlines a compromise and allows readers to vote on the proposal.

http://www.infoworld.com/print/122878

Categories: Adobe Flash, General Tags:

The Future of Web Content – HTML5, Flash & Mobile Apps

I didn’t get a chance to read this article back in February by ColdFusion-mastermind Jeremy Allaire, but it’s a good one nevertheless and still very relevant for those of us in the Flash community.

Give it a try:
The Future of Web Content – HTML5, Flash & Mobile Apps

Categories: Adobe Flash, General Tags: