2009-07-30 86 views

回答

1

您可以使用SharedObject的size属性。 据我所知它显示了一个特定的SharedObject的大小,并不是所有的,因为我认为 设置选项显示。我认为100K是默认大小,并且在需要更多空间时提示用户。

有文档中一个非常方便的例子还有:

package { 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.events.NetStatusEvent; 
    import flash.net.SharedObject; 
    import flash.net.SharedObjectFlushStatus; 
    import flash.text.TextField; 
    import flash.text.TextFieldAutoSize; 
    import flash.text.TextFieldType; 

    public class SharedObjectExample extends Sprite { 

     private var mySo:SharedObject; 

     public function SharedObjectExample() { 
      buildUI(); 
      saveBtn.addEventListener(MouseEvent.CLICK, saveValue); 
      clearBtn.addEventListener(MouseEvent.CLICK, clearValue); 

      mySo = SharedObject.getLocal("application-name"); 
      output.appendText("SharedObject loaded...\n"); 
      output.appendText("loaded value: " + mySo.data.savedValue + "\n\n"); 
     } 

     private function saveValue(event:MouseEvent):void { 
      output.appendText("saving value...\n"); 
      mySo.data.savedValue = input.text; 

      var flushStatus:String = null; 
      try { 
       flushStatus = mySo.flush(10000); 
      } catch (error:Error) { 
       output.appendText("Error...Could not write SharedObject to disk\n"); 
      } 
      if (flushStatus != null) { 
       switch (flushStatus) { 
        case SharedObjectFlushStatus.PENDING: 
         output.appendText("Requesting permission to save object...\n"); 
         mySo.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); 
         break; 
        case SharedObjectFlushStatus.FLUSHED: 
         output.appendText("Value flushed to disk.\n"); 
         break; 
       } 
      } 
      output.appendText("\n"); 
     } 

     private function clearValue(event:MouseEvent):void { 
      output.appendText("Cleared saved value...Reload SWF and the value should be \"undefined\".\n\n"); 
      delete mySo.data.savedValue; 
     } 

     private function onFlushStatus(event:NetStatusEvent):void { 
      output.appendText("User closed permission dialog...\n"); 
      switch (event.info.code) { 
       case "SharedObject.Flush.Success": 
        output.appendText("User granted permission -- value saved.\n"); 
        break; 
       case "SharedObject.Flush.Failed": 
        output.appendText("User denied permission -- value not saved.\n"); 
        break; 
      } 
      output.appendText("\n"); 

      mySo.removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); 
     } 

     // UI elements 
     private var inputLbl:TextField; 
     private var input:TextField; 
     private var output:TextField; 
     private var saveBtn:Sprite; 
     private var clearBtn:Sprite; 

     private function buildUI():void { 
      // input label 
      inputLbl = new TextField(); 
      addChild(inputLbl); 
      inputLbl.x = 10; 
      inputLbl.y = 10; 
      inputLbl.text = "Value to save:"; 

      // input TextField 
      input = new TextField(); 
      addChild(input); 
      input.x = 80; 
      input.y = 10; 
      input.width = 100; 
      input.height = 20; 
      input.border = true; 
      input.background = true; 
      input.type = TextFieldType.INPUT; 

      // output TextField 
      output = new TextField(); 
      addChild(output); 
      output.x = 10; 
      output.y = 35; 
      output.width = 250; 
      output.height = 250; 
      output.multiline = true; 
      output.wordWrap = true; 
      output.border = true; 
      output.background = true; 

      // Save button 
      saveBtn = new Sprite(); 
      addChild(saveBtn); 
      saveBtn.x = 190; 
      saveBtn.y = 10; 
      saveBtn.useHandCursor = true; 
      saveBtn.graphics.lineStyle(1); 
      saveBtn.graphics.beginFill(0xcccccc); 
      saveBtn.graphics.drawRoundRect(0, 0, 30, 20, 5, 5); 
      var saveLbl:TextField = new TextField(); 
      saveBtn.addChild(saveLbl); 
      saveLbl.text = "Save"; 
      saveLbl.selectable = false; 

      // Clear button 
      clearBtn = new Sprite(); 
      addChild(clearBtn); 
      clearBtn.x = 230; 
      clearBtn.y = 10; 
      clearBtn.useHandCursor = true; 
      clearBtn.graphics.lineStyle(1); 
      clearBtn.graphics.beginFill(0xcccccc); 
      clearBtn.graphics.drawRoundRect(0, 0, 30, 20, 5, 5); 
      var clearLbl:TextField = new TextField(); 
      clearBtn.addChild(clearLbl); 
      clearLbl.text = "Clear"; 
      clearLbl.selectable = false; 
     } 
    } 
} 

+6

谢谢您的回答,但我什么后查看“容量”,而不是当前的sharedObject大小。 例如看看用户是否已将限制设置为...... 0,10KB,100KB(这是默认的,如你所说),1MB,10MB或无限制 – Clox 2009-08-03 15:09:01