没有Unity3d_微信小游戏入门

做了个微信小商城后,想做个微信小游戏,肯定不会看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战斗)

没有Unity3d_微信小游戏入门_第1张图片

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
  }

}


 

你可能感兴趣的:(每天一点u3d)