大家用fms做連網遊戲有一個概念,是一定要注意的,那就是同一個客戶端文件因爲爲不同客戶所用,當我們編寫腳本時就得理清客戶端既作爲我自己的客戶端的同時,也作爲別人的客戶端。
在這個的前提下我們就要涉及數據傳輸的問題了~
我個人認爲,爲了減輕服務端的負擔,不是太重要的處理事件就得儘量寫到客戶端的腳本里去的~~,那樣做有利於我們文件運行時的效率,而在那前提下數據同步的問題就不得不好好的在客戶端寫好了
下邊看看我寫的一個例子可能腳本會多了點:
//////////////////////////////////////////服務端腳本//////////////////////////////////////
application.onAppStart = function () {
menber = [];
id = 0;
ingame_num=0
};
application.onConnect = function (newClient, arr) {
ingame_num++
menber.push (arr[0][0]);
application.acceptConnection (newClient);
if(ingame_num
}
/////////////////////////////幀聽數據及影射同步類//////////////////////////////////
class watch_func_E {
function watch_func_E(obj:Object, name:String, map:MovieClip, name_, info) {
var w = [map, name_, info];
var Em_func = function (prop, oldVal, newVal, w) {
//arguments[3] 在這裏是參數w的內容
//arguments[3][0]這裏等於類的自身參數map元件,這裏用於表示路徑
//arguments[3][0][arguments[2][8][1].name_等於場景中map元件內的元件(具體元件名由obj所幀聽的對象決定)
for (var i in arguments[3][0][arguments[2][8][1].name_]) {
//遍歷mc的屬性
for (var j = 0; j //i 爲屬性名,arguments[2][j][0]爲更新對象的信息,if條件用於檢測屬性名是否一致
if (i == arguments[2][j][0]) {
//將更新的屬性值賦值給場景中對應的元件屬性
arguments[3][0][arguments[2][8][1].name_][i] = arguments[2][j][1];
本文轉自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/2396.html