安卓包下载试玩链接:https://pan.baidu.com/s/1ZHmp2Nd_nQxqY2YfyTBTHQ?pwd=tjeo
,需自行注册一个账号,匹配可以加我微信一起,至少两个人才能匹配。
感觉突然加上了急钱字样
带服务器嘛?
带的。。。。。。。。。。。
哈哈,感觉这样更好看些
蛮不错的样子,这个项目成本花了多少
2年半的业余时间,和几千根头发
美术你都自己做啊,看来 能者多劳 说的没错
是的呢,美术资源都是自己用ps做的
264限时低价,抓紧抢购啦。。。。。。。
我在想,卖出50份应该已经是很好了吧?
才卖几份,这个钱也太难挣了。。。
大家好,今天给大家分享下,此moba项目中的事件用法。相信大家都遇到过,无论是网络事件,还是实现游戏业务的时候用的事件,在写法上都会有些痛处,今天给大家带来的是一个公共的事件管理器,一个管理器便能解决游戏中所有的事件需求。废话不多说,上代码:
import { EventHandler, Node } from "cc";
export class EventManager{
private dict: any={};
public static Instance:EventManager=new EventManager();
/**
* 添加消息监听
* @param type 消息唯一标识
* @param listener 侦听函数
* @param listenerObj 侦听函数所属对象
*
*/
public addListener(type: string, listener: Function, listenerObj: any): void {
var arr: Array<any> = this.dict[type];
if (arr == null) {
arr = new Array<any>();
this.dict[type] = arr;
}
//检测是否已经存在
var i: number = 0;
var len: number = arr.length;
for (i; i < len; i++) {
if (arr[i][0] == listener && arr[i][1] == listenerObj) {
return;
}
}
arr.push([listener, listenerObj]);
}
/**
* 移除消息监听
* @param type 消息唯一标识
* @param listener 侦听函数
* @param listenerObj 侦听函数所属对象
*/
public removeListener(type: string, listener: Function, listenerObj: any): void {
var arr: Array<any> = this.dict[type];
if (arr == null) {
return;
}
var i: number = 0;
var len: number = arr.length;
for (i; i < len; i++) {
if (arr[i][0] == listener && arr[i][1] == listenerObj) {
arr.splice(i, 1);
break;
}
}
if (arr.length == 0) {
this.dict[type] = null;
delete this.dict[type];
}
}
/**
* 移除某一对象的所有监听
* @param listenerObj 侦听函数所属对象
*/
public removeAll(listenerObj: any): void {
var keys = Object.keys(this.dict);
for (var i: number = 0, len = keys.length; i < len; i++) {
var type = keys[i];
var arr: Array<any> = this.dict[type];
for (var j = 0; j < arr.length; j++) {
if (arr[j][1] == listenerObj) {
arr.splice(j, 1);
j--;
}
}
if (arr.length == 0) {
this.dict[type] = null;
delete this.dict[type];
}
}
}
/**
* 触发消息
* @param type 消息唯一标识
* @param param 消息参数
*
*/
public dispatch(type: string, ...param: any): void {
if (this.dict[type] == null) {
return;
}
this.dealMsg(type,undefined,param);
}
/**
* 触发指定对象的消息
* @param type 消息唯一标识
* @param param 消息参数
*
*/
public dispatchObj(type: string,listenerObj: any, ...param: any): any {
if (this.dict[type] == null) {
return;
}
return this.dealMsg(type,listenerObj,param);
}
/**
* 处理一条消息
*/
private dealMsg(type: string,listenerObj: any, ...param: any): any {
var listeners: Array<any> = this.dict[type];
var i: number = 0;
var len: number = listeners.length;
var listener: Array<any> = null as unknown as Array<any>;
let res;
while (i < len) {
listener = listeners[i];
// console.log('listenerObj='+listenerObj+',listener[1]='+listener[1])
if(!listenerObj || (listenerObj && listenerObj == listener[1])){ //派发
res=listener[0].apply(listener[1], param);
}
if (listeners.length != len) {
len = listeners.length;
i--;
}
i++;
}
return res;
}
}
使用方法如下:
注册事件:
EventManager.Instance.addListener(EventType.OnChat,this.OnChat,this.listenerObj)
private OnChat(param: any): void { }
抛出事件到所有的侦听函数对象(带可选参数):
EventManager.Instance.dispatch(EventType.OnChat, 123);
抛出事件到指定的侦听函数对象(带可选参数):
EventManager.Instance.dispatchObj(EventType.OnChat, this.listenerObj, 123);
更多moba项目中经典写法,敬请关注此贴。
主要是你这个是java,你要是go或者rust估计多几个人购买
也可以买来自己翻译成go或其它语言,java是比较通用的语言会的也比较多的。
有这个翻译的时间为什么不自己写一个?java,php过去的10年里各大大学都教学,所以多人会很正常,但是他们已经是过去式了,新项目只要稍微有点头脑的人都不会愿意用他们来做,新项目注意了
自己写更耗时间,并且前端完全从0开始,如果买这个,至少可以对着协议实现自己的后台。还可以参照已经开发的后台。你要知道时间就是金钱。
冲压。。。。。
做程序员做成你这个样子确实有点悲伤~
那老总你年入几千万呀