[]Laya中的宏编译要怎么用啊
flash模式下用教程里有这些内容,具体flash模式和h5模式指的是什么呢?不是同一套代码吗?我在代码里要怎么写?有例子吗?
/*[IF-FLASH]trace("layabox")*/
h5模式下用
//[IF-SCRIPT]alert("layabox")
区域编译宏,只会在h5模式下生效
/*[IF-SCRIPT-BEGIN]trace("hello-h5")[IF-SCRIPT-END]*/
//代码直译方法,直接调用h5的方法
__JS__("alert(100)");//直译的意思就是括号里写什么就翻译什么
没有找到相关结果
已邀请:
要回复问题请先登录
2 个回复
charley
赞同来自: WLDragon 、layabox
2、为什么要使用宏编译
由于Flash AS3与JavaScript存在语言级的差异,LayaCompiler无法正确编译的时候,通过宏的标识,编译器可准确识别,达到开发者需求的结果。比如LayaFlash宏在使用的过程中,“/*[IF-FLASH]*/”宏并不影响在该标识之后的AS3代码执行,但是该行代码经过编译器识别后,在JavaScript中会被注释掉,不会运行。而“//[IF-SCRIPT]”宏在AS3项目运行时作为注释代码并不被执行,但是该代码被编译后,会删除掉注释代码,在JavaScript中获得正常的执行。本文中将会通过实例代码,加深LayaFlash开发者对宏编译的理解:)。
3、宏编译示例代码
3.1 LayaFlash单行宏编译写法 单行宏用法说明
1、AS3项目中 value = byteArray.readUnsignedInt(); 被正常执行,编译后JS中不被执行
2、AS3项目中 value = byteArray.readInt(); 视为注释代码不被执行,编译时会去掉注释,JS中被正常执行
3.2 LayaFlash多行宏的写法 多行宏写法说明
1、/*[IF-FLASH-BEGIN]*/ 与/*[IF-SCRIPT-BEGIN] 代表多行宏的开始
2、/*[IF-FLASH-END]*/ 与[IF-SCRIPT-END]*/ 代表多行宏的结束
3、/*[IF-FLASH-BEGIN]*/与/*[IF-FLASH-END]*/ 之间的代码在Flash中被正常运行,在编译后的JS中不被执行
4、/*[IF-SCRIPT-BEGIN] 与[IF-SCRIPT-END]*/ 之间的代码在Flash中被视为注释代码,在编译时会去掉注释,JS中被正常执行
4、额外的说明:
由于旧的教程里//[IF-JS]也用于单行宏编译,作用与//[IF-SCRIPT]等同,因此,LayaFlash宏继续保持了对//[IF-JS]的支持。但是由于/*[IF-JS-BEGIN] 与[IF-JS-END]*/的写法是被禁止的,对于新的LayaFlash开发者容易混淆,因此新版教程里,已经不再重点介绍/[IF-JS]的作用,开发者知晓其与//[IF-SCRIPT]作用等同即可。
layabox
赞同来自: WLDragon 、jayoooo
解答:
__JS__是LayaFlash提供的直译方法,这里核心在于直译,顾名思义,所谓直译就是把这个方法中传入的字符串,不经任何改变,直接编译到JS文件中,因此,不要被__JS__的命名迷惑,__JS__方法内可以编写任何你想编写的代码。当然,你要考虑清楚后果,编写的代码运行环境会不会支持。所以对于HTML5项目开发来讲,还是以引用JS代码为主要目的。
通过__JS__这个方法 ,开发者可以直接在AS3项目中写JavaScript代码,从而实现JS代码和AS3代码混合编写的目的。由于__JS__()中引用的代码在AS3项目中并不生效,仅是编译成JS代码时在浏览器或LayaPlayer运行器中被运行,对于想同时发布Flash和HTML5版本等多版本的开发者,请谨慎使用。
下面通过代码示例,看一下具体用法: 上面的代码AS3中不会有任何效果,编译成JS后,在Chrome下的执行效果如下: