赞
踩
借助VS Code我们可以极大地提高基于ActionScript的LayaAir Html5游戏项目的调试效率,VS Code的优势有以下几点:
Visual Studio Code(VS Code)是一个由微软开发的,同时支持Windows、Linux和OS X操作系统的开源文本编辑器。它支持调试,内置了Git 版本控制功能,同时也具有开发环境功能,例如代码补全(类似于 IntelliSense)、代码片段、代码重构等。Visual Studio Code支持多种主流编程语言,对JavaScript
和TypeScript
语言的原生支持非常完备。我们熟知的LayaAir IDE
以及Egret Wing
都是基于Visual Studio Code二次开发的。软件的下载和安装见官方网站。
这是一个必要的插件,它使得我们可以在VS Code中调试Chrome浏览器中运行的JavaScript游戏代码。这个扩展开源免费,由微软驱动。在VS Code中的扩展商店搜索Debugger for Chrome
即可找到。详情参考官方文档。
本文使用的示例项目是基于ActionScript的,它由LayaAir IDE自动生成。示例项目只有两个类。
LayaSample.as
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();
}
}
}
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Foo.as
package {
public class Foo {
public function Foo() {
}
public function barbarbar() {
trace('bar bar bar.');
}
public function baz() {
var a;
a.b();
}
}
}
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
把项目文件夹拖入VS Code便形成了一个VS Code工作空间。在根目录创建名为.vscode
的文件夹,并在此文件中创建文件launch.json
,并把以下内容复制到此文件中。想要了解配置详情的话,可以查看VS Code以及其插件的官方文档。
{
"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}"
}
]
}
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
在.vscode
文件夹中创建文件settings.json
,并复制以下内容到文件内。这样我们可以在搜索的时候排除一些文件夹。
{
"search.exclude": {
"**/src": true,
"**/libs": true,
"**/laya": true
}
}
最后,在根目录中创建空文件jsconfig.json
,这可以让我们进行跨文件搜索。
你也可以下载示例项目的源码并复制相应的文件到你的项目中。可以从这里下载到项目源码。
在开发过程中,断点调试是比较频繁的。VS Code提供了多种方式来帮助我们快速定位需要断点的代码行。
- 如果我们使用了LayaAir的模块化(分包)功能,那么就会生成多个JavaScript文件。使用Ctrl+T
在多个JavaScript文件之间定位指定的类名、本地变量名。
- 在当前打开的文件中使用Ctrl+Shift+O
来定位类名、类成员函数、本地变量名。
- 使用Ctrl+Shift+F
在所有的JavaScript文件中的定位任意字符串。
- 使用Ctrl+P
来快速打开任意指定的文件。
在示例项目中,我们有两个JavaScript文件,一个是分模块文件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代码断点可能不生效,除非你再次刷新页面。官方对此有详细的解释。
见图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。