•  
  •  

Using useHandCursor in Flex

While working on a recent Flex project I found a code sample that someone created because they were having trouble getting the useHandCursor to work. It was pretty obvious what they were trying to do, take a look:

<mx:Canvas width="176" height="87">
<mx:Link height="100%" width="100%" />
<mx:Image width="100%" height="100%"
source="@Embed(''images/logo.swf'')"
mouseDown="doThis()" />
</mx:Canvas>

They obviously wanted to call an event handler when someone clicked on the image, but because they couldn”t get useHandCursor to work, they used an alternative method, albeit not all that pretty.

The solution is rather simple though. Just add a mouseOver event to the component and set it to the following:

mouseOver="event.target.onRelease=null;
event.target.useHandCursor=true;"

Works pretty much anywhere.

UPDATED For Flex 2:

You may have noticed that the above does not work in Flex 2. This process has been replaced. It is now done through a set of properties that are inherited from the Sprite class.

useHandCursor="true"
buttonMode="true

Add these properties to your component and you”re all set. Now, that was easy!

About Rob Rusher

In his role as Principal Consultant for On3, Rob leads an software development practice to help his clients build rich Internet applications for the desktop, browser, and mobile devices, and to rapidly increase their knowledge and skills to better support their organization's goals. Rob is an Adobe Certified Expert, Community Professional, and Certified Instructor. He has taught and mentored the technical teams at HP, Overstock, Paychex, SAS, the FedEx, and other Government and Fortune 100 organizations. Rob has co-authored four best-selling books on building secure, cutting-edge and rapidly developed applications using Adobe AIR, ColdFusion and Flex. He is very active in organizing and speaking at RIA, Adobe LiveCycle, mobile conferences, and user groups. In addition to growing his software consulting practice, On3, Rob has been building expertise in rich client application development on a wider variety of devices and platforms that extend the applications to change the way we all create and live.