2015-10-17 15 views
0

我想在ActionScript中創建一個心理實驗。參與者的表現將被存儲在一個單獨的.csv文件中。我寫了這個代碼(顯然,而不是「這是寫的文字」那裏將是一個數據數組,但與此代碼對等份出現的問題)Actionscript:SWF文件不記錄數據到txt,而編譯器做

import flash.net.FileReference; 
import flash.events.Event; 

var hint:String = "Please give a name for the file"; 
var labelling:String; 

experiment_label.addEventListener(KeyboardEvent.KEY_UP, enter_pressed) 

function enter_pressed (event:KeyboardEvent):void{ 
    if (event.keyCode == 13) { 
     labelling = experiment_label.text; 

     addEventListener(Event.ENTER_FRAME,saveFile); 
     var ss:String = "this is text to write"; 
     var fileRef:FileReference; 
     fileRef = new FileReference(); 
     function saveFile(event:Event):void 
      { 
       fileRef.save(ss, labelling+".csv"); 

       removeEventListener(Event.ENTER_FRAME, saveFile); 
      } 
    } 
} 

的問題,我面對如下所示:當我從Flash下運行它時,它運行良好,保存窗口彈出。但是,如果我單獨運行.swf文件,它只是忽略保存命令。

請問你好,我該怎麼辦?或者,也許我應該使用不同的方法來完全保存?

回答

0

您當前的代碼會給你一個Error #2176(使用try ... catch抓住它),因爲FileReference.save()

不響應用戶的動作,稱爲如鼠標事件或按鍵事件。

爲了避免這種情況,你必須刪除Event.ENTER_FRAME事件偵聽器,即使你不需要它:

function on_KeyUp(event:KeyboardEvent):void 
{ 
    if (event.keyCode == 13) 
    { 
     save_File(); 
    } 
} 

function save_File():void 
{ 
    try 
    { 
     var fileRef:FileReference = new FileReference(); 
      fileRef.save('some text here', 'my_file.csv'); 
    } 
    catch (e:Error) 
    { 
     trace(e.toString()); 
    } 
} 

希望能有所幫助。

+0

非常感謝你!它確實有幫助!不幸的是,我是一個新手,我不能爲你的答案投票,但我最深切的感謝與你同在! –