如何从AS3.0 / Flex中的阵列更新导入数据?

时间:2010-12-08 21:28:53

标签: xml arrays actionscript-3

我想我必须在这里错过一步;我根据变量(_currentTrackNum)从xml创建的数组中提取不同的数据..如果我为它设置了不同的初始值,数据会发生变化;但是如果我在程序初始化后更改变量,即使我使用更改的变量重新运行调用,也没有任何数据发生变化。

<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> 

1 个答案:

答案 0 :(得分:1)

如果您正在使用FlashBuilder,请在播放XML结果的播放列表数据之后设置断点,然后查看播放列表数据的内容。为此,只需在调试透视图中单击变量选项卡即可。

第一个猜测是结果未正确解析,并且由于某种原因,您的Array可能只包含一个元素或已填充相同的元素。

如果正确填充了播放列表数据,请稍后在该过程中设置另一个断点,您应该找到所有断点...