📄 personaction.as
字号:
/** * @(#)PersonAction.as * * @author soda E-mail:junaisy@163.com * @version 1.0 * <br>Program Name: NetGame for Blue * <br>Date: 2007-4-23 */import org.blue.net.ConnectJavaServer;import mx.soda.util.Map;import org.game.context.Session;import mx.soda.util.HashMap;import org.game.context.UserEsate;import org.game.context.CurrentMovie;/** * 响应服务端的呼叫 */class org.game.response.PersonAction { private var userMC:MovieClip; private var userSet:Map; private var gameMainMC:MovieClip; private var connect:ConnectJavaServer; private var session:Session; private var currentMovie:CurrentMovie; /** * 构造函数 * @param gameMainMC:游戏主界面的mc */ public function PersonAction(gameMainMC:MovieClip) { session = Session.getSession(); userSet = session.getUserSet(); this.gameMainMC = gameMainMC; debug("userSet:" + userSet); debug("gameMainMC:" + gameMainMC); connect = ConnectJavaServer.getConnectJavaServer(); currentMovie = CurrentMovie.getUserEsate(); } /** * 当有新用户登陆时,呼叫该方法更新一个新用户 * @param userName:新登陆用户的用户名 * @param sculpt:新登陆用户的角色名 */ public function userLogin(userName:String,sculpt:String):Void { //debug("有新玩家登陆了!!!"); //载入玩家,排除自己 if(userName != session.getName()) { createUser(userName,sculpt,300,428); debug("session.getUserMC():" + session.getUserMC()); //同时呼叫服务器,把自己的信息传送给刚登陆的用户 connect.call("PersonAction","userCome",null,userName,session.getName() ,session.getSculpt(),session.getUserMC()._x, session.getUserMC()._y); updateList(userName); } } /** * 接受已经登陆的用户信息和位置 */ public function userCome(userName:String,sculpt:String,x:Number,y:Number):Void { if(userName != session.getName()) { createUser(userName,sculpt,x,y); } updateList(userName); } /** * 相同场景用户发生的动作 */ public function userAction(name:String,action:String):Void { var mc = userSet.get(name); debug("name" + name); debug("mc" + mc); mc[action](); } /** * 用户退出 * @param name:退出的用户名 */ public function userExit(name:String):Void { userSet.get(name).removeMovieClip(); delete userSet.get(name).removeMovieClip(); userSet.remove(name); if(currentMovie.getChat() != undefined) { currentMovie.getChat().exitUser(name); } } /** * 接受服务器传过来的好友谈话内容 */ public function friendSpeak(friendName:String,msg:String):Void { var userEsate:UserEsate = UserEsate.getUserEsate(); trace("==========userEsate.getOpenFriend()=============" + userEsate.getOpenFriend()); if(userEsate.getOpenFriend()) { //获取当前聊天窗口 var currentMovie:CurrentMovie = CurrentMovie.getUserEsate(); var mc:MovieClip = currentMovie.getFriendChat(); mc.setShowContent(msg); } else { //存放起来 session.addTalkContent(friendName,msg); //提示有信息 trace("==========gameMainMC==========" + gameMainMC); trace("==========gameMainMC.comeMailMC==========" + gameMainMC.comeMailMC); gameMainMC.comeMailMC._visible = true; gameMainMC.comeMailMC.play(); gameMainMC.comeMailMC.friendInfo.text = "您的好友 " + friendName + " 有信息发过来,请注意查收!!"; } } /** * 接受同个场景其他用户说话的内容 */ public function userSpeak(userName:String,msg:String):Void { var mc = userSet.get(userName); mc.speak(msg); } /** * 更新用户信息 */ public function updateInfo(msg:String):Void { trace("更新用户信息了"); currentMovie.getChat().updateInfo(msg); } /** * 更新用户列表 */ public function updateList(userName:String):Void { currentMovie.getChat().updateList(userName); } /** * 创建一个新玩家 */ private function createUser(userName:String,sculpt:String,x:Number,y:Number) { var temp = userSet.get(userName); //如果已经存在,就删除 if( temp!= undefined) { temp.removeMovieClip(); } var mc:MovieClip = gameMainMC.attachMovie(sculpt,"userMC" + gameMainMC.USER_DEPTH,gameMainMC.USER_DEPTH++); mc._x = x; mc._y = y; mc.setName(userName); //存放起来 userSet.put(userName,mc); } //调试信息 public function debug(msg:String):Void { trace("debug PersonAction -> " + msg); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -