0
我正在学习flex,但我无法理解操作脚本覆盖的基本原理 - 分配自定义处理程序并调用该类的超类不会产生与我从正常继承机制中怀疑的结果相同的结果。如何覆盖flex组件的渲染?
例如 - 图表系列具有属性ItemRenderer - 用鼠标指出基类继承?在我的情况 -
mx.charts.chartClasses.HLOCSeriesBase.itemRenderer
Flex帮助给出了这样的:
itemRenderer
Type: mx.core.IFactory CSS Inheritance: No
Language Version: ActionScript 3.0 Product Version: Flex 3 Runtime Versions: Flash9, AIR 1.1
A factory that represents the class the series will use to represent individual items on the chart. This class is instantiated once for each element in the chart. Classes used as an itemRenderer should implement the IFlexDisplayObject, ISimpleStyleClient, and IDataRenderer interfaces. The data property is assigned the chartItem that the skin instance renders.
所以我去上创建了一个类巫婆继承了:
package { // Empty package.
import mx.charts.series.items.HLOCSeriesItem;
import mx.core.IDataRenderer;
import mx.core.IFlexDisplayObject;
import mx.styles.ISimpleStyleClient;
import flash.display.Graphics;
import mx.charts.chartClasses.HLOCSeriesBase;
import mx.charts.series.CandlestickSeries;
public class CycleColorRenderer extends HLOCSeriesBase
implements IFlexDisplayObject, ISimpleStyleClient, IDataRenderer {
private var _chartItem:HLOCSeriesItem;
public function CycleColorRenderer() {
super();
}
public function get data():Object {
return _chartItem;
}
public function set data(value:Object):void {
_chartItem = value as HLOCSeriesItem;
invalidateDisplayList();
}
override protected function
updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
}
}
MXML应用渲染reasignment:
<mx:CandlestickSeries
dataProvider="{TICKER}"
openField="open"
highField="high"
lowField="low"
closeField="close"
displayName="TICKER"
itemRenderer="CycleColorRenderer"
>
它编译正常,但运行它看到一个空的列表,并且作为C和一些C++程序员,我无法理解这里会出现什么问题 - 所有实例都在做什么基类?
也许有一些关于继承的特定语言的概念?
向我们展示如何使用渲染器。 – JeffryHouser
@ Reboog711你的意思是MXML属性赋值?我更新了我的问题 – Ulterior
是的,我想这就是我的意思。通常在指定一个类时使用完全限定的路径名;然而,因为你没有得到一个编译器错误,可能不是问题。审核您的渲染器代码;我不清楚为什么你的CycleColorRenderer的显示方式不同于HLOCSeriesBase。 – JeffryHouser