Please tell me a simple source code of netstream game.
Hi.My name is Jeong-Hyeon-Seong.I'm planning to make a simple p2p game(Korean people call as JUMP-JUMP).I was success at making multi-p2p chat application by course.But one important thing has remained.
this is my source code that powered by course,which is made by Leoz(레 의 잡다한 밤하늘 : 네이버 블로그)
import flash.net.NetConnection;
import flash.net.NetGroup;
import flash.net.GroupSpecifier;
import flash.net.NetStream;
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
import flash.display.MovieClip;
import flashx.textLayout.utils.CharacterUtil;
stop()
nam.text = irm;
var _netconnection:NetConnection;
var _groupname:String;
var _netgroup:NetGroup;
var _groupspecifier:GroupSpecifier;
var _sendstream:NetStream;
var _connected:Boolean = false;
var _recvstreamarray:Array = [];
var _recvstreamfaridarray:Array = [];
var _connectingurl:String;
var i:int;
var _userarray:Array = [];
var objo:Object = {}
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
const CONNECT_URL:String = 'rtmfp://p2p.rtmfp.net/xxx/';
dcon.addEventListener(MouseEvent.CLICK,disconnecting_f);
snd.addEventListener(MouseEvent.CLICK,sending_f);
con.addEventListener(MouseEvent.CLICK,startc_f);
function sending_f(a:MouseEvent)
{
_sendstream.send('recvprot_msg',nam.text+':'+msg.text);
//리시브 함수 1번;
msgsplus_f(nam.text+':'+msg.text);
}
function startset(ncurl:String, stname:String)
{
_groupname = stname;
_groupspecifier = new GroupSpecifier(_groupname);
_groupspecifier.serverChannelEnabled = true;
_netconnection = new NetConnection ;
_netconnection.addEventListener(NetStatusEvent.NET_STATUS,netstatus_f);
_connectingurl = ncurl;
_netconnection.connect(_connectingurl);
msgsplus_f('채팅방'+'Name- '+stname);
}
function startc_f(e:MouseEvent)
{
msgsplus_f('연결을 시도합니다.');
startset(CONNECT_URL,'ase');
con.enabled = false;
_userarray.push(nam.text);
ulists.appendText(_userarray[0]);
}
function msgsplus_f(string:String)
{
msgs.appendText(String(string)+'\n');
}
function netstatus_f(e:NetStatusEvent):void
{
if (e.info.level == 'error')
{
msgsplus_f(e.info.code+'\n 의 에러가 발생합니다.');
}
else if (e.info.code =='NetConnection.Connect.Success')
{
_netgroup = new NetGroup(_netconnection,_groupspecifier.groupspecWithAuthorizations());
_sendstream = new NetStream(_netconnection,NetStream.DIRECT_CONNECTIONS);
msgsplus_f(_netconnection.nearID);
var obj = new Object();
obj.onPeerConnect = function(e):Boolean
{
pushrecvstream_f(e.farID);
return true;
};
_sendstream.client = obj;
_sendstream.publish(_groupname);
}
else if (e.info.code == 'NetGroup.Connect.Success')
{
_netgroup.addEventListener(NetStatusEvent.NET_STATUS,netstatus_f);
}
else if (e.info.code == 'NetGroup.Neighbor.Connect')
{
pushrecvstream_f(e.info.peerID);
_sendstream.send('recvprot_nick',nam.text);
//채팅관련함수
}
else if (e.info.code == 'NetGroup.Neighbor.Disconnect')
{
}
else if (e.info.code == 'NetStream.Connect.Success')
{
msgsplus_f('Clear');
_sendstream.send('recvprot_nick',nam.text);
//리시브 함수 2번;
}
else if (e.info.code == 'NetStream.Play.Start')
{
_connected = true;
_sendstream.send('recvprot_nick',nam.text);
//리시브 함수 2번;
}
};
function pushrecvstream_f(newpeerid:String):void
{
//수신관련 함수
for (i=0; i<_recvstreamarray.length; i += 1)
{
if (_recvstreamarray.farID == newpeerid)
{
return;
}
}
var _newrecvstream:NetStream = new NetStream(_netconnection,newpeerid);
_newrecvstream.addEventListener(NetStatusEvent.NET_STATUS,netstatus_f);
var obj = new Object();
obj.recvprot_msg = function(e)
{
msgsplus_f(e)
};
//리시브 함수 1번
obj.recvprot_nick = function(e)
{
for(i=0;i<_userarray.length;i+=1){
if(_userarray == e)
{
return;
}
}
//리시브 함수 2번
_userarray.push(e as String);
msgsplus_f('추가');
ulists.appendText(_userarray[_userarray.length-1]+'\n');
_sendstream.send('recvprot_nick',nam.text)
};
obj.recvprot_delete = function(e)
{
for(i=0;i<_userarray.length;i+=1)
{
if(e as String == _userarray)
{
msgsplus_f(_userarray+'사용자님이 접속을 종료하셨습니다.');
_userarray.splice(i,1)
break;
}
}
ulists.text = _userarray[0];
for(i=1;i<_userarray.length;i+=1)
{
ulists.appendText(_userarray+'\n');
}
};
_newrecvstream.client = obj;
_newrecvstream.play(_groupname);
_recvstreamarray.push(_newrecvstream);
}
function disconnecting_f(e:MouseEvent)
{
_connected = false;
_sendstream.send('recvprot_delete',nam.text);
_netgroup.close();
_recvstreamarray = [];
_recvstreamfaridarray = [];
_userarray = [];
_sendstream.close();
_netconnection.close();
ulists.text = '';
con.enabled = true;
msgsplus_f('종료');
rot.gotoAndStop(1);
}
In this situation,I would like to add the character's meeting and moving.But I didn't have the idea about this.Because my applying power is about zero.
Please tell me the source code about character's meeting and moving.When that done,I really appreciated.And My Dream in Winter vacation was fully achieved.I'm going to plan a game with relatives.
so Lot of help will be appriciated.Thank you.
