第十二章
如果對象是永久的,將保存共享對象的 data 屬性的所有屬性,共享對象包含以下信息:
userName: Ramona
adminPrivileges: true
itemNumbers: 101,346,483
切勿將值直接賦給共享對象的 data 屬性,如同在 so.data = someValue 中一樣;Flash Player 將忽略這些賦值。
要刪除本地共享對象的屬性,可使用諸如 delete so.data.attributeName 這樣的代碼;將本地共享對象的屬性設置為 null 或 undefined,則不會刪除該屬性。
要為共享對象創建私有值(該對象正在使用時隻有客戶端實例才可以使用該值,並且該值在對象關閉時不與該對象存儲在一起),請創建名稱不是 data 的屬性來存儲它們,如下例所示:
var my_so:SharedObject = SharedObject.getLocal("superfoo");
my_so.favoriteColor = "blue";
my_so.favoriteNightClub = "The Bluenote Tavern";
my_so.favoriteSong = "My World is Blue";
for (var prop in my_so) {
trace(prop+": "+my_so[prop]);
}
共享對象包含以下數據:
favoriteSong: My World is Blue
favoriteNightClub: The Bluenote Tavern
favoriteColor: blue
data: [object Object]
對於用於服務器的遠程共享對象,data屬性(property)的所有屬性(attribute)可供連接到共享對象的所有客戶端使用;如果永久保留這些對象,則會保存所有屬性(attribute)。如果一個客戶端更改了屬性的值,所有客戶端可以立即看到新的值。
實現:
public function get data():Object
3. connect () 方法
public function connect(myConnection:NetConnection, params:String = null):void
語言版本: ActionScript 3.0。
運行時版本: AIR 1.0、Flash Player 9、Flash Lite 4。
通過指定的 NetConnection 對象連接到服務器上的遠程共享對象,應在調用 getRemote() 後使用此方法。在連接成功時,將調度 sync 事件。
在嚐試使用遠程共享對象時,應先使用 try..catch..finally 語句。接著,偵聽並處理 sync 事件,然後再對共享對象進行更改。在調度 sync 事件之前,進行的任何本地更改都可能會 丟失。
可以調用 connect() 方法以連接到遠程共享對象,例如:
var myRemoteSO:SharedObject = SharedObject.getRemote("mo", myNC.uri, false);
myRemoteSO.connect(myNC);
參數:
myConnection:NetConnection—使用實時消息傳遞協議(RTMP)的 NetConnection 對象,如用於與 Flash Media Server 進行通信的 NetConnection 對象。
params:String (default = null)——一個字符串,用於定義將傳遞給服務器上的遠程共享對象的消息,不能用於 Flash Media Server。