Flash MX 编程深层次应用-网络连线游戏(1)
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-10
|
第7章 网络连线游戏——四子连
7.1 游戏的登陆
????
作为一个下棋游戏,其最基本的一点内容就是登陆。这个登陆看似简单,其实不然,因为登陆是一个游戏的入口,它完成下面几个功能:
??????????? 输入用户名
??????????? 输入服务器IP
??????????? 发送连接服务器指令
??????????? 根据服务器返回信息给用户以反馈
这些功能是一个登陆页面要具备的功能,登陆页面如图7-2所示。
在这里设置一个服务器IP是为了方便调试程序,其实在真正的登陆页中应该不出现,代之出现的应该是密码、性别等其他内容,从图7-2中明显可以看出它有两个输入框和一个按钮。
图7-2
7.1.1? 游戏初始化
登陆MC中初始化部分的程序代码如下:
??? //这个server就是前面说的服务器IP地址,127.0.0.1是代表本地服务
??? server = "127.0.0.1";
?? //把输入的光标移到服务器IP的文本框中
??? Selection.setFocus( "server" );
??? function trim(strin)
??? {
?????? //去字符串两边空格命令
???????????? var i,j;
???????????? for(i=0; i < strin.length; i++)
????????????????????? if(strin.charAt(i) != '' '')
??????????????????????????????? break;
???????????? if(i == strin.length)
????????????????????? return "";
???????????? for(j=strin.length-1; j >= i; j--) ?????
????????????????????? if(strin.charAt(j) != '' '')
??????????????????????????????? break;
???????????? return strin.substring(i,j+1);
??? }
其实也没有什么,就是一个简单的初始化的部分,一个去除字符串头尾空格的函数。Flash已经发展到MX版本了,去空格的函数都没有,还要程序员自己写,真是怪事。其实Flash MX不但没有这个函数,也没有子串替代的函数(replace)。好了,言归正传,这个函数没有什么好讲的,看看登陆按钮的代码吧。
login.onPress = function () {
var port = 1120;
??? if (trim(nickname) == "" || nickname == null) {
???????????? status = "名字不能为空";
??? } else if (nickname.indexOf(",") != -1 || nickname.indexOf(":") != -1 || nickname.indexOf(" ") != -1) {
???????????? status = "姓名中不可以包含'',''、'':''及空格字符";
??? } else {
???????????? _root.nickname = trim(nickname);
???????????? _root.chatSocket.connect(server, port);
???????????? status = "正在连接服务器 "+server+":"+port;
??? }
}
在这里,这个登陆用的按钮被命名为login,如图7-3所示。
图7-3
这里仅支持按钮,并没有支持键盘的回车操作。如果需要支持回车操作,则第一行的程序应做如下修改:
login.onPress = login_in;
Key.addListener(this);
this.onKeyDown = function() {
??? if (Key.isDown(Key.ENTER))? login_in();
}
function login_in() {
……
从这个代码来看,Flash MX如果要同时支持按钮与键盘甚至鼠标的话,操作就变得麻烦了,不像以前一个语句on (press, keyPress "")便可。不过想想也应该,MX把各种事件响应拆开,这样对每个事件程序方便了,但是代码就增长了。这个按钮响应事件中有一个文本显示框status,还有一个非常重要的Socket实例名_root.chatSocket,这个实例是在主场景被创建的。
7.1.2? 游戏主场景
下面是主场景的程序:
//创建一个XML Socket连接
chatSocket = new XMLSocket();
//这个onConnect是用来定义当连接成功所调用的函数
chatSocket.onXML = onXML;
sys = "[公告] ";
chatSocket.onConnect = onConnect;
function onConnect (success) {
??? trace("connect = "+success);
??? if (success == false) {
???????????? this.close();
???????????? objLogin.status = " 在连接服务器 "+objLogin.server+" 时出错";
??? } else {
???????????? objLogin.status = " 您已成功的连到 "+objLogin.server;
?????? //如果成功连接就发送一条连接命令
???????????? var xmlM |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|