Apache flex mx.chart.AxisRenderer labelRotation不工作

Apache flex mx.chart.AxisRenderer labelRotation不工作,apache-flex,components,Apache Flex,Components,我正在尝试旋转flex图表上的类别标签,但labelRotation属性似乎不起作用。基于示例和livedocs,我似乎无法找出我做错了什么 <mx:BarChart id="barchartX" left="40" right="40" bottom="40" paddingBottom="40" dataProvider="{chartDataObj.series}" showDataTips="false" itemClick="editItem_

我正在尝试旋转flex图表上的类别标签,但labelRotation属性似乎不起作用。基于示例和livedocs,我似乎无法找出我做错了什么

<mx:BarChart id="barchartX" left="40" right="40" bottom="40" paddingBottom="40"
         dataProvider="{chartDataObj.series}" showDataTips="false"
         itemClick="editItem_clickHandler(event)" includeIn="BAR" visible="true">
    <mx:verticalAxis>
         <mx:CategoryAxis id="vaxis" categoryField="title" 
                          title="click here to rename this axis" /> 
    </mx:verticalAxis>

    <mx:verticalAxisRenderers>
         <mx:AxisRenderer axis="{vaxis}" labelRotation="45"
                          click="axis_clickHandler(event)"/>
    </mx:verticalAxisRenderers>

    <mx:horizontalAxis>
        <mx:LinearAxis id="haxis" title="click here to rename this axis" />
    </mx:horizontalAxis>

    <mx:horizontalAxisRenderers>
        <mx:AxisRenderer axis="{haxis}" labelRotation="0"       
                             click="axis_clickHandler(event)"/>
    </mx:horizontalAxisRenderers>

    <mx:series>
        <mx:BarSeries labelPosition="none" yField="title" xField="value" 
                          fills="{chartDataObj.colors}"/>
    </mx:series>


好的,在搜索AxisRenderer的实际代码后,我得出了以下结论:

<fx:Script>
     [Embed(source='../assets/verdana.ttf', 
            fontName='verdanaFontMX', 
            mimeType='application/x-font',
            embedAsCFF='false')] 
     private var font2:Class;
</fx:Script>    

<mx:verticalAxisRenderers>
            <mx:AxisRenderer axis="{vaxis}" labelRotation="90"
                                 labelClass="mx.controls.Label" 
                                 fontFamily="verdanaFontMX" canStagger="false"
                                 click="axis_clickHandler(event)"/>
    </mx:verticalAxisRenderers>

[嵌入(源='../assets/verdana.ttf',
fontName='verdanaFontMX',
mimeType='application/x-font',
embedAsCFF='false')]
私有变量2:类;
在移动项目中为MX图表使用CategoryAxis时,类别标签将渲染为Spark标签,但其余轴标签将渲染为MX标签。标签旋转可以工作,但会抛出警告,并使用设备字体呈现类别。要解决此问题,请改用MX标签类(labelClass=“MX.controls.Label”)。我知道它不会像Spark标签那样快速渲染,但它会以您想要的字体渲染

接下来,如果你有一个很长的分类标签,不知怎么的,它被零除掉了,整个东西就崩溃了。要避免这种情况,请设置canStagger=“false”或canDropLabels=“true”。这避免了发生任何测量误差。但是,如果设置了fontSize,并且标签太大,则自动大小调整会再次崩溃。所以,我想最简单的解决办法是保持类别标签简短

还有可能截短文本,如下所示:
或者,使用自定义labelRenderer,但这可能会非常复杂,而且工作量的回报与外观的好处相比会越来越小

好的,在搜索AxisRenderer的实际代码后,我得出以下结论:

<fx:Script>
     [Embed(source='../assets/verdana.ttf', 
            fontName='verdanaFontMX', 
            mimeType='application/x-font',
            embedAsCFF='false')] 
     private var font2:Class;
</fx:Script>    

<mx:verticalAxisRenderers>
            <mx:AxisRenderer axis="{vaxis}" labelRotation="90"
                                 labelClass="mx.controls.Label" 
                                 fontFamily="verdanaFontMX" canStagger="false"
                                 click="axis_clickHandler(event)"/>
    </mx:verticalAxisRenderers>

[嵌入(源='../assets/verdana.ttf',
fontName='verdanaFontMX',
mimeType='application/x-font',
embedAsCFF='false')]
私有变量2:类;
在移动项目中为MX图表使用CategoryAxis时,类别标签将渲染为Spark标签,但其余轴标签将渲染为MX标签。标签旋转可以工作,但会抛出警告,并使用设备字体呈现类别。要解决此问题,请改用MX标签类(labelClass=“MX.controls.Label”)。我知道它不会像Spark标签那样快速渲染,但它会以您想要的字体渲染

接下来,如果你有一个很长的分类标签,不知怎么的,它被零除掉了,整个东西就崩溃了。要避免这种情况,请设置canStagger=“false”或canDropLabels=“true”。这避免了发生任何测量误差。但是,如果设置了fontSize,并且标签太大,则自动大小调整会再次崩溃。所以,我想最简单的解决办法是保持类别标签简短

还有可能截短文本,如下所示:
或者,使用自定义labelRenderer,但这可能会非常复杂,而且工作量的回报与外观的好处相比会越来越小

我在回答一个类似的问题


labelRotation工作的关键是嵌入字体。 关于Flex4.6有一篇很好的文章

一个简单的代码示例是向mxml文件添加样式

<fx:Style>
        @namespace mx "library://ns.adobe.com/flex/mx";

        @font-face{
            src: local("Arial");
            fontFamily: Arial;
            embedAsCFF: false;
        }

        mx|ColumnChart {
            fontFamily: Arial;
            fontSize: 10;
        }
</fx:Style>

@名称空间mx“library://ns.adobe.com/flex/mx";
@字体{
src:本地(“Arial”);
方特家族:Arial;
embedAsCFF:假;
}
mx |柱形图{
方特家族:Arial;
字体大小:10;
}

我在回答一个类似的问题


labelRotation工作的关键是嵌入字体。 关于Flex4.6有一篇很好的文章

一个简单的代码示例是向mxml文件添加样式

<fx:Style>
        @namespace mx "library://ns.adobe.com/flex/mx";

        @font-face{
            src: local("Arial");
            fontFamily: Arial;
            embedAsCFF: false;
        }

        mx|ColumnChart {
            fontFamily: Arial;
            fontSize: 10;
        }
</fx:Style>

@名称空间mx“library://ns.adobe.com/flex/mx";
@字体{
src:本地(“Arial”);
方特家族:Arial;
embedAsCFF:假;
}
mx |柱形图{
方特家族:Arial;
字体大小:10;
}

我忘了提到这是一个使用Flash Builder 4.5.1的移动项目。事实上,它是一个移动项目,这似乎是导致它不能正常工作的原因。如livedocs中所述:“labelRotation类型:Number CSS继承:否指定标签旋转。如果标签使用设备字体呈现,则标签始终水平绘制。如果此样式为任何负值,AxisRenderer将确定一个最佳角度,以便在最小区域中呈现标签而不重叠。”因此,因为标签使用设备字体,所以它们总是水平的。。。。然而,当我尝试使用CSS@font-face嵌入字体设计图表时,我收到了错误。我忘了提到这是一个使用Flash Builder 4.5.1的移动项目。事实上,它是一个移动项目,这似乎是导致它不能正常工作的原因。如livedocs中所述:“labelRotation类型:Number CSS继承:否指定标签旋转。如果标签使用设备字体呈现,则标签始终水平绘制。如果此样式为任何负值,AxisRenderer将确定一个最佳角度,以便在最小区域中呈现标签而不重叠。”因此,因为标签使用设备字体,所以它们总是水平的。。。。然而,当我尝试使用CSS@font-face嵌入字体设计图表时,我收到了错误。