做了个微信小商城后,想做个微信小游戏,肯定不会看cocos2dx-h5,
所以在网上找了一下,结果悲剧了,不但不怎么好用,甚至很多游戏源码,都放在MiniProgram里面去了
无奈只能自己从头写,网上的游戏源码完全跑不起来
不赖的是微信的例子还不错
所以想做的方案就是在默认例子上面再搭一个MVC和网络通讯
这肯定是先需要一个EventManager把
结果一百度,又烦了,TMD都是说的EVENT LOOP,百度了几分钟,看了几篇这样水文
实在看不下去了,不懂我说什么的,请看我之前的文章
" 你作为程序员是搞技术的还是搞理论的?通篇那样的只有理论知识的水文,对于资深程序员不能入门JS,对于入门程序员不能提高JS编程能力 ”
技术是需要苦练得出的。。。而不是看回来的。。。当然。。。天才例外
神烦之后,找了一个技术博客(不是这个论坛的博客),应该好用:
var EventUtil={
addHandler:function(element,type,handler){ //添加事件
if(element.addEventListener){
element.addEventListener(type,handler,false); //使用DOM2级方法添加事件
}else if(element.attachEvent){ //使用IE方法添加事件
element.attachEvent("on"+type,handler);
}else{
element["on"+type]=handler; //使用DOM0级方法添加事件
}
},
removeHandler:function(element,type,handler){ //取消事件
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent("on"+type,handler);
}else{
element["on"+type]=null;
}
},
getEvent:function(event){ //使用这个方法跨浏览器取得event对象
return event?event:window.event;
},
getTarget:function(event){ //返回事件的实际目标
return event.target||event.srcElement;
},
preventDefault:function(event){ //阻止事件的默认行为
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue=false;
}
},
stopPropagation:function(event){ //立即停止事件在DOM中的传播
//避免触发注册在document.body上面的事件处理程序
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble=true;
}
},
getRelatedTarget:function(event){ //获取mouseover和mouseout相关元素
if(event.relatedTarget){
return event.relatedTarget;
}else if(event.toElement){ //兼容IE8-
return event.toElement;
}else if(event.formElement){
return event.formElement;
}else{
return null;
}
},
getButton:function(event){ //获取mousedown或mouseup按下或释放的按钮是鼠标中的哪一个
if(document.implementation.hasFeature("MouseEvents","2.0")){
return event.button;
}else{
switch(event.button){ //将IE模型下的button属性映射为DOM模型下的button属性
case 0:
case 1:
case 3:
case 5:
case 7:
return 0; //按下的是鼠标主按钮(一般是左键)
case 2:
case 6:
return 2; //按下的是中间的鼠标按钮
case 4:
return 1; //鼠标次按钮(一般是右键)
}
}
},
getWheelDelta:function(event){ //获取表示鼠标滚轮滚动方向的数值
if(event.wheelDelta){
return event.wheelDelta;
}else{
return -event.detail*40;
}
},
getCharCode:function(event){ //以跨浏览器取得相同的字符编码,需在keypress事件中使用
if(typeof event.charCode=="number"){
return event.charCode;
}else{
return event.keyCode;
}
}
};
等我试完再给大家报告,大概的调用方法是:
(我在原来的打官方默认飞机例子,加了BOSS战斗)
import DataBus from '../databus'
import Enemy from '../npc/enemy'
let databus = new DataBus()
export default class level_manager
{
constructor(bossCount=1){
this.bossCount = bossCount
this.isBossTime = false
this.boss = null
this.databus = new DataBus()
}
update()
{
if(this.isBossTime)
{
if(this.boss==null)
{
this.generateBoss()
}
}
}
generateBoss(){
let enemy = databus.pool.getItemByClass('enemy', Enemy)
enemy.init(1)
databus.enemys.push(enemy)
this.boss = enemy
}
}