zoukankan      html  css  js  c++  java
  • 一个关于SharedObject存储位置的讨论

    这里记录一个小的知识点,其实也不是经常用到但是,用到了的时候确实觉得有点蹊跷了,元芳你怎么看, 我们在用一个testA.swf作为加载器去用Loader方法去加载另外一个testB.swf,而这个被加载的swf调用了一个本地存储的方法,就是我们大名鼎鼎的SharedObject了,但是在我们去查看本地缓存的时候发现这个testB.swf的存储路径是在testA.swf的目录下面的。 C:\Users\Benny\AppData\Roaming\Macromedia\Flash Player\#SharedObjects\..\..\flash\testA.swf 但是,当我们用个URLStream去加载的时候是可以保存在testB.swf目录下面的。 C:\Users\Benny\AppData\Roaming\Macromedia\Flash Player\#SharedObjects\..\..\flash\testB.swf 这里附上源码 加载器testA
    package
    {
    	
    	import flash.display.Loader;
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.net.SharedObject;
    	import flash.net.URLLoader;
    	import flash.net.URLRequest;
    	import flash.net.URLStream;
    	import flash.system.ApplicationDomain;
    	import flash.system.LoaderContext;
    	import flash.utils.ByteArray;
    	
    	public class Test5 extends Sprite
    	{
    		private var __loader	:Loader;
    		private var __urlLoader	:URLStream;
    		public function Test5()
    		{
    			__urlLoader	=	new URLStream();
    			__urlLoader.addEventListener(Event.COMPLETE, urlLoaderCompleteHandler );
    			__urlLoader.load( new URLRequest( "Test6.swf" ) );
    			__loader	=	new Loader();
    			__loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler );
    			
    		}
    		
    		protected function urlLoaderCompleteHandler(event:Event):void
    		{
    			// TODO Auto-generated method stub
    			var bytes	:ByteArray	=	new ByteArray();
    			__urlLoader.readBytes( bytes );
    			__loader.loadBytes( bytes );
    			
    		}
    		
    		private function loadCompleteHandler( event:Event ):void
    		{
    			
    		}
    	}
    }
    
    被加载对象testB.swf
    package
    {
    	import flash.display.Sprite;
    	import flash.net.SharedObject;
    
    	public class Test6 extends Sprite
    	{
    		public function Test6()
    		{
    			init();
    		}
    		
    		public function init():void
    		{
    			SharedObjectUtils.setValue( "value", 1234546 );
    		}
    	}
    }
    
    下面是一个简单的utils
    package
    {
    	import flash.net.SharedObject;
    
    	public class SharedObjectUtils
    	{
    		static private var __localShared	:SharedObject;
    		static private function get localShared():SharedObject
    		{
    			if( __localShared == null )
    				__localShared	=	SharedObject.getLocal( "test" );
    			return __localShared;
    		}
    		static public function getValue( key:String ):Object
    		{
    			return localShared.data[ key ];
    		}
    		
    		static public function setValue( key:String, value:Object ):void
    		{
    			localShared.data[ key ]	=	value;
    			localShared.flush();
    		}
    	}
    }
    
  • 相关阅读:
    C语言文本文件实现局部修改
    TTMS框架设计思路及实例介绍
    浅谈函数与操作符的重载
    Java:继承与多态
    Java:类与对象(二)
    Java : 类与对象(一)
    C语言 数的阶乘、高次幂、大数加法及大数乘法
    C语言下的位运算
    enum:枚举类型介绍与简单使用
    C语言实现字符界面下的学生管理成绩系统
  • 原文地址:https://www.cnblogs.com/AS30/p/3113261.html
Copyright © 2011-2022 走看看