我想將我的縮略圖放入Flex中的水平列表中。到目前爲止,我的工作正常,但是我想將其風格化爲縮略圖行(單獨單擊時)顯示較大的圖像和其他信息的位置。Flex水平列表
<?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"
creationComplete="main()" backgroundColor="#FFFFFF">
<fx:Style source="AgileWidget.css"/>
<s:states>
<s:State name="State1"/>
<s:State name="thumbViewer"/>
</s:states>
<fx:Declarations>
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.ArrayList;
import mx.controls.Alert;
import mx.events.ListEvent;
import scripts.Equipment;
import scripts.EquipmentXmlLoad;
private var equipAC:Array = new Array();
private var equipXL:EquipmentXmlLoad;
private var myEquipment:ArrayList;
private function main():void{
this.equipXL = new EquipmentXmlLoad("content/labEquipment.xml");
equipXL.addEventListener("XmlLoadedCompleteEvent",xmlCompleted);
this.equipCbo.addEventListener(ListEvent.CHANGE, cbChangeEvent);
}
private function xmlCompleted(e:Event):void{
this.equipAC = this.equipXL.returnArray();
myEquipment = new ArrayList(equipAC);
this.equipCbo.dataProvider = myEquipment;
}
private function cbChangeEvent (evt:Event):void{
var EquipmentClicked:Equipment=Equipment(evt.currentTarget.selectedItem);
this.titleLbl.text = EquipmentClicked.title;
this.descripLbl.text = EquipmentClicked.description;
this.curImg.source = EquipmentClicked.imageThumbnailURL;
this.lgImg.source = EquipmentClicked.imageURL;
this.replaceLbl.text = EquipmentClicked.replacementCost;
this.categoryLbl.text = EquipmentClicked.equipmentCategory;
this.yrLbl.text = EquipmentClicked.yearOfPurchase;
this.mtDayLbl.text = EquipmentClicked.maintenanceDay;
this.mtCostLbl.text = EquipmentClicked.maintenanceCost;
this.avgLifeLbl.text = EquipmentClicked.averageHourlyLife;
}
public function addListListener():void{
myList.addEventListener(MouseEvent.CLICK, function():void
{
updateItemInfo(myList.selectedItem as Equipment);
});
}
public function updateItemInfo(equipmentItem:Equipment):void
{
}
]]>
</fx:Script>
<s:List id="myList" itemRenderer="org.renderer.EquipmentItem"
width="400"
height="200"
horizontalCenter="0" verticalCenter="0">
<s:layout>
<s:HorizontalLayout />
</s:layout>
</s:List>
<s:ComboBox id="equipCbo" x="385" y="11" width="364" contentBackgroundColor="#FFFFFF"/>
<s:Label id="titleLbl" x="521" y="294" text="Select Equipment"/>
<s:Label id="descripLbl" x="339" y="403" width="465" height="89"/>
<s:Image id="curImg" x="757" y="10" width="47" height="42"/>
<s:Image id="lgImg" x="480" y="84" width="175" height="187"/>
<s:Label id="replaceLbl" x="700" y="328" text="Replacement Cost"/>
<s:Label id="categoryLbl" x="339" y="328" text="Category"/>
<s:Label id="yrLbl" x="339" y="348" text="Year Purchased"/>
<s:Label id="mtDayLbl" x="706" y="348" text="Maintainence Day"/>
<s:Label id="mtCostLbl" x="700" y="368" text="Maintainence Cost"/>
<s:Label id="avgLifeLbl" x="339" y="368" text="Average Life"/>
</s:Application>
我有兩個解析XML的AS3類;這裏是裝載機:
package scripts {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class EquipmentXmlLoad extends Sprite{
private var docXML:XML;
private var urlLoader:URLLoader;
public function EquipmentXmlLoad(XMLFileName:String) {
this.urlLoader = new URLLoader;
this.urlLoader.addEventListener(Event.COMPLETE, completeListener);
this.urlLoader.load(new URLRequest(XMLFileName));
}
public function completeListener(e:Event) : void {
this.docXML = new XML(this.urlLoader.data);
this.dispatchEvent(new Event("XmlLoadedCompleteEvent"));
}
public function returnArray() : Array{
var tempArray:Array = new Array();
for(var i:int = 0; i < this.docXML.equipment.length(); i++){
var tempEquip:Equipment = new Equipment();
tempEquip.title = this.docXML.equipment[ i ].title;
tempEquip.imageThumbnailURL = this.docXML.equipment[ i ].imageThumbnailURL;
tempEquip.imageURL = this.docXML.equipment[ i ].imageURL;
tempEquip.description = this.docXML.equipment[ i ].description;
tempEquip.replacementCost = this.docXML.equipment[ i ].replacementCost;
tempEquip.equipmentCategory = this.docXML.equipment[ i ].equipmentCategory;
tempEquip.yearOfPurchase = this.docXML.equipment[ i ].yearOfPurchase;
tempEquip.maintenanceDay = this.docXML.equipment[ i ].maintenanceDay;
tempEquip.maintenanceCost = this.docXML.equipment[ i ].maintenanceCost;
tempEquip.averageHourlyLife = this.docXML.equipment[ i ].averageHourlyLife;
tempArray.push(tempEquip);
}
return tempArray;
}
}
}
,這裏是渲染:
<?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">
<s:Image source="{data.imageThumbnailURL}" width="50" height="50" />
<s:Label text="{data.title}" width="120" textAlign="center"/>
</s:ItemRenderer>
我想通了設置,但我有問題顯示縮略圖。我已經更新了上面的代碼。我認爲這是連接到XML的問題。 – 2012-03-14 18:05:07
一切都是固定的,現在效果很好。再次感謝你! – 2012-03-15 06:40:11
不客氣! :) – 2012-03-15 07:47:52