📄 joingamecommand.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 + -