博客

  • 小程序onshow事件

    问题描述

    onShow 事件在小程序里面非常重要,场景之多,导致处理起来很复杂。很多业务场景依赖与onShow与onHide事件。比如分享给他人,在群里PK等等。

    (更多…)
  • 游戏引擎是怎样将一个canvas绘制到另外一个canvas上

    canvas 中画另外一个canvas,在原生的接口里面有一种方法

    (更多…)
  • H5小游戏的未来

    H5游戏市场是一个巨大空白市场。腾讯所有的平台都在积极探索H5游戏的可能,都不愿意错过这样的机会。无论是微信、手机QQ、QQ空间或浏览器,这是一个不容忽视的增长点,平台需要与开发商紧密合作,一起探讨H5游戏的未来。

    (更多…)
  • Laya 开发小游戏的注意点

    总结下近期用Laya开发微信小游戏中遇到的一些问题。

    (更多…)

  • gulp构建小程序

    WechatIMG277

    截止目前为止,自己开发过不下十款小程序。算是有些经验,其实对于一个熟悉了前端开发的工程师,小程序的入门会非常简单,无非是要多熟悉些API和小程序的开发工具。本质上和写一个H5页面没有什么区别。

    (更多…)

  • Cocos Creator与Laya开发差异

    为了适配微信小程序开发,需要改引擎的代码,大概40处左右,主要是将DOM和BOM操作的相关接口改掉。

    cocos体系和Laya体系还是很不一样的。

    (更多…)

  • H5游戏的一些基础概念

    最近项目需要,开始学习游戏开发。感觉隔行如隔山,虽然都叫开发,但完全不是一个样。组内已有人在用LayaAir游戏引擎,统一流程,我也拿它入门学习。

    (更多…)

  • 根据protobuf自动Mock数据的正确姿势

    Protobuf

    Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,他们用于 RPC 系统和持续数据存储系统。

    Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。为什么要讲到它,因为我们后台的协议就是用的它。

    (更多…)

  • gulp-protobufjs 踩坑记

    protobuf对于后台开发来说应该是在熟悉不过了,google定义的协议。这次我们要拿它在前端干点事,它定义了后台的数据结构,那么如果前后台的数据是一一对应的,protobuf就能为前端所用。尤其是在前后台同时开发的时候。通过gulp-protobufjs来解析protobuf文件,生成对应的JSON文件。

    在使用的过程中,刚开始一切都很顺利,直到遇到了这个错误:

    Error (gulp-protobufjs): cannot determine import root

    这个错误让人一脸懵逼啊,字面意思是import依赖出错。后来检索到关键字出打log,发现依赖google/protobuf/descriptor.proto的时候这个错误就出现了,其他情况相当的正常。

    gulp-protobufjs这个gulp插件最终是依赖了protobuf.js这个来处理,核心逻辑全在这里面。在他的issues里面找到一个差不多的错误,依赖没有解决的思路。根据google/protobuf关键字搜索到这个项目的readme。事情终于出现了转机:

    Though it’s possible to include them:

    1. You may explicitly reference them by providing a relative or absolute path in your .proto files. E.g. use ./google/protobuf/descriptor.proto and bundle the file with your application.

    2. If you use the proto2js command line utility with the -legacy option and the descriptor namespace is explicitly referenced, it is included in the generated output.

    readme 里面说的意思是说,默认是没有把google/protobuf/descriptor.proto解析进来,但提供了两种方式把他加进去。一直是写相对或者绝对路径,而是通过legacy配置。

    通过阅读源码:node_modules/protobufjs/cli/pbjs.js,发现处理legacy命令的地方,他的描述也确实如此。那么他实际对应的就是options。

    legacy: {
                    alias: "l",
                    describe: "Includes legacy descriptors from google/protobuf/ if\nexplicitly referenced.",
                    default: false
                },
    

    剩下的问题就是在配置项加上这个。有点坑爹的是,gulp-protobufjs插件把这个配置项堵死了,对外的接口压根没有设置这个参数的。无奈之下,只能去修改他的源文件了node_modules/gulp-protobufjs/options.js

    options = {
        encoding: encoding,
        input: input,
        target: target,
        path: options.path,
        ext: extension,
        noErrorReporting: noErrorReporting,
        showStack: showStack,
        legacy: true // 这里增加一个参数
    };
    

    对应源文件的42行,加上此就能愉快的转换了。后面再介绍整体的pb2json整体的流程。发现这个还是挺有用,除了mock后台返回的数据,在做前端页面适配,xss测试等等都能够有很大的用处,前端可以变得更加自动化,节省人力,提高效率。

  • 字符串反转算法

    最近在翻阅《编程珠玑》第二版,真的是字字珠玑。在看到第二章的“啊哈,算法”的一道题目,将字符串反转。将一个具有n个元素的一维向量x向左旋转i个位置。例如,将 abcdefg 向左旋转 3 个位置之后得到 defgabc。要求是花费与n成比例的时间以及尽可能少的空间来完成这个操作。看到此题后的第一想法就是临时数组,下面来看下具体代码:

    (更多…)