Я импортирую некоторую информацию через XML;ниже приведен пример одного набора информации (для «проекта»), хотя в конечном приложении может быть до 30-40:
<phases>
<project>
<dbID>15</dbID>
<workingTitle>Motherfuckers</workingTitle>
<projName>5f3-2011</projName>
<startDate>8/10/2011</startDate>
<preprod>1</preprod>
<prod>2</prod>
<postprod>1</postprod>
<positions>
<position>
<startOffset>0</startOffset>
<numDays>4</numDays>
<role>PR</role>
<studentid>1193</studentid>
<conflict>0</conflict>
<studentType>bfa1</studentType>
</position>
<position>
<startOffset>0</startOffset>
<numDays>4</numDays>
<role>DR</role>
<studentid>1194</studentid>
<conflict>4</conflict>
<studentType>bfa1</studentType>
</position>
<position>
<startOffset>0</startOffset>
<numDays>4</numDays>
<role>WR</role>
<studentid>1194</studentid>
<conflict>4</conflict>
<studentType>bfa1</studentType>
</position>
<position>
<startOffset>0</startOffset>
<numDays>4</numDays>
<role>BO</role>
<studentid>1308</studentid>
<conflict>0</conflict>
<studentType>bfa1</studentType>
</position>
</positions>
</project>
</phases>
Теперь я уже создал функцию дляСортируйте всю информацию XML и сохраните ее в arrayCollection под названием projectsAC.Затем я создал список с поставщиком данных «projectsAC» и itemRenderer из «modules.project»:
<mx:Canvas id="mainWrapper" width="100%" height="100%" y="90" verticalScrollPolicy="on" horizontalScrollPolicy="off">
<mx:VBox>
<mx:Canvas id="projectsWrapper" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:List id="projectsList" dataProvider="{projectsAC}" itemRenderer="modules.project" />
</mx:Canvas>
</mx:VBox>
</mx:Canvas>
Модуль проекта находится ниже:
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:Scheduler="modules.*" layout="absolute" creationComplete="init();" dataChange="dataArray = data as Array" horizontalScrollPolicy="off">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
private var dataArray:Array;
// project information
[Bindable] public var projectDBID:Number = 0;
[Bindable] public var workingTitle:String = new String;
[Bindable] public var projectNumber:String = new String;
[Bindable] public var startDate:Date = new Date;
[Bindable] public var positions:XML = new XML;
[Bindable] public var positionsAC:ArrayCollection = new ArrayCollection;
[Bindable] public var projectLength:Number = 0;
// container information
[Bindable] public var projectWidth:Number = 0;
[Bindable] public var projectX:Number = 0;
[Bindable] public var projectY:Number = 0;
private function init():void
{
if (dataArray)
getInfo(dataArray);
getProjLength();
getProjWidth();
getProjX();
}
public function getProjX():void
{
projectX = parentDocument.oneDay * parentDocument.dateDifference(parentDocument.startViewDate, startDate);
}
public function getProjWidth():void
{
projectWidth = parentApplication.oneDay * projectLength;
}
public function getProjLength():void
{
var tempLength:Number = 0;
var tempArray:Array = new Array;
for each (var position:Object in positions.position)
{
tempArray = new Array;
tempArray.push(position.startOffset);
tempArray.push(positions.numDays);
tempArray.push(positions.role);
tempArray.push(positions.studentid);
tempArray.push(positions.conflict);
tempArray.push(positions.studentType);
if (tempArray.length > 0)
positionsAC.addItem(tempArray);
if ((Number(position.startOffset) + Number(position.numDays)) > tempLength)
tempLength = Number(position.startOffset) + Number(position.numDays);
}
projectLength = tempLength;
}
private function getInfo(a:Array):void
{
a = fixA(a);
projectDBID = a[0];
workingTitle = a[1];
projectNumber = a[2];
startDate = parentApplication.textToDate(a[3]);
positions = XML(a[4]);
}
private function fixA(a:Array):Array
{
var toReturn:Array = a;
var toPush:String = "";
var pushLocation:Number = 0;
if (a.length > 5)
{
toReturn.push(a[pushLocation]); pushLocation++;
for (var i:int = pushLocation; i < a.length - 4; i++)
{
if (toPush != "")
toPush += ", ";
toPush += a[i];
pushLocation++;
}
toReturn.push(toPush);
for (i = pushLocation; i < 3; i++)
toReturn.push(a[i]);
}
return toReturn;
}
]]>
</mx:Script>
<mx:Canvas id="projectWrapper" backgroundColor="#000000" width="{projectWidth}" height="100%">
</mx:Canvas>
</mx:Module>
Этот код возвращаетв результате это выглядит так:
Мне нужно, чтобы это выглядело так: (как это выглядело, когда я использовал повторители вместо itemRenderers)
На изображении выше выделенная синим цветом область - это то, что оболочка проекта, а выделенная фиолетовым цветом - это позиция в этом проекте, которую я планирую выполнить, создав еще один список с позицией itemRenderer.
Может кто-нибудьоказать некоторую помощь в попытке выяснить это.Я действительно не хотел бы возвращаться к использованию ретрансляторов, но у меня нет достаточно времени, чтобы тратить время на попытки выяснить это.: (
Заранее спасибо, Brds
РЕДАКТИРОВАТЬ:
@ MD - я внес следующие изменения в модуль проекта на основе того, чтоВы разместили в своем комментарии. После внесения изменений я загрузил приложение, и ни один из проектов не показывался: (
override protected function commitProperties():void
{
projectWrapper.width = projectWidth;
projectWrapper.x = projectX;
}
private function init():void
{
invalidateProperties();
if (dataArray)
getInfo(dataArray);
getProjLength();
getProjWidth();
getProjX();
invalidateProperties();
}