借助VS Code咱们能够极大地提升基于ActionScript的LayaAir Html5游戏项目的调试效率,VS Code的优点有如下几点:javascript
Visual Studio Code(VS Code)是一个由微软开发的,同时支持Windows、Linux和OS X操做系统的开源文本编辑器。它支持调试,内置了Git 版本控制功能,同时也具备开发环境功能,例如代码补全(相似于 IntelliSense)、代码片断、代码重构等。Visual Studio Code支持多种主流编程语言,对JavaScript
和TypeScript
语言的原生支持很是完备。咱们熟知的LayaAir IDE
以及Egret Wing
都是基于Visual Studio Code二次开发的。软件的下载和安装见官方网站。html
这是一个必要的插件,它使得咱们能够在VS Code中调试Chrome浏览器中运行的JavaScript游戏代码。这个扩展开源免费,由微软驱动。在VS Code中的扩展商店搜索Debugger for Chrome
便可找到。详情参考官方文档。
html5
本文使用的示例项目是基于ActionScript的,它由LayaAir IDE自动生成。示例项目只有两个类。java
LayaSample.as
git
package { import laya.events.Event; public class LayaSample { public function LayaSample() { //初始化引擎 Laya.init(1136, 640); trace('hello laya.'); Laya.stage.on(Event.CLICK, this, mouseHandler); } private function mouseHandler(e:Event=null):void { var myfoo:Foo = new Foo(); // myfoo.barbarbar(); myfoo.baz(); } } }
Foo.as
github
package { public class Foo { public function Foo() { } public function barbarbar() { trace('bar bar bar.'); } public function baz() { var a; a.b(); } } }
把项目文件夹拖入VS Code便造成了一个VS Code工做空间。在根目录建立名为.vscode
的文件夹,并在此文件中建立文件launch.json
,并把如下内容复制到此文件中。想要了解配置详情的话,能够查看VS Code以及其插件的官方文档。web
{ "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "launch", "name": "Launch Chrome against localhost", "file": "${workspaceRoot}/bin/h5/index.html", "webRoot": "${workspaceRoot}", "userDataDir": "${workspaceRoot}/.userdata", "runtimeArgs": [ "--allow-file-access-from-files", "--allow-file-access-frome-files", " --disable-web-security" ] }, { "type": "chrome", "request": "attach", "name": "Attach to Chrome", "port": 9222, "webRoot": "${workspaceRoot}" } ] }
在.vscode
文件夹中建立文件settings.json
,并复制如下内容到文件内。这样咱们能够在搜索的时候排除一些文件夹。chrome
{ "search.exclude": { "**/src": true, "**/libs": true, "**/laya": true } }
最后,在根目录中建立空文件jsconfig.json
,这可让咱们进行跨文件搜索。
你也能够下载示例项目的源码并复制相应的文件到你的项目中。能够从这里下载到项目源码。
编程
在开发过程当中,断点调试是比较频繁的。VS Code提供了多种方式来帮助咱们快速定位须要断点的代码行。json
Ctrl+T
在多个JavaScript文件之间定位指定的类名、本地变量名。Ctrl+Shift+O
来定位类名、类成员函数、本地变量名。Ctrl+Shift+F
在全部的JavaScript文件中的定位任意字符串。使用Ctrl+P
来快速打开任意指定的文件。
qux.js
,一个是主模块文件LayaSample.max.js
。想要跨文件搜索,咱们须要保证至少有一个JavaScript文件在VS Code中处于打开状态。若是咱们只让qux.js
处于打开状态,使用Ctrl+T
打开输入框,那么咱们能够:layasample
或者它的前几个字符来当即定位LayaSample
这个类。输入本地变量的全名或者前几个字符来定位本地变量。好比输入myfoo
或者它的前几个字符来当即定位myfoo
这个本地变量。
LayaSample.max.js
,用Ctrl+Shift+O
打开输入框,那么咱们能够:layasample
或者它的前几个字符来当即定位LayaSample
这个类。myfoo
或者它的前几个字符来当即定位myfoo
这个本地变量。输入类成员函数的的全名或者前几个字符来定位它。好比输入barbarbar
或者它的前几个字符来当即定位barbarbar
这个成员函数。
使用Ctrl+Shift+F
快速搜索Foo.barbarbar方法中的字符串'bar bar bar.'
使用Ctrl+P
来快速打开任意qux.js
这个文件。
使用F5
开启调试,调试方式和Chrome基本相同。
在myfoo.barbarbar();
这一行打上断点,点击游戏区域即可触发此断点。在调试控制台能够看到barbarbar
这个方法的输出。
点击游戏区域即可触发Foo.baz这个方法的报错,断点会自动触发并中止在a.b();
这一行,而且提醒TypeError: Cannot read property 'b' of undefined
。
在html页面加载的时候执行的JavaScript代码断点可能不生效,除非你再次刷新页面。官方对此有详细的解释。
见图