`

Flex之共享对象 ------ 示例代码演示 .

阅读更多
MySharedObj.as

package FlexLearn.shareObj
{
	import flash.events.NetStatusEvent;
	import flash.net.SharedObject;
	import flash.net.SharedObjectFlushStatus;

	/**flex共享对象类**/
	public class MySharedObj
	{
		private var sharedObj:SharedObject;
		
		public function MySharedObj()
		{
			sharedObj = SharedObject.getLocal("haha");    //生成一个本地共享对象sharedObj,haha是要保存在本地的文件的名字,后缀名为.sol  
		}
		
		/**读取**/
		public function myReadValue():String{
			
			var str:String = sharedObj.data.selfValue;  
			var arr:Array = sharedObj.data.selfArr;  
			trace(sharedObj.size);    //共享对象当前所存储的总字节大小(读取效率低,尽量别用)
			/**   
			 * 如果当前共享对象没有存储东西(即size属性值为0),或执行了clear方法,所有的自定义属性都没了   
			 * 则所有[sharedObj.data.自定义属性]的值都为undefined;如sharedObj.data.selfValue   
			 **/  
			trace(sharedObj.data);    //output [object Object]
			trace(sharedObj.data.selfValue);    //if(size==0){output tenten}else{undefined}    
//          trace(sharedObj.data.selfArr[0].B);    //output helloworld劳动节   
			return "*****";  
		}
		
		
		/**
		 * 保存共享数据
		 * sharedValue 字符串
		 * bufLength 缓冲值
		 */
		public function mySaveValue(sharedValue:String, bufLength:Number):void{
			
			sharedObj.data.selfValue = sharedValue;    //存储了一个字符串 
			
			/**
			 * SharedObject对象可以保存各种格式的数据
			 * 一种格式的数据对象都可以用一种SharedObject对象(sharedObj.data)的自定义属性来存储
			 * (如selfAtt属性存储了一个数组arr)。   
			 * 如果一个共享对象的属性目前还没存储数据,则此属性的返回值为undefined   
			 * */
			var arr:Array = new Array();
			arr.push({A:"你好呀", B:"helloworld劳动节", C:"108"});         //这是一个数据结构(要保存的数据1)
			sharedObj.data.selfArr = arr;    //selfArr是自定义乱起的共享对象(sharedObj.data)的属性名(乱起的前提是在保存的时候乱)   
			
			/**显示的把共享对象写入本地磁盘(flush方法),不然可能会把共享对象当做垃圾回收掉**/ 
			var flushStatus:String = null;
			try{
				
				flushStatus = sharedObj.flush(bufLength);    //bufLength表示缓冲值 
				
			}catch(error:Error){   
				
				trace("error message: " + error.message);   
				
			}

			if(flushStatus != null){    /*判断共享对象是否正确的写入了本地磁盘*/    
				switch(flushStatus){
					//磁盘大小不够
					case SharedObjectFlushStatus.PENDING:
						sharedObj.addEventListener(NetStatusEvent.NET_STATUS, nowFlushStatus);
						break;
					//成功保存
					case SharedObjectFlushStatus.FLUSHED:
						trace("success saved");   
						break;
				
				}   
	         } 
		}
		
		
		private function nowFlushStatus(event:NetStatusEvent):void{
			switch(event.info.code){
				case "SharedObject.Flush.Success":    //flush success   
					trace("User granted permission, value saved 成功");   
					break;
				case "SharedObject.Flush.Failed":    //flush failed   
					trace("User denied permission, value not saved 失败");   
					break;
			}
			sharedObj.removeEventListener(NetStatusEvent.NET_STATUS, nowFlushStatus);   
		}
		
		
		/*clear 清除本地共享对象shareObj*/   
		public function myClearValue():void{   
			            /**   
			            * clear方法   
			            * 对于本地共享对象,清除所有数据并从磁盘删除共享对象。   
		             	* 对共享对象的引用仍然处于活动状态,但其数据属性(sharedObj.data的所有属性)被删除。   
			            * */   
			            sharedObj.clear(); 
			            delete sharedObj.data.savedValue;   
			        }  
		
		
	}
}


shareObj.mxml

<?xml version="1.0" encoding="utf-8"?>   
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"    
				 xmlns:s="library://ns.adobe.com/flex/spark"    
				 xmlns:mx="library://ns.adobe.com/flex/halo"  
				 minWidth="1024" minHeight="768"  
				 creationComplete="init();">     
	  
	  
<fx:Script>   
       <![CDATA[   
	            private var sharedObj:MySharedObj;   
	               
	           private function init():void{   
		                sharedObj = new MySharedObj();
		            }   
	              
	        ]]>   
 </fx:Script>   
	     
	    <s:Button id="readBut" x="100" y="100" label="read" click="trace(sharedObj.myReadValue());"/>   
	    <s:Button id="saveBut" x="200" y="100" label="save" click="sharedObj.mySaveValue('tenten', 0);"/>   
	    <s:Button id="clearBtn" x="300" y="100" label="clear" click="sharedObj.myClearValue();"/>   
	      
</s:Application>
分享到:
评论

相关推荐

    flex----组件---行为类与特效类

    文章可能还涉及了一些具体的示例,如EffectsCtrlDemo,这个例子可能是演示如何控制组件的行为和特效的。 总的来说,行为类和特效类是Flex中增强组件交互性和视觉体验的重要手段。通过合理地运用这两类工具,开发者...

    Flex Style很酷的例子来共享

    这个“Flex Style很酷的例子”压缩包可能包含了各种使用Flex布局的示例代码,通过查看和实践这些示例,你可以更直观地理解Flex布局的工作原理,并学习如何在实际项目中应用。文件名“FlexStyle”可能包含HTML、CSS和...

    flex生成图片并保存

    描述中提到的“网上找到的,共享一下”可能是指有现成的示例代码。在提供的压缩包文件列表中,我们看到两个MXML文件(SaveChart.mxml和SaveWebcam.mxml)和两个XML配置文件(SaveChart-app.xml和SaveWebcam-app.xml)...

    flex教程_chm

    "flex文档"标签提示我们,教程中可能涵盖了完整的Flex开发流程,从创建项目、设计界面、编写代码、调试测试到部署发布,每个环节都有详细的解释和示例。这对于开发者来说是一份全面的学习资料。 "flex实例"则意味着...

    Flex新手教程_入门级学习笔记

    - **静态方法/变量**:类级别,所有对象共享同一份。 ##### 接口 (Interface) - **定义**:一组方法签名的集合,不包含具体实现。 - **用途**:提供一种规范,让类遵循特定的行为模式。 ##### 继承 (Inheritance)...

    flex viewer 3.0

    6. **API和开发文档**:Flex Viewer 3.0提供了详细的API文档和示例代码,帮助开发者快速理解和使用这个框架,进行二次开发。 7. **社区支持**:作为开源项目,Flex Viewer 3.0拥有活跃的开发者社区,用户可以在其中...

    flex java整合应用

    8. `BindingModelingValidatingFormatting.mxml`:这可能是一个示例,演示了数据绑定、模型构建、验证和格式化的用法,这些都是Flex UI开发中的关键概念。 通过这些文件,开发者可以学习到如何将Flex的UI设计和数据...

    flex3.0+flash

    3. **ActionScript 3.0 代码共享**:由于 Flex 和 Flash 都使用 ActionScript 3.0,所以可以编写可复用的代码库,提高开发效率。例如,你可能会在 "Chapter01" 中看到一些通用的函数或类,它们既能在 Flex 中使用,...

    flex sfs demo

    Flex是一种用于创建富互联网应用程序(RIA)的开放源代码框架,而SFS则是为Flex应用提供数据共享和存储服务的组件。 1. **Flex技术**:Flex是由Adobe开发的,用于构建基于Flash Player或Adobe AIR运行时的交互式...

    MPC5744P_FlexCAN_Learning:这是基于MPC5744P平台的DEVKIT开发板的FlexCAN模块测试验证的工程

    3. **示例代码**:工程可能包含了一些示例代码,演示如何使用FlexCAN功能。这些代码可以用来验证FlexCAN模块的功能,比如建立点对点通信、多播通信或者故障注入等场景。 4. **配置文件**:可能包含用于配置FlexCAN...

    flex cairngorm框架实例 真正可运行直接导入

    在“flex cairngorm框架实例 真正可运行直接导入”中,我们拥有的是一个可以直接导入并运行的示例项目。这表明该压缩包包含了一个完整的、配置好的Cairngorm框架应用,开发者无需额外配置或修改就能启动和测试。这...

    modelglueflex

    **示例代码** `examples` 目录通常包含了一些演示如何使用 `modelglueflex` 的实例代码。通过研究这些例子,开发者可以直观地学习到框架的用法,理解其工作原理,并能快速上手实践。 **应用模板** `...

    轻量级Eval库Grak轻量级Eval库Grak

    4. `AuthortimeSharedAssets.fla` - 这个文件可能包含了在设计时共享的资源,可能与Grak库的演示或测试相关。 5. `main.html` - 这是用于在Web浏览器中展示SWF(Flash)内容的HTML容器,可能用来运行使用Grak库的AS...

    用FLEX和AJAX做图形定义工具

    在提供的"demo-graph"文件中,可能包含了一个简单的示例项目,演示了上述概念的实际应用。用户可以通过查看源码来深入理解FLEX和AJAX如何协同工作,创建出一个功能完善的图形定义工具。 总之,结合FLEX的可视化能力...

    RED5 BLAZEDS

    - **Red5_BlazeDS_Flex**:这个文件可能包含了一个完整的示例项目,演示了如何在Flex 4环境中配置和使用RED5及BlazeDS。可能包括Flex源代码、配置文件、示例数据等。 - **Red5_BlazeDS_Java**:此文件可能包含了与...

    Angular-Client

    服务是Angular中用于封装共享逻辑和数据的对象,它们可以跨组件通信,提高代码复用。通过`@Injectable()`装饰器,服务可以被注册到依赖注入系统中。 9. **测试与持续集成** Angular CLI 包含自动化测试工具,如...

    FlexPrettyPrintCommand_0.8.9

    3. 示例代码:可能包含一些未格式化的代码示例,用于演示插件的效果。 4. 许可证文件:阐述了插件的使用许可条件,尊重开源软件的版权是很重要的。 总的来说,FlexPrettyPrintCommand_0.8.9是FlexBuilder用户的一个...

    as3 p2pTest测试代码

    通过在URL中指定“localhost”,意味着测试代码将在本地计算机上运行,并且“HelloServer”可能是一个简单的示例应用或服务,用于演示P2P连接和通信。 在提供的文件列表中: 1. `p2p_HelloWorld.as`:这是一个AS3...

    vulcan2012:Vulcan Project是Flex(Actionscript)微体系结构-开源

    通常,这样的示例会包含一个运行在Adobe AIR环境下的Flex应用,它演示了Vulcan框架的用法,帮助开发者更好地理解和学习如何在自己的项目中集成Vulcan。 通过研究这个样本,开发者可以了解到Vulcan如何处理命令管理...

Global site tag (gtag.js) - Google Analytics