LayaPlayer的使用调试

发布时间:2015-10-29

1.LayaPlayer

1.1.概述

  LayaPlayer是C编写的跨平台HTML5运行加速器,针对HTML5画布型引擎加速、WebGL型引擎加速、DOM型引擎加速,提高渲染性能5~10倍。能让HTML5产品项目在流畅度、发热量、耗电量等性能指标上媲美APP。主要用于嵌入APP流量平台或浏览器中,支持APP在应用内部流畅运行重度HTML5产品,支持声音渲染、设备访问等游戏常用功能。具有逻辑渲染双核运行、全部GPU加速渲染、内存智能管理、显存智能管理、渲染流程极致优化、支持超大型游戏加速等特点。LayaFlash引擎发布的H5项目正是在LayaPlayer的支持下获得了极大的性能提升。


1.2.版本介绍

  LayaPlayer目前分为Windows、Android、IOS三个版本。

  开发者把Flash项目编译为HTML5项目,不仅要保证在PC浏览器中运行正确,还要在Android、IOS设备上能够正确运行(其中包括:画面、功能、效率、稳定性等)。为了方便开发者调试,我们还提供了PC版的LayaPlayer-Windows版本,编译的HTML5项目在Windows版本加速上运行正常后,Android和IOS等设备才能正常运行。

1.2.1.下载地址

  vs2012运行库:

  http://123.56.138.152:8001/windows-exe/VS2012.rar

  Laya.Player-windows(v1.3.2):

  http://123.56.138.152:8001/windows-exe/LayaBoxPlayer-windows.rar

  Laya.Player-android(v1.3.5):

  http://123.56.138.152:8001/apk/layaboxany.apk

  openAL:

  http://123.56.138.152:8001/windows-exe/openAl.rar

  dcc打包工具:

  http://123.56.138.152:8001/windows-exe/dccTools.rar

  PackingTool工具:

  http://123.56.138.152:8001/windows-exe/xsdk.rar

1.2.2.整合发布

1.2.2.1.LayaPlayer-Android版本

  启动项目:下载安装apk,在地址栏中输入地址,便可以进入游戏,第二次打开应用,可以在列表中选择已经输入过的地址

  关于更新:android版本支持自动更新,如果我们发布新的版本,会自动提示更新,更新后缓存的地址仍然存在。

1.2.2.2.LayaPlayer-Windows版本

  启动项目:先安装VS2012运行库,然后把LayaPlayer-windows拷贝到本地,但是不要放在中文目录下。

  直接点击Redist/conch.exe,游戏中默认启动的是starthtml/default.html,在default.html中会加载一个JS。

  如果想要访问别人的远程文件,修改Redist\scripts\index.js。

//loadUrl('file:///' + getStartDefaultHtmlPath() );
loadUrl(location.href||'http://192.168.0.106:8888/starthtml/default1.html');

  按F5,可以刷新。 

  调试JavaScript方法:查看调试方法详情:http://layabox.com/html/docments/41.html

  windows版本暂不支持的技术点:由于windows版本不会正式发布,只是供开发者使用方便,所以以下功能暂不支持。

  自动更新功能:目前暂不支持自动更新功能,如果有新版本了会在官网上公布,并告知版本号

  EditBox功能:windows版本的EditBo正在开发中,暂不支持中文输入。


1.2.2.3.LayaPlayer-IOS版本

  正在开发中,敬请期待。


1.3.项目如何在LayaPlayer下运行?

1.3.1.简单的项目配置

  项目如果想在LayaPlayer下运行,首先要在HTML中增加meta标签,此标签在使用LayaFlash编译项目时会自动添加,否则需要手动添加。meta标签内容如下所示:

  name:必须为“laya”,这个属性必须填写,它相当于LayaPlayer启动的唯一标识。

  layaUrl:要执行JS的URL地址(可以有多层目录)。

  configjs:这个是项目自定义配置文件,具体如何配置后面文章有介绍。

  logojs:如果游戏项目的js文件特别大,下载和执行js时间比较长,这样给用户带来的体验不好,可以使用logo.js写一些简单的loading界面。

  screenorientation:屏幕朝向 landscape(横屏)、portrait(竖屏)。

1.3.1.1.Laya.player执行meta样式的顺序

  读取到name=laya。

  第一步,通过screenorientation设置横竖屏。

  第二步,执行configjs。

  第三步,执行logojs。

  第四步,加载并执行layaurl。

  configjs和logojs如果没有可以不用填写。下面列出一个简单的HTML样式:

1.3.2.如何加载多个JS

  在实际项目中经常有需要加载多个JS的需求,可以通过<script>标签进行加载,但是需要这个标签中增加loader='laya',代码如下:

<html>
       <head>
              <meta charset="utf-8"/>
              <meta name="renderer" content="webkit"/>
              <meta name="viewport" content="user-scalable=no"/>
              <meta name="apple-mobile-web-app-capable" content="yes" />
              <meta http-equiv="pragma" content="no-cache">
              <meta http-equiv="cache-control" content="no-cache" />
              <meta http-equiv="expires" content="0" />
              <meta name='laya' layaurl="1.js" screenorientation='landscape' />
       </head>
       <body scroll="no" ontouchstart="event.preventDefault()">
       </body>
</html>

  这段代码在meta标签中去掉了layaurl='1.js',放到了script标签中,执行顺序如下:

  第一步,读取到name=laya。

  第二步,通过screenorientation设置横竖屏。

  第三步,执行configjs。

  第四步,执行logojs。

  第五步,加载并执行2.js。

  第六步,加载并执行1.js。

  需要注意的是,这里使用的JS代码都必须以文件的方式引入,不能直接在<script>标签中编写JS代码。

1.3.3.注意事项

  LayaPlayer在解析启动HTML时,只会读取<meta name="'laya'" />和<script loader="'laya'">这两个标签,其他的代码不会执行,所以不要在启动的HTML中写任何JS方法,如果想要执行一些JS方法,可以写到configjs中。

  加载JS建议用<script>的方法,因为这种方法,标准浏览器也能执行。

  为了给开发者提供便利,LayaFlash默认导出的HTML如下:

<html>
    <head>
        <meta charset="utf-8"/>
        <title>laya转换作品</title>
        <meta name="renderer" content="webkit"/>
        <meta name="viewport" content="user-scalable=no"/>
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache" />
        <meta http-equiv="expires" content="0" />
        <meta name='laya' screenorientation='landscape' cacheid='fffffffff' />
    </head>
    <body scroll="no" ontouchstart="event.preventDefault()">
        <script src='1.js' loader='laya'></script>
    </body>
</html>

1.3.4.声音背景音乐与音效

  背景音乐目前只支持mp3格式,并且不能同时播放多个。

  音效可同时播放多个,但是为了效率考虑,目前只支持wav格式,具体格式为PCM格式、单声道、16位、22050采样率。

  mp3转wav示例教程:

  http://www.layabox.com/html/docments/71.html

  LayaPlayer-windows版本播放音效需要安装openAL下载地址:

  http://123.56.138.152:8001/windows-exe/openAl.rar


1.4.在项目的JS代码中配置LayaPlayer各种属性

  开发者可以通过window.conch.config.这样的方式设置一些LayaPlayer的属性。以下是示例:

//图片内存池的大小设定,单位为B,默认为 18 *1024 * 1024
conch.config.maxFileMemSize = 18;
//图片显存池的大小,单位为B,默认为48 * 1024 * 1024
conch.config.maxTextureMemSize = 40;
//缩略图大小池设定,单位为B,默认为1 * 1024 * 1024
conch.config.thumbSize = 1;
//最大可设定的文字大小,默认为256
conch.config.maxFontSize = 256;
//获得storage的路径
conch.config.getStoragePath()
//获得内存大小,单位为kb
conch.config.getTotalMem()
//获得已经使用的内存大小
conch.config.getUsedMem()
//显示fps
conch.config.showFps()
//fps的参数

  为了用户体验更好,开发者可以根据移动设备的内存大小进行配置,代码如下:

conch.config.setFpsParam(x, y, fontsize, "#ff0000");
var nMem=conchConfig.getTotalMem();//单位是KB
//alert("=====device totalMem=" + nMem );
if( nMem <= 524288 )
{
	//解码后的图片资源的cache的大小。单位是byte
	conchConfig.maxFileMemSize=18*1024*1024;
	//设置引擎的大图集的个数
	conchConfig.atlasNum=6;
	//贴图资源的cache的大小。单位是byte
	conchConfig.maxTextureMemSize=56*1024*1024;
}
else if( nMem > 524288 && nMem <= 1048576 )
{
	//解码后的图片资源的cache的大小。单位是byte
	conchConfig.maxFileMemSize=18*1024*1024;
	//设置引擎的大图集的个数
	conchConfig.atlasNum=10;
	//贴图资源的cache的大小。单位是byte
	conchConfig.maxTextureMemSize=72*1024*1024;
}
else if( nMem > 1048576 )
{
	//解码后的图片资源的cache的大小。单位是byte
	conchConfig.maxFileMemSize=20*1024*1024;
	//设置引擎的大图集的个数
	conchConfig.atlasNum=16;
	//贴图资源的cache的大小。单位是byte
	conchConfig.maxTextureMemSize=92*1024*1024;
}

  这些设置属性的JS代码需要定义在一个JS文件中,并在meta标签中使用configjs="xxx.js"属性以外部JS文件的方式引入到项目的入口HTML文件中,入口HTML引入这个JS文件的方式如下所示:

<meta name='laya' configjs="config.js" screenorientation='landscape' />


1.5.LayaPlayer下调试JS的方法

  简单的方式就是使用log和alert,错误地方直接可以使用:try{}catch ( e ){alert( "e=" + e + ",stack=" + e.stack );}的方法,但是如果需要下断点之类的,就需要借助Eclipse,具体方法如下:

1.5.1.安装Eclipse debugger for V8

  用过Eclipse的朋友应该都知道,不过还是简单说下吧。

  1.png

  选择“Install New Software”:

  2.png

点“Add”:

 3.png

  Location为:

  http://chromedevtools.googlecode.com/svn/update/dev/

  Name根据喜好即可,设置一个方便记忆的就好。点击确定后,在“Work with“选择你刚才添加的站点:

    4.png

  然后选择“Chromium JavaScript Remote Debugger”,然后一直下一步,安装完后会提示重启Eclipse,重启Eclipse后就可以开始调试了。

1.5.2.怎样调试

  首先我们要到debug config里面去添加一个新的V8 VM的调试配置:

     6.png

  右键,选择“new”来新建一个配置项:

  5.png

  因为我们刚才Laya中起的调试端口为默认的5858,所以这里我们的端口就是5858,名称我们定为“Node-5858”。然后点debug开始调试,或者你使用下面的方式开始调试:

   7.png

  调试模式大概会是这样:

  8.png

1.5.2.启动conch.exe

  为了效率考虑,我们的引擎中默认没有打开debug功能,要是想打开,必须传入相应的参数,启动方法如下:

  先把conch3.exe发送到桌面快捷方式,然后右键增加端口号,“-debug_port5858”,这样便可以调试了。

  但是现在只能localhost进行调试,不能远程调试,另外其实我们在开发的时候,不怎么使用这种方法调试,因为我们的项目也可以运行在google浏览器中,大部分错误都已经在浏览器中解决了,如果遇到其他相关问题,欢迎和我们一起探讨和解决。