Flex的spark组件可以用skin来设置组件的背景,但是对于如果只想加个背景色,还要搞个skin 类来做,多少有点杀鸡用牛刀的赶脚,所以能否像Flex3中那样一个blackground就搞定呢?或者自己在组件中直接写个皮肤你?
如果用<s:Rect/>等来定义一块区域的颜色,那么你就只能用绝对定位,让其撑满整个组件。
?
<?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"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955"
minHeight="600"
mouseUp="application1_mouseUpHandler(event)"
mouseOver="application1_mouseOverHandler(event)"
mouseDown="application1_mouseDownHandler(event)"
mouseOut="application1_mouseOutHandler(event)"
xmlns:render="com.render.*" xmlns:com="com.*">
<fx:Script>
<![CDATA[
protected function button1_clickHandler(event:MouseEvent):void
{
currentState = currentState == "disable" ? "up" : "disable";
}
protected function application1_mouseUpHandler(event:MouseEvent):void
{
currentState = "over";
}
protected function application1_mouseOverHandler(event:MouseEvent):void
{
currentState = "over";
}
protected function application1_mouseDownHandler(event:MouseEvent):void
{
currentState = "press";
}
protected function application1_mouseOutHandler(event:MouseEvent):void
{
currentState = "up";
}
]]>
</fx:Script>
<s:states>
<s:State name="over"/>
<s:State name="up"/>
<s:State name="press"/>
</s:states>
<mx:Text text="111111111111111111"/>
<s:Rect id="border" left="0" right="0" top="0" bottom="0">
<s:stroke>
<s:SolidColorStroke weight="1" color="#00ffff"/>
</s:stroke>
</s:Rect>
<s:Rect id="fill" left="10" right="10" top="10" bottom="10">
<s:fill>
<s:SolidColor id="backgroupColor" color.up="0xff0000" color.over="0xffff99" color.press="0x000000"/>
</s:fill>
</s:Rect>
<mx:Text text="111111111111111111" fontSize="23"
x="{(this.width - test.width)/2}" y="{(this.height - test.height)/2}"
id="test"/>
<s:Button label="Click" click="button1_clickHandler(event)" top="10" left="10"/>
<com:component width="100" height="100"/>
</s:Application>
?你也可用graphics来画图,因为graphics是每个显示组件的属性,它本来就属于最底层的,所以你不用担心层次结构。(对于application来说,不能用graphics来画背景)
?
?
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
override public function validateDisplayList():void
{
super.validateDisplayList();
this.graphics.clear();
this.graphics.beginFill(0xff0000,0.5);
this.graphics.drawRect(0,0,400,400);
this.graphics.endFill();
}
]]>
</fx:Script>
</s:Group>
?
?
原文:http://luhantu.iteye.com/blog/2162497