2010-12-08 5 views
0

Je pense que je dois manquer un pas ici; J'ai différentes données tirées d'un tableau créé à partir de xml en fonction d'une variable (_currentTrackNum) .. et les données changent si je lui donne une valeur initiale différente; mais si je change la variable une fois le programme initialisé, aucune des données ne change même si je réexécute l'appel avec la variable modifiée.comment faire des données importées à partir de mise à jour de tableau dans 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])); 
    } 
    } 

J'ai essayé avec des cordes ainsi que le son des objets, donc je sais que le problème ne réside pas dans la manipulation du SoundChannel.

pour référence, voici ma structure 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

quel est votre structure xml si 'event.result.playlist.track' stocke une liste de chemins pour différentes pistes? – www0z0k

+1

aussi, length() n'est pas une méthode de tableau, c'est une propriété. où vous avez if (_currentTrackNum! = locationarray.length()), c'est incorrect. c'est array.length ... propriété ... et xmllist.length() ... méthode ... – momo

+0

BIg Momo .. tu veux dire que je ne devrais pas avoir le()? – Damon

Répondre

1

Si vous utilisez FlashBuilder, définissez un point d'arrêt juste après playlistdata comme cela a été remplie avec les résultats XML, regardez alors le contenu de playlistdata. Pour ce faire, cliquez simplement sur l'onglet des variables dans la perspective de débogage. Une première supposition serait que les résultats ne sont pas correctement analysés et pour une raison quelconque, votre tableau ne peut contenir qu'un seul élément ou a été rempli avec le même élément.

Si playlistdata est correctement rempli, définir un autre point d'arrêt plus tard dans le processus et vous devriez trouver où elle toutes les pauses ...

+0

J'apprécie vraiment le conseil! Malheureusement, je suis actuellement incapable d'exécuter FB dans debug: /. Il dit de s'assurer que je cours la version de débogage de flashplayer .. que j'ai installé quelques fois sans chance. – Damon

+0

J'ai fait fonctionner le débogueur. Il suffit d'ouvrir le lecteur de débogage flash séparément, changez-le pour que debug ne lance rien. appuyez sur le débogage, puis chargez le fichier SWF qu'il génère avant qu'il expire ... – Damon

Questions connexes