[LayaAir 2.0]Laya2.0 内嵌模式、加载模式、分离模式、文件模式的场景加载创建和场景打开关闭

环境:JavaScript LayaAir 2.0.0 beta3 LayaAir IDE 2.0.0 beta3
laya2场景发布模式有4种:内嵌模式、加载模式、分离模式、文件模式,laya2默认为文件模式
clipboard(4).png

新建4个项目对应不同模式的使用,项目的ui结构是2个场景,都在test目录下,分别为:Laya.scene和Version.scene
clipboard(5).png

clipboard(14).png

代码结构:新建一个LayaUI.js
clipboard(11).png

最终目的:在舞台显示2个场景组合成的Laya2.0,Laya.scene通过new LayaUI类来创建显示,Version.scene直接创建
clipboard(1).png

1.内嵌模式
当前版本内嵌模式发布没有数据,直接跳过
clipboard(17).png

(正常应该发布到src/ui目录下一个ui类数据的js文件)
2.加载模式
发布后bin目录下会有一个ui.json文件里面保存着场景数据
clipboard(13).png

加载模式第一步就是加载ui.json赋值到Laya.View.uiMap
clipboard(15).png

接下来就是创建场景显示场景,主要API就是Scene类的createView方法,参数是场景json数据
clipboard(16).png

clipboard(8).png

3.分离模式
发布后bin目录下会出现对应的目录的场景文件
clipboard(12).png

分离模式不像加载模式必须加载ui.json,可以用到哪个场景加载哪个json,json过大提前预加载比较好
clipboard(3).png

接下来创建场景显示场景,主要API就是Scene类的loadScene方法,参数是场景json文件路径
clipboard(2).png

clipboard(9).png

4.文件模式
和分离模式一样,差别在于生成场景类,JavaScript语言发布数据没有场景类
 
总结:laya2默认文件模式,内嵌和加载模式都会导致项目ui文件过大,分离模式和文件模式基本一样,推荐使用文件模式。上面代码逻辑方式都是flash的逻辑方式,laya2向组件化靠拢封装了场景Scene类一系列API,根据API来写一个场景的创建和关闭。
 
场景的创建和关闭
主要使用Scene类的close和open方法以及静态方法Scene.close、Scene.open和Scene.closeAll
项目设置:
clipboard(18).png

ui结构:Laya.scene添加几个按钮并设置runtime逻辑类(目前版本拖入JS到runtime如果JS文件路径在Scrips下需要加上./否则编译报错),新建一个LayaIde.scene场景
clipboard(6).png

clipboard.png

代码结构:Main.js和上面不一样,不做任何更改项目已经设置起始场景Laya.scene,LayaUI.js是Laya.scene的runtime逻辑类,代码如下
clipboard(10).png

clipboard(7).png

 
项目下载:
已邀请:

Aar0n

赞同来自: tea

非常棒的分享,已推荐帖

少玉

赞同来自:

非常棒的分享,已推荐帖

happyfire

赞同来自:

不错,楼主是好人

happyfire

赞同来自:

文件模式不会生成场景类(我用的是TS,也没有生成),而分离模式会生成场景类,为啥2.0默认推荐文件模式呢?如果使用文件模式,还需要自己写场景类,或者自己把场景里面的控件get出来操作吧
 
我看了下IDE自动生成的3d模板工程里面,整个项目设置是文件模式,但是test scene是设置为分离模式的,然后test scene编译后就有场景类可以使用。我一开始自己的scene没去设置(也就是使用默认)没有场景类生成,导致不能像test scene那样写runtime逻辑。所以查了一下才发现2.0推荐并默认设置为文件模式,其实没有场景类生成。
那么2.0文件模式,应该怎么用呢,有什么例子吗

爱的誓言

赞同来自:

请问Demo中LayaUI.js里面的 this.layaV  此变量是从哪来的?
demo.png

大风起兮云飞扬

赞同来自:

最近刚刚接触Laya刚好用到,谢谢

情至深时人孤独

赞同来自:

求教, 使用 
Laya.Scene.open 方式 无法在构造函数类获取到子节点,怎么解决?貌似没有加载完毕,但是又没有 compelet事件。伤脑筋

Yangcy

赞同来自:

内嵌类 可以直接获取到场景子节点 各个元件名称。文件模式怎么获取额?场景类也需要自己写吗?

CloudFlame

赞同来自:

Demo 附件中 文件模式下的项目,实际是分离模式的代码,望改正
 

要回复问题请先

商务合作
商务合作