Sie können die gesamte Benutzeroberfläche deklarativ machen. Analysieren Sie die CSV-Datei in Datenstrukturen und fügen Sie sie in eine ArrayCollection
ein. In diesem Beispiel habe ich nur drei Samples zusammengestellt.
Dann erstellen Sie eine DataGroup
und stellen Sie die dataProvider="rectangles"
und dann erstellen Sie eine itemRenderer
.
Dieses Beispiel funktioniert gut, IMO:
<?xml version="1.0" encoding="utf-8"?>
<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"
minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
var rectangles:ArrayCollection = new ArrayCollection([
{color: 0x00FF00, x: 5, y: 10, width: 30, height: 40},
{color: 0xFF0000, x: 50, y: 100, width: 300, height: 400},
{color: 0x0000FF, x: 55, y: 10, width: 30, height: 40},
]);
]]>
</fx:Script>
<s:DataGroup dataProvider="{rectangles}" itemRenderer="RectangleRenderer" />
</s:Application>
Dann sucht die itemRenderer
wie folgt aus:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true"
click="whenClicked()"
x="{data.x}" y="{data.y}"
width="{data.width}" height="{data.height}">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
private function whenClicked():void {
Alert.show("clicked");
}
]]>
</fx:Script>
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="{data.color}" />
</s:fill>
</s:Rect>
</s:ItemRenderer>
Sie sollten angeben, in welchem Format der Daten (in csv Sie Punkte haben, oder Größen der Form). Zeigen Sie auch Code. Es scheint mir, dass die Rectangle-Klasse, die Sie verwenden, eine Datenstruktur und keine Form/Grafik-bezogene Klasse ist. Sehen Sie sich die Grafikeigenschaft von Sprite an. – goliatone