<acronym id="atkaq"></acronym>
      <bdo id="atkaq"></bdo>

      天才教育網合作機構 > 設計軟件培訓機構 > Flash培訓機構 >

      東莞設計培訓網

      歡迎您!
      朋友圈

      400-850-8622

      全國統一學習專線 9:00-21:00

      位置:設計軟件培訓資訊 > Flash培訓資訊 > 體驗Flash MX(10):服務器/客戶數據存儲控制

      體驗Flash MX(10):服務器/客戶數據存儲控制

      日期:2005-12-24 00:00:00     瀏覽:277    來源:東莞設計培訓網

        Flash MX在服務器/客戶的數據處理/存儲控制上下了一些功夫,其中簡單而方便的loadVars對象我們在第二天就看到了其芳蹤,XML/XmlSocket對象還是老瓶裝舊藥,Cookie對象也不過是測試環境的犧牲品,倒是新的SharedObject對象LocalConnection對象讓我看到Flash MX更多的閃光點,我們可以利用它們實現記錄網站訪問歷史、用戶私人信息存儲、游戲暫存/數據緩存等很多應用。

        通常,我們在Flash 5中會有幾種方法來存儲我們用過的數據:如果在無Server的狀態,我們可能用到FScommand+exec+EXE或者FScommand+Save+XML,適用于單機游戲和存放“Cookie”;如果有Server,則需要Loadvar/XML or XmlSocket Send連接服務器端程序寫入服務器數據庫保存,但在網絡條件惡劣或者安全措施嚴謹的情況下,這樣的方法可能造成重要數據的無法寫入;而Flash MX的SharedObject則可以減緩服務器存儲速度并有效解決此類問題。

        mySO=new SharedObject(); //make a new SharedObject

        SharedObject對象看起來更像是Cookie對象/MMSave方法和FScommand的Save的結合產物。在存儲用戶臨時數據時我們可能經常使用到它,例如:

        //main 1

        i=10
        while(--i){
          var saveme=random(4);   //change text here
          var tmpData=SharedObject.getLocal("testMod");
          if (tmpData.data.data==undefined || tmpData.data.data!=saveme){
            trace("new data saved"+eval(tmpData.data.data=saveme));   //display & save
            tmpData.flush(); //refresh data
          }
          trace(tmpData.data.data);   //display result
          trace("-------------------------------");
        }

        這個例子清楚地說明SharedObject的臨時數據存儲功能。首先,隨機產生0-3的隨機數作為待存數據,然后通過SharedObject的getLocal方法讀取硬盤中文件為testMod.sol中的數據,判斷內容里面名稱為data的子值是否和待存數據相同或者根本無數據,條件成立則刷新存儲構造數據data的data值并顯示結果(“new data saved”)。

        要點:

        先覆蓋原值,然后flush()一次(恰如其名——沖廁所)。

        *顯示當前值,如果和原值相同,則不會顯示new data saved,即沒存入硬盤。(圖1)

      (圖1)

        應用:

        //prepare functions

        soLoad=function(src){
          return SharedObject.getLocal(src);
        }
        soSave=function(src,sdata){
          var tmpData= SharedObject.getLocal(src);
          for (var i in sdata)
            tmpData.data[i]=sdata[i];
          trace(tmpData.getSize());
          return tmpData.flush();
        }

        //from Demon.S function lib SharedObject.localDeleteAll

        SharedObject.prototype.localDeleteAll=function(){
          for(var i in this.data)
            delete this.data[i];
        return this.flush();
        }

        //main 2

        //init

        var mySo="testMod";
        var aryData={aritcle:"Flashmx new lighting world day10",author:"Demon.S",date:"4/8/2002",from:"DnVsystem",url:""}

        //remote (src);
        //local local data

        var tempSO=SharedObject.getLocal(mySo);
        trace("clearing....garbage:" + (tempSO.LocalDeleteAll() ? "cleaned" : "fail in clearning local data"));

        //load & save

        if (soSave(mySo,aryData) && aryData){
          var mainData=soLoad(mySo);
          if (mainData) for(var i in mainData.data) trace(i+":"+mainData.data[i]);
          else trace("Fail in save ");
        }
        else trace("No Data");

        這個例子基本上覆蓋了SharedObject的本地應用的全部常用用法,程序開始的時候我假設不需要上次的記錄,所以我要清除那些東西,所以使用了localDeleteAll()(from Demon.S function lib)方法來清空我要寫的文件;接著判斷一些必要的糾錯,并把已經準備好的數據Object對象aryData用自定義的soSave寫入目標mySo。

      (圖2)

        這樣我們就實現了一個簡單過程,其中getSize方法可以獲取sharedObject的文件大小,在Flash MX的默認是100k,但這個可以由用戶自定義,甚至無限大。

        通過這個例子,我們可以把這樣的過程利用到網站訪問歷史、用戶私人信息存儲、游戲暫存/數據緩存等很多應用。

        存儲結構:

        就好像MX的公用Include路經一樣,SharedObject的存儲路經也很十分的規矩:主根目錄在Application DataMacromediaFlash Player內,存放本機數據的數據都會在localhost目錄中出現,其他網站的數據都會在根目錄以域名格式的文件夾出現,例如上面我們的例子,我在桌面上做的文件就會放在:localhostDocuments and Settingsdemon.UDSDesktopday10.swf。

        存儲格式不是很復雜,提取的時候按照特定的規定簡單的Split截取文件字符并打散成Object,而且數據雖然沒有加密,但這樣可以加快提取速度。

        存儲極限:

        在Flash MX中引入的Settings面板有效的解決了部分安全問題,可由用戶自己控制Camera和Microphone并可控制SharedObject的大小,方法:

        System.showSettings(1);

        源文件下載:

        /tutorial/flash_mx/day10.exe
        

        Tips:

        System.showSettings()的用法:

        System.showSettings(0) //顯示Microphone/Camera允許控制;
        System.showSettings(1) //顯示SharedObject存儲限制;
        System.showSettings(2) //顯示Microphone控制;
        System.showSettings(3) //顯示Camera控制。

             若超出0-3范圍時,例如負數和大于3的數則會Return錯誤,并保持上次showSettings()的狀態。

      如果本頁不是您要找的課程,您也可以百度查找一下:

      亚洲无碼另类精品_亚洲天堂无码高清性视频_欧美日韩一区二区综合_亚洲午夜福利理论片在线贰信

        <acronym id="atkaq"></acronym>
        <bdo id="atkaq"></bdo>

        在线视频中文字幕第一页 | 精品国产高清一区二区三区 | 综合高清aⅴ在线 | 性爱国产精品福利 | 精品国产在天天在线观看 | 伊人青青久精品 |