3

我正在尝试以编程方式为 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";
    }   

}
4

3 回答 3

2

好吧,我对你的问题感到困惑,因为它对我来说绝对没问题。

我从 Adob​​e 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"/>

它在每列的底部显示“另一个字符串”。

如果这很重要,我正在使用 Flex 3。

祝你好运,兰迪·施泰格鲍尔

于 2008-11-10T19:15:53.633 回答
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-轴/(我试图看看是否可以找到您提供的签名示例)。我也看到其他人使用这个签名。

这不是一个很好的答案。我不记得这部分图表 API 在 Flex 2 和 Flex 3 之间发生了变化,但也许这篇文章可以帮助您解决问题。

于 2008-11-07T06:00:31.350 回答
0

只是我,我认为这不会有所作为,但也许将您的标签功能范围更改为受保护而不是私有???

于 2008-11-11T12:58:55.187 回答