The Spark BitmapImage component only supports embedded images in Flex 4.0. You could use mx:Image instead if you want to use dynamically loaded images, or you could check out Steven Shongrunden's blog post, http://flexponential.com/2010/03/17/using-non-embedded-images-in-a-spark-bitmapimage/ and see if that helps.
Peter From: [email protected] [mailto:[email protected]] On Behalf Of dorkie dork from dorktown Sent: Wednesday, March 24, 2010 5:14 PM To: [email protected] Subject: Re: [flexcoders] Creating a Flex 4 button skin - need examples Thanks Peter. That worked as is but when I removed the embed directive it seemed does not show anything. I tried this: <s:BitmapImage source="assets/images/close_button.png" source.over="assets/images/close_button.png" source.down="assets/images/close_button.png" width="13" height="13" minHeight="13" minWidth="13"/> Thanks for your help so far. Any idea to get this to work without embedding? On Wed, Mar 24, 2010 at 4:49 PM, Peter DeHaan <[email protected]<mailto:[email protected]>> wrote: Not sure if it is the best/correct way, but this seemed to work for me based on my 2 second testing... Short answer: <s:BitmapImage source="@Embed('assets/images/close_button_up.png')" source.over="@Embed('assets/images/close_button_over.png')" source.down="@Embed('assets/images/close_button_down.png')" /> Long answer: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark<http://ns.adobe.com/flex/spark>" xmlns:mx="library://ns.adobe.com/flex/mx<http://ns.adobe.com/flex/mx>"> <fx:Style> @namespace s "library://ns.adobe.com/flex/spark<http://ns.adobe.com/flex/spark>"; @namespace mx "library://ns.adobe.com/flex/mx<http://ns.adobe.com/flex/mx>"; s|Button#closebutton { skinClass: ClassReference("ClButtonSkin"); } </fx:Style> <s:Button id="closebutton" left="12" top="11" buttonMode="true" useHandCursor="true" mouseChildren="false"/> </s:Application> <?xml version="1.0" encoding="utf-8"?> <s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark<http://ns.adobe.com/flex/spark>" xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minWidth="21" minHeight="21" alpha.disabled="0.5"> <!-- states --> <s:states> <s:State name="up" /> <s:State name="over" /> <s:State name="down" /> <s:State name="disabled" /> </s:states> <!-- host component --> <fx:Metadata> [HostComponent("spark.components.Button")] </fx:Metadata> <fx:Script fb:purpose="styling"> <![CDATA[ /* Define the skin elements that should not be colorized. For button, the graphics are colorized but the label is not. */ static private const exclusions:Array = ["labelDisplay"]; override public function get colorizeExclusions():Array { return exclusions; } override protected function initializationComplete():void { useChromeColor = true; super.initializationComplete(); } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void { var cr:Number = getStyle("cornerRadius"); if (cornerRadius != cr) { cornerRadius = cr; } super.updateDisplayList(unscaledWidth, unscaledHeight); } private var cornerRadius:Number = 2; ]]> </fx:Script> <s:BitmapImage source="@Embed('assets/images/close_button_up.png')" source.over="@Embed('assets/images/close_button_over.png')" source.down="@Embed('assets/images/close_button_down.png')" /> <!-- layer 8: text --> <s:Label id="labelDisplay" textAlign="center" verticalAlign="middle" maxDisplayedLines="1" horizontalCenter="0" verticalCenter="1" left="10" right="10" top="2" bottom="2" /> </s:SparkSkin> From: [email protected]<mailto:[email protected]> [mailto:[email protected]<mailto:[email protected]>] On Behalf Of dorkie dork from dorktown Sent: Wednesday, March 24, 2010 4:28 PM To: [email protected]<mailto:[email protected]> Subject: [flexcoders] Creating a Flex 4 button skin - need examples If my button skin was like this in Flex 3: <fx:Style> Button.closebutton { upSkin: Embed(source="assets/images/close_button_up.png"); downSkin: Embed(source="assets/images/close_button_over.png"); overSkin: Embed(source="assets/images/close_button_down.png"); selectedUpSkin: Embed(source="assets/images/close_button_up.png"); selectedDownSkin: Embed(source="assets/images/close_button_up.png"); selectedOverSkin: Embed(source="assets/images/close_button_up.png"); } </fx:Style> <s:Button style="closebutton" left="12" top="11" buttonMode="true" useHandCursor="true" mouseChildren="false"/> Now, I've tried to do the same thing in a Flex 4 button skin and there is SOOOO much code and all of it is FXG. I've read it and understand it but when I've created my own and stripped all the FXG out there are issues with resizing, issues with positioning (on mouse over) and more. Will someone please create an example equivalent to what the Flex 3 code above is doing? ddfd

