2010-12-08 15 views
0

我想我必須在這裏錯過一步;我有不同的數據從一個從xml創建的數組中取出,這取決於一個變量(_currentTrackNum)..並且如果我爲它設置了不同的初始值,則數據會發生變化;但是如果我在程序初始化後更改變量,即使我使用更改後的變量重新運行調用,也不會更改任何數據。如何從AS3.0/Flex中的數組更新導入數據?

<s:HTTPService id="playlistxml" url="playlist.xml" result="init(event)" fault="noData(event)" /> 

<fx:Script> 
    <![CDATA[ 
private var _currentTrackNum:int; 
public var playlistdata:ArrayCollection = new ArrayCollection(); 
public var locationarray:Array = new Array(); 

private function init(event:ResultEvent):void 
{ 
    playlistdata = event.result.playlist.track; 
    for (var i:Number=0;i<playlistdata.length;i++){ 
     locationarray.push(playlistdata[i].location); 
     } 

    _currentTrackNum = 0;  

    _soundObj = new Sound(); 
    _soundObj.load(new URLRequest(locationarray[_currentTrackNum])); 
    _soundChannel = new SoundChannel(); 

private function playSound():void  
    { 
    _soundChannel = _soundObj.play(); 
    _isPlayingSound = true;   
    } 

private function nextTrack():void  
    { 
    if(_currentTrackNum != locationarray.length()){ 

    _currentTrackNum ++; 
    _soundObj.load(new URLRequest(locationarray[_currentTrackNum])); 
    } 
    } 

我嘗試過使用字符串以及聲音對象,所以我知道問題不在於處理聲道。

供參考,這是我的XML結構:

<playlist> 

    <title>myplaylist</title> 

    <track> 
    <artist>The National</artist> 
    <title>Secret Meeting</title>  
    <location>http://localhost:8888/aim/Discography/uploads/4233019.mp3</location> 
    <album>Alligator</album> 
    <image>http://localhost:8888/aim/Discography/uploads/pics/alligator.jpg</image> 
    </track> 
</playlist> 
+0

什麼是你的XML結構,如果`event.result.playlist.track`商店列表不同曲目的路徑? – www0z0k 2010-12-08 22:53:33

+1

另外,length()不是數組的一種方法,它是一個屬性。你有if(_currentTrackNum!= locationarray.length()),這是不正確的。它是array.length ...屬性...和xmllist.length()...方法... – momo 2010-12-09 00:17:37

回答

1

如果您使用FlashBuilder,設置一個斷點剛剛playlistdata作爲填充了XML結果後,再看看playlistdata的內容。要做到這一點,只需點擊調試透視圖中的變量標籤即可。

第一個猜測是結果未被正確解析,並且由於某種原因,您的數組可能只包含一個元素或已被填充相同的元素。

如果playlistdata正確填充,在這個過程以後設置另一個斷點,你應該找到它所有的休息...

相關問題