在Flash Player 6之前,當我們要傳送或接收外部的資料,或者欲整合後端的程式進行溝通時,我們無非是經由「loadVariables」或「loadVariablesNum」來協助我們達成這樣的工作,那為何還需要「LoadVars」呢?當然事出必有因,而原因不外乎利用「loadVariables」進行後端程式的溝通時,若稍有不慎,可是會將整個「MovieClip」的實體變數都傳送至後端程式,或是你想偵測目前下載的進度時,那「loadVariables」也將不敷使用,基於這些原因「LoadVars」也就此誕生。
「loadVariables」vs.「LoadVars」資料傳送
我們剛剛有提到過使用「loadVariables」進行後端程式的溝通時,會將整個「MovieClip」的實體變數都傳送至後端程式,倘若當此「MovieClip」擁有大量的實體變數時,那可會伴隨著這些變數一併都傳送至後端程式,試想這樣會多有效率呢?底下我們用了「loadVariables」和「LoadVars」來做驗證:
程式一
var foo = 10; var bar = 20; this.loadVariables("http://localhost/loadVariables.jsp","GET"); var data_lv:LoadVars = new LoadVars(); data_lv.foo = 10; data_lv.sendAndLoad("http://localhost/LoadVars.jsp",data_lv,"GET");
結果:
Error opening URL 'http://localhost/loadVariables.jsp?foo=10&bar=20' Error opening URL 'http://localhost/LoadVars.jsp?foo=10'
從錯誤訊息中,我們就可以驗證「loadVariables」會將所擁有全部的實體變數傳送出去(不包含$version),而我們利用「LoadVars」則僅會將我們所定義在此實體的變數值傳送而已(data_lv.foo),所以既然了解「loadVariables」有此特性,所以我們必然要使用較佳的方案來達成:
程式二
var foo = 10; var bar = 20; this.createEmptyMovieClip("data_mc",1); data_mc.foo = 30; data_mc.loadVariables("http://localhost/loadVariables.jsp","GET");
結果:
Error opening URL 'http://localhost/loadVariables.jsp?foo=30'
從結果上來看,若是需要利用「loadVariables」來進行資料交換的話,上述程式會是較好的作法,畢竟獨立一個「MovieClip」會較容易拿捏與掌握它。
本文若有任何謬誤,希望請不吝地賜教,若能指正不勝感激。