public class ColorLabel extends Label
{
private var colorValue:Number = -1;
public function ColorLabel()
{
super();
}
public function setColorValue(colorValue:Number):void
{
this.colorValue = colorValue;
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if(colorValue>=0){
drawColor(colorValue);
}
}
private function drawColor(colorValue:Number):void
{
this.graphics.beginFill(colorValue);
this.graphics.drawRect(this.textField.x,this.textField.y,this.textWidth ,this.textHeight);
this.graphics.endFill();
}
}
* <p>In general, components do not override the <code>validateProperties()</code>,
* <code>validateSize()</code>, or <code>validateDisplayList()</code> methods.
* In the case of UIComponents, most components override the
* <code>commitProperties()</code>, <code>measure()</code>, or
* <code>updateDisplayList()</code> methods, which are called
* by the <code>validateProperties()</code>,
* <code>validateSize()</code>, or
* <code>validateDisplayList()</code> methods, respectively.</p>
Implementing the commitProperties() method
You use the commitProperties()
method to coordinate modifications to component properties. Most often,
you use it with properties that affect how a component appears on the
screen.
Flex schedules a call to the commitProperties() method when a call to the invalidateProperties() method occurs. The commitProperties() method executes during the next render event after a call to the invalidateProperties() method. When you use the addChild() method to add a component to a container, Flex automatically calls the invalidateProperties() method.
Calls to the commitProperties() method occur before calls to the measure() method. This lets you set property values that the measure() method might use.
Implementing the measure() method
The measure() method sets the default component size, in pixels, and optionally sets the component's default minimum size.
Flex schedules a call to the measure() method when a call to the invalidateSize() method occurs. The measure() method executes during the next render event after a call to the invalidateSize() method. When you use the addChild() method to add a component to a container, Flex automatically calls the invalidateSize() method.
Implementing the updateDisplayList() method
The updateDisplayList()
method sizes and positions the children of your component based on all
previous property and style settings, and draws any skins or graphic
elements that the component uses. The parent container for the
component determines the size of the component itself.
A component does not appear on the screen until its updateDisplayList() method gets called. Flex schedules a call to the updateDisplayList() method when a call to the invalidateDisplayList() method occurs. The updateDisplayList() method executes during the next render event after a call to the invalidateDisplayList() method. When you use the addChild() method to add a component to a container, Flex automatically calls the invalidateDisplayList() method.
Drawing graphics in your component
Every Flex component is a subclass of the Flash Sprite class, and therefore inherits the Sprite.graphics property. The Sprite.graphics property specifies a Graphics object that you can use to add vector drawings to your component.
For example, in the updateDisplayList() method, you can use methods of the Graphics class to draw borders, rules, and other graphical elements:
总结:
修改属性用commitProperties,自己画用updateDisplayList