Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-05-2011, 01:58   #1 (permalink)
Neuer User
 
Benutzerbild von denniz
 
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)
denniz ist offline   Mit Zitat antworten
Alt 15-05-2011, 01:45   #2 (permalink)
Neuer User
 
Benutzerbild von denniz
 
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.
denniz ist offline   Mit Zitat antworten
Alt 15-05-2011, 09:56   #3 (permalink)
random
 
Registriert seit: Jun 2001
Beiträge: 834
Deine Hartnäckigkeit hat sich ausgezahlt

Da weiß ich ja jetzt wen ich fragen muss, wenn's um charts geht
__________________
-------------------


ciao, blue
blue ist offline   Mit Zitat antworten
Alt 15-05-2011, 10:22   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Ich auch
Omega Psi ist offline   Mit Zitat antworten
Alt 17-05-2011, 11:25   #5 (permalink)
Neuer User
 
Benutzerbild von denniz
 
Registriert seit: Aug 2006
Beiträge: 282
Haha, alles klar, werd dann mein bestes geben ...
denniz ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ä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


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele