| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Aug 2006
Beiträge: 282
| ArrayCollection Element will nicht mit Chart
Hi Leute, ich erstelle ein LineChart, befüllt wird es anhand einer ArrayCollection welche timestamps/prices enthält. Die Timestamp Jahre werden in der X Achse angezeigt. Jetzt das Problem: In der ArrayCollection gibt es ein Element das mir zu schaffen macht (ausgeklammert im Code), wenn man dieses Element in die AC aufnimmt wird die Zeitleiste falsch angezeigt. ![]() Hat jemand eine Idee woran es liegt, funktioniert der Code bei euch? ![]() (code auf das wesentliche reduziert) Code: <?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import mx.charts.*;
import mx.collections.ArrayCollection;
private var _year:Number;
[Bindable]
public var price_ac:ArrayCollection = new ArrayCollection([
{ Price: 10, Ts:1 }, //1970
{ Price: 30, Ts:200000000 }, //1976
{ Price: 10, Ts:210000000 },
{ Price: 10, Ts:300000000 }, //1979
{ Price: 30, Ts:300000001 },
{ Price: 10, Ts:300000002 },
{ Price: 10, Ts:300000003 },
{ Price: 10, Ts:300000004 },
{ Price: 30, Ts:300000005 },
{ Price: 10, Ts:300000006 },
// { Price: 20, Ts:300000007 }, // <-- bei Aufnahme zur AC, dann Zeitleiste falsch
{Price: 10, Ts:400000000 } //1982
]);
public function defineLabel(cat:Object, pcat:Object, ax:CategoryAxis, labelItem:Object):String {
var actYear:Number = new Date(labelItem.Ts * 1000).getFullYear();
if(isNaN(_year) || (_year != actYear)){
_year = actYear;
return _year.toString(); //später über value.text ins label setzen
}
return null; //Wenn actYear == year dann null zurück
}
]]>
</fx:Script>
<mx:LineChart dataProvider="{price_ac}" >
<mx:horizontalAxis>
<mx:CategoryAxis id="catAxis" categoryField="Ts" labelFunction="defineLabel" />
</mx:horizontalAxis>
<mx:horizontalAxisRenderers>
<mx:AxisRenderer axis="{catAxis}" canDropLabels="true">
<mx:labelRenderer>
<fx:Component>
<mx:Label>
<fx:Script>
<![CDATA[
override public function set data(value:Object):void {
if (value != null && value.text != null) {
//label mit jahr befüllen welches über defineLabel definiert wurde
this.text = value.text;
}
}
]]>
</fx:Script>
</mx:Label>
</fx:Component>
</mx:labelRenderer>
</mx:AxisRenderer>
</mx:horizontalAxisRenderers>
<mx:series>
<mx:LineSeries xField="Ts" yField="Price" />
</mx:series>
</mx:LineChart>
</s:Application> Geändert von denniz (09-05-2011 um 12:39 Uhr) |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Aug 2006
Beiträge: 282
|
Das die Jahre nicht auf der x-Achse gerendert werden liegt an der canDropLabels property im AxisRenderer. Ist diese auf true werden die labels aus der Leiste entfernt sobald ein überlagerung entsteht. Um numerische Werte auf der Achse darzustellen (wie in meinem Fall die Jahre) biete das chart package u.a. die DateTimeAxis klasse an. Damit kann man sich auch den ganzen komplizierten kram mit dem horizontalAxisRenderers sparen und ist zudem noch um einiges schneller. |
| | |
| | #4 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.146
|
Ich auch
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Child Element unter Parent Element | kingLui987 | ActionScript 3 | 3 | 21-01-2011 18:04 |
| Problem beim Anzeigen einer ArrayCollection mit einem Element | scripper | Flex programmieren | 1 | 23-06-2009 08:57 |
| [Flash CS4] Open Flash Chart 2| Pie Chart in Flash Projekt darstellen | Saki | Flash Einsteiger | 0 | 14-06-2009 17:29 |
| Form-Check-Function geht nicht da Element noch nicht vorhanden | deak | JavaScript & jQuery | 2 | 10-02-2009 22:38 |
| ArrayCollection Element über Value finden | mukraker | ActionScript 3 | 8 | 16-04-2007 22:06 |