i working on actionscript 3 air desktop application requires save data xml file in user's c:\
drive, in order able read data saved again after re-opening.
the saving process fine, problem arises when try re-open application , try override old value, the whole data saved removed except new value.
i know why error occurred (based on code), can not find work around solving problem. want user able re-open application , retrieve old data, , if should overwrite existing data entry specific entry data overwritten, not whole data.
here code (it updated after found solution):
import flash.net.urlrequest; import flash.net.urlloader; import flash.events.event; import flash.display.loader; import flash.events.mouseevent; import flash.filesystem.file; import flash.filesystem.filestream; import flash.filesystem.filemode; import flash.utils.timer; import flash.events.timerevent; var selfevaluationloader:urlloader = new urlloader(); var answersloader:urlloader = new urlloader(); var imgloader = new loader(); var sexml:xml; var loadedxml:xml; var secounter = 1; var degree:array = new array(); var savedegree:array = new array(); var letterarr:array = new array("a","b","c","d","e","f","g","h","i","j","k","l","m","o") var savedxml:xml; var saveflag=true; var file:file; var filestream:filestream; var flag1:string; nextse.buttonmode = true; nextse.addeventlistener(mouseevent.click,nextquestion); selfevaluationloader.load(new urlrequest("selfeval.xml")); selfevaluationloader.addeventlistener(event.complete,processsexml); for(var b=1;b<5;b++) { seanswer["rb"+b].addeventlistener(mouseevent.click,saveanswer); } function processsexml(e:event) { sexml = new xml(e.target.data); imgloader.load(new urlrequest(sexml.question.(@id==1).img.children())); addchild(imgloader); //imgloader.visible=false; } function nextquestion(e:mouseevent) { secounter++; if(secounter == 15) { texts.alpha=1; nextse.enabled=false; prevse.enabled=false; answersloader.load(new urlrequest("c:/users/safwat/my documents/xml/savedegree.xml")); answersloader.addeventlistener(event.complete,loaddatafromc); } else { prevse.enabled = true; prevse.buttonmode = true; prevse.addeventlistener(mouseevent.click,prevquestion); seanswer["hiddenrb"].selected = true; imgloader.load(new urlrequest(sexml.question.(@id==secounter).img.children())); addchild(imgloader); } } function prevquestion(e:mouseevent) { secounter--; switch(flag1) { case "rb1": seanswer["rb1"].rb1.selected = true; break; case "rb2": seanswer["rb2"].rb2.selected = true; break; case "rb3": seanswer["rb3"].rb3.selected = true; break; case "rb4": seanswer["rb4"].rb4.selected = true; break; default: seanswer["hiddenrb"].selected = true; } if(secounter == 1) { nextse.enabled=false; prevse.enabled=false; } else { nextse.enabled = true; //seanswer["hiddenrb"].selected = true; imgloader.load(new urlrequest(sexml.question.(@id==secounter).img.children())); addchild(imgloader); } } function saveanswer(e:mouseevent) { degree[secounter-1]=string(e.currenttarget.name); flag1=e.currenttarget.name; trace("flag1 "+flag1) onanswer(); } function onanswer() { file = file.documentsdirectory.resolvepath("xml/savedegree.xml"); if(file.exists && saveflag==true) { trace("here") answersloader.load(new urlrequest("c:/users/safwat/my documents/xml/savedegree.xml")); answersloader.addeventlistener(event.complete,retrievesaveddata); } else { saveflag=false; trace("not existed") var filestream:filestream = new filestream(); filestream.open(file, filemode.write); filestream.writemultibyte('<?xml version="1.0" encoding="utf-8"?>'+'\n'+'<questions>', "iso-8859-01"); for(var kk=0;kk<14;kk++) filestream.writemultibyte('<question>'+degree[kk]+'</question>', "iso-8859-01"); filestream.writemultibyte('\n'+'</questions>', "iso-8859-01"); filestream.close(); } } function loaddatafromc(e:event) { nextse.enabled=false; prevse.enabled=false; loadedxml = new xml(e.target.data); seanswer.alpha=0; for(var b=1;b<5;b++) { seanswer["rb"+b].removeeventlistener(mouseevent.click,saveanswer); } for(var d=0;d<14;d++) { switch(string(loadedxml.question[d])) { case "rb1": texts[letterarr[d]+"1"].gotoandstop(2); break; case "rb2": texts[letterarr[d]+"2"].gotoandstop(2); break; case "rb3": texts[letterarr[d]+"3"].gotoandstop(2); break; case "rb4": texts[letterarr[d]+"4"].gotoandstop(2); break; } } if(secounter==14) { texts.alpha=1; answersloader.load(new urlrequest("c:/users/safwat/my documents/xml/savedegree.xml")) answersloader.addeventlistener(event.complete,loaddatafromc) } } function retrievesaveddata(e:event) { savedxml = new xml(e.target.data); savedxml.replace(secounter-1,<question>{degree[secounter-1]}</question>) filestream = new filestream(); var timer:timer = new timer(100, 1); timer.addeventlistener(timerevent.timer_complete,timedsave); timer.start(); } function timedsave(e:timerevent) { filestream.open(file, filemode.write); filestream.writemultibyte('<?xml version="1.0" encoding="utf-8"?>'+'\n', "iso-8859-01"); filestream.writemultibyte(savedxml, "iso-8859-01"); filestream.close(); }
Comments
Post a Comment