Apache flex mx.chart.AxisRenderer labelRotation不工作
我正在尝试旋转flex图表上的类别标签,但labelRotation属性似乎不起作用。基于示例和livedocs,我似乎无法找出我做错了什么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_
<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嵌入字体设计图表时,我收到了错误。