我正在尝试以编程方式为CategoryAxis提供我自己的labelFunction,但我完全被难倒了。常规方法是在MXML文件中执行此操作,但我想在我的Actionscript文件中执行此操作。
常规方法是:
<mx:Script>
<![CDATA[
private function categoryAxis_labelFunc(item:Object,
prevValue:Object,
axis:CategoryAxis,
categoryItem:Object):String {
return "Some String";
}
]]>
</mx:Script>
<mx:CategoryAxis labelFunction="categoryAxis_labelFunc" />
但我希望在我的CategoryAxis子类中实现相同的功能,例如:
public class FauxDateAxis extends CategoryAxis {
public function FauxDateAxis() {
super();
labelFunction = categoryAxis_labelFunc // Doesn't work of course.
}
private function categoryAxis_labelFunc(item:Object,
prevValue:Object,
axis:CategoryAxis,
categoryItem:Object):String {
return "Another String";
}
}
答案 0 :(得分:2)
好吧,我对你的问题感到困惑,因为它对我来说绝对没问题。
我从Adobe Flex网站上获取了CategoryAxis的示例应用程序: http://livedocs.adobe.com/flex/3/langref/index.html?mx/charts/CategoryAxis.html&mx/charts/class-list.html,逐字添加您的代码(除了添加包和导入语句之外),它就像您希望的那样工作。
在示例中,我修改了行
<mx:CategoryAxis id="haxis" categoryField="Date" title="Date"/>
阅读
<local:FauxDateAxis id="haxis" categoryField="Date" title="Date"/>
并在每列的底部显示“Another String”。
如果重要的话,我正在使用Flex 3.
祝你好运, 兰迪斯蒂鲍尔答案 1 :(得分:1)
这个问题让我很好奇,所以我去尝试了。
CategoryAxis上的labelFunction与我在这里看到的签名略有不同。对我来说,这是有效的:
function(item:Object, field:String, index:int, pct:Number)
我不是Flex图表向导,所以也许你知道我不知道的事情,但是当我在这个问题上使用那个签名时,
public function FauxDateAxis() {
super();
labelFunction = function(item:Object, field:String, index:int, pct:Number) {
return "string";
}
}
它适用于Flex 3 Pro。
我看到你提供的代码示例看起来很像http://blog.flexexamples.com/2007/11/16/creating-a-custom-label-function-on-a-flex-linechart-controls-category-axis/(我试着看看我是否能找到你提供的签名的例子)。我也看到其他人也使用这个签名。
这不是一个很好的答案;我不记得图表API的这一部分在Flex 2和Flex 3之间发生了变化,但也许这篇文章可以帮助您解决问题。
答案 2 :(得分:0)
就我而言,我认为它不会有所作为,但可能会将您的标签功能范围更改为受保护而非私有???