2012-06-02 78 views
0

因此,目前我能夠保存1到9個AS3變量,具體取決於用戶想要的內容,它們作爲文本字符串保存到XML文件中,但是當用戶再次保存時,舊的xml信息保留在文件並添加新信息。 但是,我希望新信息可以覆蓋舊信息,或設置一個函數來清除/刪除xml文件中的信息,然後再保存新的設置。使用AS3刪除XML信息

這是我目前的保存功能:

var soundVAR; 
var conditionVAR; 
var soundtoXML:XML; 
var conditiontoXML:XML; 
var test = 1; 
var playingCounter = 0; 
var xml:XML = <saved> 
     </saved>; 


//1.Button event listener 
btn_Save.addEventListener(MouseEvent.CLICK, saveXML); 
//2.The saveurl function which opens a URL. 
function saveXML(event:MouseEvent):void { 


var conditionsArray = new Array(play1Condition, play2Condition, play3Condition, play4Condition, play5Condition, play6Condition, play7Condition, play8Condition, play9Condition) 

for (var i=0; i < conditionsArray.length; i++){ 
trace(conditionsArray[i]) 
if(conditionsArray[i] == true) 
{ 
    soundVAR = soundsName[i]; 
    conditionVAR = conditionsArray[i]; 


    playingCounter++;  
} else { 

    trace('no sounds are playing'); 
} 

while (xml.item.length() < playingCounter){ 
    var soundString:String = '<sound>' + soundVAR + '</sound>'; 
    var conditionString:String = '<condition>' + conditionVAR + '</condition>'; 
    soundtoXML = new XML(soundString); 
    conditiontoXML = new XML(conditionString); 

    var item:XML = <item /> 
    [email protected] = xml.item.length().toString(); 
    xml.appendChild(item); 

    var sound:XML = xml.item[xml.item.length() - 1]; 
    var condition:XML = xml.item[xml.item.length() - 1]; 
    sound.appendChild(soundtoXML); 
    condition.appendChild(conditiontoXML); 
} 
} 
writeXML(); 
trace(xml); 
} 

function writeXML(){ 

var savedSounds:SharedObject = SharedObject.getLocal('savedSounds'); 
savedSounds.data.soundsxml = xml; // your variables 
savedSounds.flush(); // stores data into disk 


} 

在先進的感謝。

+0

我不知道爲什麼你的問題是downvoted,因爲負責人並未對此置評。我不認爲downvote是合適的,所以我upvoted。 –

+0

謝謝你,我也有點困惑。 – user1414344

回答

0

簡答:您想在while循環之前撥打xml.item.setChildern('');。較長的回答:我不明白while循環的最後4行。你能解釋一下他們的意圖嗎?

如果我理解正確的代碼,那麼while循環可能看起來像這樣:

var i:int = xml.item.length(); 
while (i < playingCounter) 
{ 
    xml.* += <item id={ i }> 
      <sound>{ soundVAR }</sound> 
     <condition>{ conditionVAR }</condition> 
    </item>; 
    i++; 
} 
+0

首先,我想表示感謝您的幫助。 該應用程序是一個混音器,其中九個變量是不同的聲音,存儲變量名稱,存儲布爾值true或false,取決於是否已選擇聲音。 你的代碼看起來不錯,所以理論上這會在它使用setChildren函數寫入之前清除xml中的信息? – user1414344

+0

我現在無法訪問Flash文件,但我明天會回覆,並讓我知道如果我得到它的工作,謝謝 – user1414344

+0

使用'delete'操作符應該可以工作,這與您如何使用它從'Object'中刪除一個屬性 - 'delete xml.item.whatever;' – divillysausages