::bump:: Anyone?
--- In flexcoders@yahoogroups.com, "stldvd" <stldvd@...> wrote: > > Hi All, > > I'm trying to skin the thumb of an hSlider component. Problems: > 1) the thumb is resized to be pixelated and grainy. > 2) Its position is incorrect. Instead of the new button being cleanly > bisected by the track, it is just below the track, tangential to it. And > (presumably because its registration point is at upper left) when I slide it > all the way to the right, it goes off the end of the track until its left > edge is at the track's right edge. This also messes up calculations for the > hSlider.value property. Here's code for the entire test project: > //HSliderTest.mxml: > <?xml version="1.0" encoding="utf-8"?> > <s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" > > xmlns:s="library://ns.adobe.com/flex/spark" > firstView="views.HSliderTestHomeView" applicationDPI="160"> > <fx:Declarations> > <!-- Place non-visual elements (e.g., services, value objects) > here --> > </fx:Declarations> > </s:ViewNavigatorApplication> > > //SliderSkin.mxml. Only modified the <s:Button tag at the end: > <?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" > xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minHeight="11" > alpha.disabled="0.5"> > > <fx:Metadata> > <![CDATA[ > /** > * @copy spark.skins.spark.ApplicationSkin#hostComponent > */ > [HostComponent("spark.components.HSlider")] > > ]]> > </fx:Metadata> > > <fx:Script fb:purpose="styling"> > /* Define the skin elements that should not be colorized. > For slider, the skin itself is colorized but the individual parts > are not. */ > > static private const exclusions:Array = ["track", "thumb"]; > > /** > * @private > */ > override public function get colorizeExclusions():Array {return > exclusions;} > > /** > * @private > */ > override protected function initializationComplete():void > { > useChromeColor = true; > super.initializationComplete(); > } > </fx:Script> > > <fx:Script> > /** > * @private > */ > override protected function measure() : void > { > // Temporarily move the thumb to the left of the Slider so > measurement > // doesn't factor in its x position. This allows resizing the > // HSlider to less than 100px in width. > var thumbPos:Number = thumb.getLayoutBoundsX(); > thumb.setLayoutBoundsPosition(0, thumb.getLayoutBoundsY()); > super.measure(); > thumb.setLayoutBoundsPosition(thumbPos, thumb.getLayoutBoundsY()); > } > </fx:Script> > > <s:states> > <s:State name="normal" /> > <s:State name="disabled" /> > </s:states> > > <fx:Declarations> > <!--- The tooltip used in the mx.controls.Slider control. > To customize the DataTip's appearance, create a custom > HSliderSkin class.--> > <fx:Component id="dataTip"> > <s:DataRenderer minHeight="24" minWidth="40" y="-34"> > <s:Rect top="0" left="0" right="0" bottom="0"> > <s:fill> > <s:SolidColor color="0x000000" alpha=".9"/> > </s:fill> > <s:filters> > <s:DropShadowFilter angle="90" color="0x999999" > distance="3"/> > </s:filters> > </s:Rect> > <s:Label id="labelDisplay" text="{data}" > horizontalCenter="0" verticalCenter="1" > left="5" right="5" top="5" bottom="5" > textAlign="center" verticalAlign="middle" > fontWeight="normal" color="white" fontSize="11"> > </s:Label> > </s:DataRenderer> > </fx:Component> > </fx:Declarations> > > <!--- The default skin class is HSliderTrackSkin. > @copy spark.components.supportClasses.TrackBase#track > @see spark.skins.spark.HSliderTrackSkin --> > <s:Button id="track" left="0" right="0" width="11" height="11" > tabEnabled="false" > skinClass="spark.skins.spark.HSliderTrackSkin" /> > > <!--- The default skin class is HSliderThumbSkin. > @copy spark.components.supportClasses.TrackBase#thumb > @see spark.skins.spark.HSliderThumbSkin --> > <s:Button id="thumb" top="0" bottom="0" height="11" width="11" > tabEnabled="false" skinClass="skins.SliderThumbSkin" /> > </s:SparkSkin> > > //SliderThumbSkin.mxml > > <?xml version="1.0" encoding="utf-8"?> > <s:SparkButtonSkin xmlns:fx="http://ns.adobe.com/mxml/2009" > xmlns:s="library://ns.adobe.com/flex/spark" > > xmlns:fb="http://ns.adobe.com/flashbuilder/2009" > minWidth="21" > minHeight="21" > alpha.disabled="0.5"> > > <fx:Metadata> > <![CDATA[ > /** > * @copy spark.skins.spark.ApplicationSkin#hostComponent > */ > [HostComponent("spark.components.Button")] > ]]> > </fx:Metadata> > > <!-- states --> > <s:states> > <s:State name="up" /> > <s:State name="over" /> > <s:State name="down" /> > <s:State name="disabled" /> > </s:states> > <s:Image source.up="assets/PurpleOnlyCircle60x60.png" > source.over="assets/PurpleOnlyCircle60x60.png" > source.down="assets/PurpleOnlyCircle60x60.png" > source.disabled="assets/PurpleOnlyCircle60x60.png" > width="60" > height="60"/> > </s:SparkButtonSkin> > > Can anyone can see why this doesn't display correctly? > > Thanks! >