引言

微信小游戏的开发中,群里面经常有一些同行问如何引入第三方库?

其实引入第三方库很简单。第三方库一般来说是JS文件,不管我们使用的是Laya引擎,还是白鹭引擎,还是cocos引擎,最后发布编译之后,都是JS文件。

也就是说,微信开发者工具跑的都是编译之后的JS文件。第三方库的JS文件直接可以放在开发者工具运行的文件夹下面,此时,游戏代码就可以调用第三方库的代码了。

举例

具体怎么操作呢?我这里举一个例子。

以状态机为例,其官方库是:https://github.com/jakesgordon/javascript-state-machine

想要达到的效果是,引入状态机库,使用状态机管理状态转移,输出一些日志。如果日志正确输出,说明引入库文件正确,达到引入第三方库的目的!

配置

工具引擎

Laya开发IDE工具
引擎使用 1.8.0.1beta

调试工具

Chrome浏览器
微信开发者工具

编程语言

TS

具体操作

想要达到效果,需要代码中引入状态机的JS文件。其核心的文件就是
https://github.com/jakesgordon/javascript-state-machine/blob/master/dist/state-machine.min.js

这里的state-machine.min.js文件就是状态机的核心代码,就是游戏当中需要使用的状态机库文件。有了这个文件,就可以使用状态机进行游戏逻辑的开发了。官方提供的仓库里面有很多东西,其他都不需要。

把这个文件下载下来,放在新建的工程的src文件夹下面。如图:

然后,定义一个类,代码如下:

class StateMachineUtil {constructor() {console.log('main -> state machine:', StateMachine);this.init();}private init(): void {let fsm = new StateMachine({init: 'green',transitions: [{ name: 'warn',  from: 'green',  to: 'yellow' },{ name: 'panic', from: 'yellow', to: 'red'    },{ name: 'calm',  from: 'red',    to: 'yellow' },{ name: 'clear', from: 'yellow', to: 'green'  }],methods: {onWarn: function() {console.log('on warn.');},onBeforeWarn: function() {console.log('on before warn.');},onLeaveWarn: function() {console.log('on leave warn.');},onEnterYellow: function() {console.log('on enter yellow.');},onLeaveYellow: function() {console.log('on leave yellow.');},} });console.log('fsm state:', fsm.state);fsm.warn();fsm.panic();fsm.calm();fsm.clear();console.log('is fsm:', fsm.is('green'));console.log('all state:', fsm.allStates());console.log('all transitions:', fsm.allTransitions());console.log('transitions:', fsm.transitions());}
}

这个类很简单,就是使用StateMachine状态机类搞了一些状态的转移以及状态机的一些方法。

这些状态机的用法不是重点,大概知道能用就行。上面代码运行之后,会输出一些日志。

如果这些日志正常输出,那说明状态机的库代码已经正确引入,并能使用了。

Chrome浏览器测试

完成上面的准备之后,我们先用Chrome浏览器运行

运行Chrome浏览器之后,按键F12 打开浏览器的日志平台:

结果来看,不对啊。错误日志说明StateMachine类并没有引入,怎么回事儿呢?

其实,我们需要了解Chrome浏览器运行的是什么地方的代码。

代码编译之后,bin目录下面的index.html是Chrome浏览器运行的代码的入口。

打开index.html文件,你会发现里面引入了游戏运行所需要的JS文件。

在这里,我们把src目录下放的state-machine.min.js文件,手动引入,如图:

然后现在再编译运行。结果:

红线圈中的部分都是StateMachineUtil类中输出的日志信息。 代码正确运行。

说明StateMachine类库代码引入正确,代码可以正确使用。

微信开发者工具测试

既然在Chrome浏览器中运行成功,那跑在微信开发者工具上,怎么样呢?

发布微信小游戏代码,微信开发者工具上跑一下试试看。

结果:

这个结果跟我们料想的不太一样。
怎么回事儿呢?Chrome浏览器上面跑的好好地,怎么到了微信开发者工具上面就不行了呢?

此时,仍然需要明白一件事情。我们在使用Laya IDE发布微信小游戏的代码的时候,并不会把src目录下的state-machine.min.js文件一起打包。

Laya IDE发布微信小游戏的代码目录是:

注意里面的game.js文件,是微信小游戏的入口文件。而code.js是微信小游戏的代码文件,所有微信小游戏的游戏逻辑都在code.js中。所以这个文件会比较大。

代码中写的StateMachineUtil类是存在code.js文件中的,可以打开code.js文件,查找到StateMachineUtil单词。既然StateMachineUtil单词有,那StateMachineUtil类中引入的StateMachine这个单词肯定也有,对不对?

是的,同样可以查找到!

既然如此,那就像Chrome浏览器运行代码一样,也需要手动添加state-machine.min.js文件。只不过添加的方式不同。Chrome浏览器添加方式是在index.html中引入即可。那微信小游戏如何引入呢?

把state-machine.min.js文件放在微信小游戏发布目录下,与code.js game.js文件放在同一级目录下。然后打开game.js文件,添加下面的内容:

StateMachine = require("state-machine.min.js");

更改前的game.js文件内容如下:

require("weapp-adapter.js");
require("./code.js");

添加后,如下:

StateMachine = require("state-machine.min.js");
require("weapp-adapter.js");
require("./code.js");

然后,不必使用Laya IDE发布,直接使用微信开发者工具,再运行代码代码:

通过结果来看,结果正常。状态机的代码正确运行,并输出。
说明第三方库代码引入正确!

总结

Chrome浏览器方式引入,通过手动在index.html中引入即可。
微信小有戏方式引入,需要在game.js中require引入即可。

不管Chrome浏览器方式引入,还是微信小游戏方式引入,都是代码层级的调用。只不过方式不同而已。搞明白代码的运行机制,明白前因后果,问题就迎刃而解啦。

微信小游戏---引入第三方库的方法相关推荐

  1. 微信小程序使用第三方库(第三方js)问题

    比如很多人会有这样的问题: 小程序怎样引用第三方js呢? 第三方js是封装好的类库 想引用进来实例化使用 这个帖子就综合一下所有相关的知识,做一个整合,以便大家能够集中了了解:我觉得这个还是应该让大家 ...

  2. Swift项目引入第三方库的方法

     分类: iOS(55)  目录(?)[+] Swift项目引入第三方库的方法 转自 http://blog.shiqichan.com/How-To-Import-3rd-Lib-Into-Swif ...

  3. 微信小游戏 获取判群ID方法

    特别注意:微信小游戏已经禁止诱导分享,wx.shareMessage已经没有success回调了 第一步:设置 wx.showShareMenu({withShareTicket:true}); 第二 ...

  4. uniapp微信小程序引入第三方字体库

    前言 最近在使用第三方字体库,然后发现使用uniapp做小程序时引入第三方字体库有着挺多坑,收集了一些网上的资料,我大概整理下,防止以后继续踩坑 这是uniapp官网的引入字体图标方法 字体引入 从c ...

  5. 微信小程序 - 引入第三方字体(使用网络字体)

    前言 因项目需求,需要一套第三方字体,如下图所示效果(YC MEMBERSHIP SEASON CARD 和 数字0): 实现 1.引入一套第三方字体(如上图所示的第三方字体). 2.在 App.vu ...

  6. 第32月第8天 打包 Framework 时使用 CocoaPods 引入第三方库的方法

    1. 但是可以发现打包完后的 .framework 包里面是没有 CocoaPods 集成的第三方库的,所以在使用 .framework 包时,工程中必须也要集成 .framework 包中用到的第三 ...

  7. uniapp微信小程序引入第三方广告插件

    以Slime广告插件为例. 一.微信小程序后台申请相关插件 二.manifest.json文件 "mp-weixin" : {"appid" : "* ...

  8. 微信小程序 - 引入第三方字体(使用网络字体艺术字)

    前言 有时候因项目需求,可能需要一套第三方艺术字体,就像如图所示效果(店内自取 / 外卖): 实现 当然,也可以直接使用微信 API wx.loadFontFace ,具体请查看 官方示例文档. 引入 ...

  9. 微信小程序——引入第三方图标、图标组件

    这里以Iconfont 为例 iconfont-阿里巴巴矢量图标库 一.直接引用 创建一个图标项目,名字自定义,我的是fontIcon, 注意项目的 前缀 和font family两处自己定义的名字 ...

最新文章

  1. GridView学习记录(一)
  2. 你不会编程,不是你不行,很有可能是老师教的方法不好。科学家发现:对大脑而言,代码编程与语言学习不同...
  3. POJ 3020 Antenna Placement
  4. 一键截图_教你一键为iPhone截图加上手机外壳,新技能快学起来!
  5. 主管护士需要考计算机和英语吗,2020主管护师改为机考,一定要注意这些问题!...
  6. 最优化学习笔记(七)——Levenberg-Marquardt修正(牛顿法修正)
  7. print(程序结束)_Python入门丨print()函数
  8. 蘑菇街裁员14%为实现盈亏平衡?回应:系正常调整
  9. python 跳过异常元素继续,在python中的迭代器/生成器中引发异常后继续
  10. 机器学习(统计学习方法)基础知识
  11. javascript实现的中国象棋单机双人
  12. 查找python array索引
  13. C. Not Adjacent Matrix
  14. android flurry 教程,android一种统计工具Flurry的使用说明
  15. 微信android版字体,微信炫彩字下载-微信七彩字体 安卓版v1.6.2-PC6安卓网
  16. 有哪些好玩有趣的国内外网站值得分享?
  17. http://www.blogjava.net/beansoft/archive/2007/03/09/102812.html
  18. python:os.chdir()
  19. 趣图:万一跑路失败被抓,可以这样解释
  20. 文件格式转换DOS到UNIX:dos2unix+UltraEdit(解决no such file or directory问题)

热门文章

  1. 【预测模型-ELM预测】基于原子搜索算法优化极限学习机预测matlab代码
  2. 智能武器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. 2022年各国程序员编程水平排行榜出炉,排名第一的国家没听说过
  4. [转载]Tomcat+MySQL+JSP+LCDS+Flex+Eclipse环境搭建完美攻略
  5. WebRTC与SIP
  6. 基于flask+vue前后端分离 一款简单的旅游网站源码,带admin管理系统
  7. 龙白滔 | DC/EP vs Libra,全球数字货币竞争正式拉开序幕
  8. [SDM660 Android9.0]camera所遇问题与解决方法
  9. Ubuntu 12.04 安装 skype
  10. 牛顿迭代法求平方根、立方根