fms連網數據同步示意

趁着今天有空更新寫下自己用fms做連網遊戲的同步數據傳輸的處理方法~
大家用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
發佈了3 篇原創文章 · 獲贊 0 · 訪問量 2027
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章