2009-07-30 5 views

Répondre

1

Vous pouvez utiliser la propriété size de SharedObject. Pour autant que je sache, il montre la taille d'un SharedObject spécifique, pas tous, comme je le suppose l'option Paramètres s'affiche. Je pense que 100K est la taille par défaut et l'utilisateur est invité dans le cas où plus d'espace est nécessaire.

Il y a un joli exemple pratique dans la documentation ainsi:

"

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

Merci pour votre réponse, mais ce que je suis AFTER est pour voir la "capacité", pas la taille actuelle de l'objet sharedObject. par exemple. voir si l'utilisateur a mis la limite à 0, 10KB, 100KB (ce qui est par défaut comme vous l'avez dit), 1MB, 10MB, ou illimité – Clox

+4

Je vois ce que vous voulez dire. J'ai regardé la documentation et n'ai rien trouvé de maniable. Cela ressemble à une chose simple et pratique à avoir. Vous pourriez essayer de vider une plus grande valeur juste pour le test et l'utilisateur sera invité pour plus d'espace si nécessaire. par exemple. essayez { flushStatus = mySo.flush (10000); } catch (erreur: erreur) { output.appendText ("Erreur ... Impossible d'écrire SharedObject sur le disque \ n"); } Je pense que la plupart des gens ne modifient pas beaucoup leurs réglages, donc je pense qu'il est sûr de s'en tenir à 100K pour la plupart des utilisateurs. Demandez à vos utilisateurs d'autoriser –

+2

pour plus d'espace disque avant d'essayer de rincer quelque chose de gros, peut-être utiliser un écran d'impression pour le rendre évident. Je pense que c'est aussi bon que ça. –

Questions connexes