blog.Ring.idv.tw

「loadVariables」vs.「LoadVars」(一)

「loadVariables」vs.「LoadVars」(一)


在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」會較容易拿捏與掌握它。

範例下載

本文若有任何謬誤,希望請不吝地賜教,若能指正不勝感激。

2007-07-18 18:13:06

Leave a Comment

Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: Ads :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment