FLASHAS3与服务器通信 新手勿进!

发表在    flash as2爱好者 10-06 19:35:16

2 1981 0

前言: 编程少年 这篇文章 在百度搜不到的 好好珍惜吧!想制作小游戏的可以加入我们XE大家族!

注意:本文新手勿看 你也看不懂    本文可能部分存在广告内容  管理也别删 删了多可惜啊?百度都没有

//正式开始

全屏按钮.addEventListener(MouseEvent.CLICK,全屏按钮函数);//鼠标点击清空按钮就调用函数 清空按钮函数

function 全屏按钮函数(event:MouseEvent):void //定义清空按钮函数

{

stage.displayState = StageDisplayState.FULL_SCREEN;//电脑系统AS3全屏操作

}

function 键盘函数(event:KeyboardEvent):void  //定义 键盘函数

{

if(event.keyCode==13){ //检测按下的键ID是不是13 (回车键)

 if(发送文本.text!=""){//检测发送文本是不是 不为空

递增变量++;  //递增变量加1

发送消息函数(发送文本.text,名字变量,递增变量,"xx"); /*调用函数 发送消息函数(发送的信息,名字,这个别管,指令)*/

  }

}

}

音控按钮.addEventListener(MouseEvent.CLICK,音控函数);//鼠标点击音控按钮就调用函数 音控函数

音控按钮.addEventListener(TouchEvent.TOUCH_TAP,音控函数);//移动设备上点击音控按钮就调用函数 音控函数

function 音控函数(event:MouseEvent):void //定义音控函数

{

音.play(); //这里的硬盘剪辑是用来设置声音的 也就是变量 Stage.prototype.音开

}

gotoAndStop(Stage.prototype.帧状态)//防电脑版作弊

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;//允许移动设备上的触屏操作

stop()//这个不用说了吧?

清空按钮.addEventListener(MouseEvent.CLICK,清空按钮函数);//鼠标点击清空按钮就调用函数 清空按钮函数

清空按钮.addEventListener(TouchEvent.TOUCH_TAP,清空按钮函数);//移动设备上点击清空按钮就调用函数 清空按钮函数

function 清空按钮函数(event:MouseEvent):void //定义清空按钮函数

{ if(Stage.prototype.音开==1){ //检测用户是否开了声音

 pq.gotoAndStop(3);//我们这等于播放爆炸声

}

显示文本.text=""; //清空主文本

}

返回按钮.addEventListener(MouseEvent.CLICK,回城按钮函数);//这3个不用说了,自己看上面

返回按钮.addEventListener(TouchEvent.TOUCH_TAP,回城按钮函数);

function 回城按钮函数(event:MouseEvent):void

{

stage.removeEventListener(KeyboardEvent.KEY_DOWN, 键盘函数); //删除键盘侦听函数 就是按键盘没用了

连接对象.removeEventListener(NetStatusEvent.NET_STATUS, 连接事件函数);//删除连接对象的侦听

组播对象.removeEventListener(NetStatusEvent.NET_STATUS, 连接事件函数);//看上面

连接对象.close()//连接对象断开连接

组播对象.close()//组播对象断开连接

gotoAndStop(1)//跳到第一帧登陆页

}

var 递增变量=0  //变量赋值

 var 连接对象:NetConnection; //声明连接对象 类型为NetConnection

  var 组播对象:NetGroup;  //看上面

 var 名字变量:String;

 

 var connected:Boolean = false;//这个我就不知道了

连接函数(); //调用连接函数 让对象连接到服务器上

 function 连接函数():void //定义 连接函数

{

//创建网络连接

连接对象 = new NetConnection();

//添加连接事件侦听

连接对象.addEventListener(NetStatusEvent.NET_STATUS,连接事件函数);

//连接地址“rtmfp:”(这是局域网的 需要服务器加我Q2199182141)

连接对象.connect(Stage.prototype.fmsh);//连接对象连接到服务器

名字变量 = 玩家名字.data.玩家名字 //给名字变量赋值

}

 function 连接事件函数(event:NetStatusEvent):void //定义连接事件函数

{

消息显示函数(event.info.code,event.info.code,event.info.code,event.info.code);/*连接上后将服务器给的息传给消息显示函数*/

 switch(event.info.code) //判断服务器给的消息

{

case "NetConnection.Connect.Success":

名字文本.text=名字变量;

//连接成功,创建需要广播的群组

发送按钮.addEventListener(MouseEvent.CLICK,发送按钮函数) //一旦按下发送按钮,就出发发送按钮函数

发送按钮.addEventListener(TouchEvent.TOUCH_TAP,发送按钮函数)//移动设备上的...

stage.addEventListener(KeyboardEvent.KEY_DOWN,键盘函数);//主屏侦听键盘,一旦有人按键盘,触发键盘函数

初始化组播函数(); //初始化组播对象

break;

case "NetGroup.Connect.Success":

connected = true;

break;

case "NetGroup.Posting.Notify":

//当获取到群组post群发通知的时候调用相关函数

//就是别人发信息,就触发此代码

传递消息函数(event.info.message);

break;

case "NetGroup.Neighbor.Connect":

case "NetGroup.Neighbor.Disconnect":

if(Stage.prototype.音开==1){

 pq.gotoAndStop(4);

}

break;

case "NetConnection.Connect.Failed":

Stage.prototype.帧状态=1

gotoAndStop(1);//跳会第一帧

mm.text="连接失败!"

break;

}

}

 function 初始化组播函数():void //定义函数 初始化组播函数

{

/*

GroupSpecifier类可以构造一个传递到NetStream和NetGroup的构造函数的加密groupspec字符串。 

一个groupspec指定一个RTMFP P2P群组,包括功能、限制和成员授权等信息。

构造函数中的"myGroup/groupOne"为群组标识,可以随意字符串代替

*/

var 组播连接对象:GroupSpecifier = new GroupSpecifier(Stage.prototype.dkh);/*类变量Stage.prototype.dkh是组名称也就是你和你的

 //设置群组中post群发方式是否可用

组播连接对象.postingEnabled = true;

//指定是否能通过ip多播方式交换更新关于组成员的信息。

组播连接对象.ipMulticastMemberUpdatesEnabled = true;

组播连接对象.serverChannelEnabled = true;/*这个是最重要的 我就因此没测试成功 这个是允许组播连接对象使用服务器通道*/

 /*

将相关的群组加入某个IP地址并侦听相关的端口

Multicast的IP地址需要从不低于224开始,端口需高于1024 ————“224.0.0.0:1024”

为保证唯一性,一般设置高一些比较可靠:)

*/

组播连接对象.addIPMulticastAddress("225.225.0.1:30607");//端口不重要

//在已成功的连接nc上创建一个群组

//groupspecWithAuthorizations:返回一个包含授权的加密的groupspec字符串, 传给NetGroup的构造函数。

组播对象 = new NetGroup(连接对象,组播连接对象.groupspecWithAuthorizations());//说实话 我也没理解

//为群组增加事件侦听

组播对象.addEventListener(NetStatusEvent.NET_STATUS,连接事件函数);//看前面

}

 function 发送消息函数(aac:String,bbc:String,ccc:String,ddc:String):void//定义发送消息函数

 {

//注意,post方法传递的是一个对象Object,由此大家可以方便的在此对象中添加各种需要传递的属性:)

var message:Object = new Object();

//转换一个peerID的群组地址,以适合使用sendToNearest()方法。

message.sender = 组播对象.convertPeerIDToGroupAddress(连接对象.nearID);

message.aac = aac;//这个我们定义为消息 或内容

message.bbc = bbc;//这个我们定义用户

message.ccc = ccc;//这个是递增变量 为了防止消息重复也接受消息

message.ddc = ddc;//这个是命令 假如我发xx 你检测收到的是xx的话就显示aac 也就是消息

组播对象.post(message);//正式将消息发送出去!

传递消息函数(message);//由于是我们发的信息 我们可以提前接收消息

}

 function 传递消息函数(message:Object):void 

{

消息显示函数(message.aac,message.bbc,message.ccc,message.ddc);//调用消息显示函数将message:Object传给他

  }

 function 消息显示函数(aac:String,bbc:String,ccc:String,ddc:String):void{//定义消息显示函数

 trace(aac+"-"+bbc+"-"+ccc+"-"+ddc)//测试时用

var aacc="成功连接!-----------------------" 

var bbcc="系统"

 if(aac!="NetConnection.Connect.Success"){

 if(aac!="NetGroup.Connect.Success"){

aacc=aac

}

 }

  if(bbc!="NetConnection.Connect.Success"){

 if(bbc!="NetGroup.Connect.Success"){

bbcc=bbc

}

 }

 if(bbc=="NetGroup.Neighbor.Connect"){

  aacc="一名用户上线!-----------------------"

 bbcc="系统"

 }

  if(bbc=="NetGroup.Neighbor.Disconnect"){

if(Stage.prototype.音开==1){

 pq.gotoAndStop(4);

}

  aacc="一名用户下线!-----------------------"

 bbcc="系统"

 }

 

 if(bbc!="NetGroup.Posting.Notify"){

    if(ddc=="xx"){

trace("ok")

if(Stage.prototype.音开==1){

 pq.gotoAndStop(2);

}

 显示文本.appendText("("+bbcc+"说:"+aacc+")"+"\n");//显示系统说的话

 } else {

显示文本.appendText("("+bbcc+"说:"+aacc+")"+"\n");//显示其他用户说的话

    }

 }

 if(aacc==发送文本.text){

 发送文本.text=""

 }

}

function 发送按钮函数(event:MouseEvent):void

{

if(发送文本.text!=""){

递增变量++;//变量递增 避免消息重复而别人接受不到

发送消息函数(发送文本.text,名字变量,递增变量,"xx");

}

}

//--------------------------------------------

这里不多做解释 ,不懂的加我QQ2199182141 我给解答

自定义参数以后 我们就可以开动脑筋 做小型网游了!

登录或注册后发布评论