[]laya支持的发布模式有哪些?

已邀请:

cuixueying

赞同来自:

LayaFlash方案——多模式调试方案

一、模式 
1、普通(general)模式 
描述:
  在general编译模式下,还是保持原有的调试信息,用户可以定位到出问题的代 码所在的类和一些备注信息; 
 
2、调试(debug)模式 
描述:
  在debug编译模式下,会增加额外检测判断逻辑,方便定位代码中存在的问题。 
使用: 
  (1)、开启debug模式方法: /*[COMPILER OPTIONS:debug]*/ 在游戏入口类的package内导包位置加上此编译宏; 
  (2)、关闭debug模式方法: 删掉编译宏;
3、发布(release)模式 
描述:
  在release编译模式下,会对引擎库和项目里没有被引用的类、警告等备注信息进行剔除操作,减少发布后JS文件的体积,加快文件载入速度;
使用:
  /*[COMPILER OPTIONS:release]*/

注意: 在general(普通)和debug(调试)模式下,不会注释掉未赋初始值的成员变量,完全与原生flash一样;在release(发布)模式下,注释掉未赋初始值的成员变量,美化了代码,优化了性能

二、调试debug模式详解

注意:打开debug模式后,运行时必须打开调试面板。

开启debug模式后

1.编译代码将增加int,uint,Number,String的类型判断,都将被翻译成if(!__DEBUGTYPE__(判断对象,判断类型))debugger,如果检测对象非指定类型,即会中断程序运行,并在检测到问题的代码处自动断点。

01.png

 

2.编译代码将增加as强转类型的判断,项目中所有被用到的as强转,都将被翻译成__DEBUGAS__(判断对象,判断类型),类型不匹配时,即会中断程序的运行。并自动断点,选择Call Stack断点的上一步。


02.png



例子参考 ===============
AS:
var intObj:int = 20.2;

JS:
var intObj=20.2;
if(!__DEBUGTYPE__(intObj,'int'))debugger;//在此行会自动断点
===============
AS:
var py:int = undefined;

JS:
var py=undefined;
if(!__DEBUGTYPE__(py,'int'))debugger;//在此行会自动断点
=================
AS:
var pxy:int = 1+undefined;

JS:
var pxy=1+undefined;//output:NaN
if(!__DEBUGTYPE__(pxy,'int'))debugger;//在此行会自动断点
==================
AS:
var uintObj:uint = 3.1;

JS:
var uintObj=3.1;
if(!__DEBUGTYPE__(uintObj,'uint'))debugger;//在此行会自动断点
==================
AS:
setName(123);
function setName(name:String):void
{
trace(name);
}

JS:
function setName (name){
if(!__DEBUGTYPE__(name,'String'))debugger;//在此行会自动断点
trace(name);
}
===================
AS:
var asString:String = asObj as String;

JS:
var asString=__DEBUGAS__(asObj,String);
==================
AS:
var asObj:String ="123";
if(asObj as Sprite)
{
trace("走强转成功的逻辑!");
}else{
trace("走强转失败的逻辑!");
}

JS:
if(__DEBUGAS__(asObj,Sprite)){
trace("走强转成功的逻辑!");
}else{
trace("走强转失败的逻辑!");
}




 

 

要回复问题请先

商务合作
商务合作