⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 joingamecommand.as

📁 Flex3实现的掼蛋游戏
💻 AS
字号:
/**
 * 用户通过验证后执行进入游戏事件
 * 事件分2部分
 * 第一部分为 将用户设置的游戏存入SharedObject 如果成功 则将信息写入全局数据对象
 *                                       如果不成功 则提示用户是否要设置 如果用户不要求存储 则将信息写入全局数据对象
 * 第二部分为 进行过场动画
 * 2008-03-25
 */ 
package com.dmh2002.games.cardgame.cairngorm.command
{
	import com.adobe.cairngorm.commands.ICommand;
	import com.adobe.cairngorm.commands.SequenceCommand;
	import com.adobe.cairngorm.control.CairngormEvent;
	import com.dmh2002.games.cardgame.cairngorm.control.CardGameSceneChangeEvent;
	import com.dmh2002.games.cardgame.cairngorm.control.JoinGameEvent;
	import com.dmh2002.games.cardgame.cairngorm.model.CardGameModelLoactor;
	
	import flash.events.NetStatusEvent;
	import flash.net.SharedObject;
	import flash.net.SharedObjectFlushStatus;
	import flash.system.Security;
	import flash.system.SecurityPanel;

	public class JoinGameCommand extends SequenceCommand implements ICommand
	{
		[Bindable]
		private var  _model:CardGameModelLoactor = CardGameModelLoactor.getInstance();
		
		//建立一个本地存储对象
		private	var _sharedObject:SharedObject 
			
		public function JoinGameCommand()
		{
		}

		override public function execute(event:CairngormEvent):void
		{
			setSharedObject(JoinGameEvent(event));
		}
		//
		
		//尝试写入SharedObject
		private function setSharedObject(event:JoinGameEvent):void 
		{
			//建立一个本地存储对象
			_sharedObject = SharedObject.getLocal(_model.defaultLocalName);
			_sharedObject.data.userName = event.userName;
			_sharedObject.data.userSex =  event.userSex;
			_sharedObject.data.userNums = event.userNums;		
			_sharedObject.data.userFaceClassName = event.userFaceClassName;
			
			//
			_model.defaultUserName = event.userName;
			_model.defaultUserSex  = event.userSex;
			_model.defaultUserNums = event.userNums;
			
			try {
				//尝试写入文件
				var flushResult:String = _sharedObject.flush();
				//如果用户允许来自此域的对象进行本地信息存储,
				//但所分配的空间量不足以存储该对象。
				//Flash Player 将提示用户允许更多空间。
				//需要加入NetStatusEvent.NET_STATUS事件的监听,
				//用以处理用户选择确定或者取消事件
				if (flushResult != null) {
                	switch (flushResult) 
                	{
                    	case SharedObjectFlushStatus.PENDING:
                      	  	_sharedObject.addEventListener(NetStatusEvent.NET_STATUS, onStatus );
                      	  	break;
                   	 	case SharedObjectFlushStatus.FLUSHED:                    	  	        				
                      	  	trace("保存成功");
                      	  	//发场景切换事件,切换回游戏场景
                      	  	executeNextCommand();
                      	  	
                        	break;
                	}
            	}
			} catch (e:Error) {
				//如果用户将flash player设置为不同意存储本地资料
				//则会执行到这里
				//如果存储的资料很重要,你可以打开下方的语句,以跳出设置框
				Security.showSettings( SecurityPanel.LOCAL_STORAGE);
			}
			//分配的空间量不足以存储该对象。
			
		}
		
		//发场景切换事件,切换回游戏场景
		public override function executeNextCommand():void
		{            
            var _cardGameSceneChangeEvent:CardGameSceneChangeEvent = new CardGameSceneChangeEvent(
            															_model.gameLogin_UserFaceTileList.parent)
            nextEvent = _cardGameSceneChangeEvent;  
            super.executeNextCommand();
            nextEvent = null;
        }

		//处理用户选择事件
		private	function onStatus( event:NetStatusEvent ):void 
		{
			
			if ( event.info.code == "SharedObject.Flush.Success" ) 
			{
				trace("用户同意");
			} 
			else if ( event.info.code == "SharedObject.Flush.Failed" ) 
			{
				//用户选择拒绝后执行的程序
				trace("用户拒绝");
			}
			//移除事件的监听。
			_sharedObject.removeEventListener( NetStatusEvent.NET_STATUS, onStatus );
			
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -