我爱编程一只腊鸭做游戏

拳头大战开发历程2-准备工作

2018-06-21  本文已影响8人  回忆并快

1.自定义数据结构

为了更加方便处理数据,我从github中找到的一个ts库,稍微修改了提供给Laya中使用。


包含这些常用的数据结构

优点:用法跟C#的基本一样,支持强类型,操纵数据方便。
举个栗子(数组的增删查改):

var testList: List<string> = new List<string>();
var str: string = "test";
// 增
testList.add(str);
// 删
testList.remove(str);
// 查
var idx: number = testList.indexOf(str);
testList.get(idx);
// 改
testList.set(idx, "haha");

注意事项:
对于Dictionary的遍历,因为我们项目是基于es5的,所以不能使用for of遍历,否则会
有类似报错。

'Type 'Dictionary<number, string>' is not an array type or a string type.'

正确的做法,使用迭代器遍历:

var testDict: Dictionary<number, string> = new Dictionary<number, string>();
testDict.addKeyValue(1, "quinsmpang1");
testDict.addKeyValue(2, "quinsmpang2");
var iterator: ICollection<string> = testDict.values();
var r: IteratorResult<string>;
while (r = iterator.next(), !r.done) {
    console.log(r.value);
}

引入办法:把collections,interfaces这两个文件夹拷贝到Laya的src目录下面。
移步下载

2.工具类和函数

在使用typescript编写代码的过程中,想要调用微信的接口,一般来说,可以这么做:
直接window['wx']或者Laya.Browser.window.wx来获取到wx对象,从而调用getUserInfo之类的Api。
虽然这样做没有问题,但是没有代码提示和每次编写都要去查Api文档,非常不方便。
所以我去搜刮了一番github,果然有相关的d.ts描述文件。
只要把这个文件放入libs中跟LayaAir.d.ts同目录,即可直接wx.xxx的方式调用接口而且描述很详细,当然,这个文件不一定包含所有接口,可以参考其他接口,自行根据官方文档维护。
另外,微信的接口,有时候会返回一些加密数据,但是我又想在客户端进行解析的话,如果参考小游戏提供的解密node项目,引入是非常麻烦的,主要我们并没有用到node的环境,引入一个简单微信数据解密库,也是很有必要的~
跟微信那个d.ts一样引入方式。
此外还有3个js文件,需要在index.html引入。

    <script type="text/javascript" src="libs/hmac-sha256.js"></script>
    <script type="text/javascript" src="libs/aes.js"></script>
    <script type="text/javascript" src="libs/enc-base64.js"></script>

根据wx接口返回的encryptedData和iv进行解密(getUserInfo,getWeRunData等接口返回的数据都可以使用),同样使用node的后台也可以引入使用。

public static decodeData(sessionKey: any, encryptedData: any, iv: any) {
    var key:any = CryptoJS.enc.Base64.parse(sessionKey);
    var iv:any = CryptoJS.enc.Base64.parse(iv);
    var decrypted = CryptoJS.AES.decrypt(encryptedData, key, {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    var result = decrypted.toString(CryptoJS.enc.Utf8);
    return JSON.parse(result);
}

移步下载

上一篇 下一篇

猜你喜欢

热点阅读