2013-04-24 50 views
0

當我在整個應用程序中轉到不同的狀態時,我正在使用狀態來顯示不同類型的介質。我正在處理圖像狀態,我可以從我的XML中獲取數據,以顯示在我已經佈置的數據網格中,並顯示當我單擊它時查看的圖像的名稱,但圖像不顯示。這是我現在的代碼:無法從AS3中的狀態加載外部XML中的圖像

<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
    <fx:XML id="images" source="img_data/images.xml" /> 
    <s:XMLListCollection id="imageCollection" source="{images.IMAGE}" /> 
</fx:Declarations> 
<s:HGroup> 
    <s:DataGrid id="imageGrid" dataProvider="{imageCollection}" click="onClick()" /> 

    <s:VGroup height="55"> 
     <s:Label text="Now viewing: {[email protected]}" /> 
     <s:Label id="txtPosition" width="91"/> 
    </s:VGroup> 

</s:HGroup> 
<fx:Script> 
    <![CDATA[ 
     import mx.controls.Image; 

     public var newImage:Image; 
     public var myXML:XML; 
     [Bindable]public var myURLLoader:URLLoader = new URLLoader; 



     public function onClick():void{ 
      newImage = new Image(); 
      newImage.load(new URLRequest(imageGrid.selectedItem.file.toString())); 
      newImage.addEventListener(Event.COMPLETE, processXML); 

      newImage.source = [email protected]; 
     } 

     public function processXML(e:Event):void{ 
      myXML = new XML(e.target.data); 
       //newImage = new Image(); 

       newImage.height = 200; 
       newImage.width = 400; 
       imgGroup.addElement(newImage); 

     } 


    ]]> 
</fx:Script> 

我的XML文件,我從拉:

<?xml version="1.0" encoding="utf-8"?> 
<GALLERY COLUMNS="5" XPOSITION="30" YPOSITION="30" WIDTH="100" HEIGHT="100"> 
<IMAGE name="Cabin in the Woods" > 
<file>img_data/cabin.jpg </file> 
</IMAGE> 
<IMAGE name="Batman" src="img_data/batman.jpg" > 
<file>img_data/batman.jpg</file> 
</IMAGE> 
<IMAGE name="Christmas Vacation"> 
<file>img_data/christmasVacation.jpg</file> 
</IMAGE> 
<IMAGE name="Inception"> 
<file>img_data/inception.jpg</file> 
</IMAGE> 
</GALLERY> 

回答

0

首先,你應該有一個的URLLoader,不是一個圖像加載XML。

public function onClick():void{ 
     myURLLoader.load(new URLRequest(imageGrid.selectedItem.file.toString())); 
     myURLLoader.addEventListener(Event.COMPLETE, processXML); 
    } 

在從XML中實際讀取圖像之前,不應設置圖像的來源。

public function processXML(e:Event):void{ 
     myXML = new XML(e.target.data); 
     newImage = new Image(); 
     newImage.source = myXML.IMAGE[0].file.text(); 
     imgGroup.addElement(newImage); 
    } 

我把任意一個[0],因爲我不知道你想從你的XML加載哪個圖像。