layabox:小技巧及注意事项汇总(不定时更新)

 

1、在UI组件预设和页面嵌套中尽量选择后者,因为前者无法再增加新的元素,但使用后者时注意如果希望使用自定义的runtime,需要在UI页面的默认属性中添加runtime=xx类名,或者使用前调用View.regViewRuntime()去注册,不然会使用UI默认的runtime(这两种方法有一定区别,设置默认属性是替换掉UI默认的uiClassMap,而注册是添加viewClassMap,viewClassMap的优先级比uiClassMap高,所以都能实现不使用UI默认runtime的需求);

2、comboBox控件如果UI内设置了selectedIndex属性,那么在代码中就无法给selectedIndex赋同样的值(会导致期待执行的selectHandler无法执行到);

3、给按钮添加监听事件,如果监听函数地址不同,会叠加,地址相同则不会,所以在给List的cell中的按钮添加监听事件时,要注意使用匿名函数或者箭头函数会导致叠加监听事件的问题;

4、transform.rotate()即使只改变xyz中的某一个,也会使transform.localRotation的4个值全部变化;

5、所有节点里的timer其实都指向Laya.scaleTimer,在节点里新增timer时,Laya.scaleTimer._handlers和Laya.timer._handlers[0].caller._handlers都会增加元素,但两者指向是否相同未知。所以在节点里增加的timer不可以调用Laya.timer里的清理方法去移除;

6、List控件:1)List创建时cells.length与array.length无关联,cells.length值固定为可视范围加多一行/列的范围内能显示完的数量,如果array.length较小,就会有一些空dataSource的cell,如果array.length较大,也只是一直复用cells里的UI,随着滚动不停的重置cell的dataSource,调用renderHandler去刷新UI;

                     2)List的cell较多时不会全部渲染,cells里只有可视cell,如果要改变非可视cell的状态,只能通过修改数据源刷新UI实现;

                      3)List的Box中如果只有皮肤资源为非合图的控件,可能出现问题;

                      4)List的Box中如果有slider时,改变slider.bar的stateNum时可能达不到理想的效果,因为在List中的slider.bar改变stateNum时不会调用changeState一类的函数,但原因不清楚。解决方法,在设置renderHandler前给array赋一次值,设置之后再赋一次值,改变就正常了;

                  5)List的部分方法或属性操作会延时重刷一遍cells(重新执行一遍renderHandler),例如array、cells、设置ScrollBarSkin等;

                  6)List在滚动中即使被隐藏,或是分页切换不再显示,都会继续滚动并执行renderHandler,此时可能renderHandler中所用数据会发生改变;

7、3D模型:1)模型在播放动作时如果资源里有改变颜色之类的参数,代码中无法在动作播放过程中改变反射率之类的参数;

                    2)设置模型的渲染模式renderMode时要注意,支持半透明的模式可能在不透明的情况下会影响自己和其他模型的渲染显示优先级(意外的盖住不应该盖住的模型),如果要做半透明,在设置半透时才去改变渲染模式,不透明时马上把渲染模式还原回去;

8、3D粒子:1)ShurikenParticleSystem类目前没有提供修改速率的接口,如需修改,可通过:1、同时等比例修改duration和startLifetimeConstant属性值;2、修改源码的_updateEmission方法中调用_updateParticles时的参数;

                      2)如果需要对粒子进行缩放,需要lh资源中的scaleMode的值为0才可以;

                      3)目前无法控制不同3D粒子特效的渲染优先级,要控制渲染优先级,只能用模型特效;

9、初始化View的时候,会在View的createView()中将UI内设置的属性值赋值给View对象并计算一些只填了centerX/Y的控件的x/y值,所以如果需要在代码中动态修改控件的属性,建议在createView()之前赋值,并且UI内不要设置对应的属性值,否则可能使赋值无效或者影响到坐标转换一类的操作;

10、缓动Tween:主动清理缓动或者缓动被覆盖(覆盖中也会调用清理)时,还未改变完成的属性不会再继续变化,如果会导致问题,需要重置一下在缓动中改变的属性;

11、Laya.loader:1)加载的Sprite3D资源,相同的url共用一份,如果不希望共用,就克隆后使用克隆副本;

                              2)如果Sprite3D资源还在加载中,通过getRes会拿到没有数据的对象,此时操作可能会出现问题,所以在getRes时需要判断资源的loaded为true时才去正常使用,为false就另行处理;

12、UIGroup:如果要文本竖排显示,可以去设置item(常用的子类RadioGroup的item是Radio,继承自Button,内部创建了Text,有text属性)的text.wordWrap和text.width属性,但注意必须要延时调用(callLater)。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: Layabox玛丽医生小游戏是一个非常有趣的游戏,它的源代码由Layabox引擎提供。玩家需要扮演医生玛丽,通过完成一系列的任务治疗患者。 游戏的源代码主要分为不同的部分。首先是游戏的基础设置部分,包括游戏界面的布局、背景音乐的设置,以及一些游戏参数的初始化。其次是角色控制部分,包括医生玛丽的移动和操作,以及患者的生成和移动。这部分代码涉及到游戏中的碰撞检测和角色移动的逻辑。然后是游戏的任务和关卡部分,包括不同关卡的设置和任务的指引。最后是游戏的结束和得分计算部分,包括判断游戏是否胜利或失败,以及根据玩家的表现计算得分和显示排行榜。 游戏中的源代码通过Layabox引擎的API实现了各种游戏功能,如角色的移动、碰撞检测、音乐播放等。它使用了Layabox引擎提供的精灵(Sprite)和场景(Scene)等组件进行游戏的构建。此外,源代码也包括一些用于控制游戏逻辑和界面显示的脚本文件。 通过分析Layabox玛丽医生小游戏的源代码,可以学到很多关于游戏开发的知识和技巧。你可以了解到游戏的基本架构和各个模块之间的交互关系。同时,你也可以学习到Layabox引擎的使用方法和一些游戏开发中常用的技术,如碰撞检测、角色移动、音乐播放等。 ### 回答2: Layabox玛丽医生小游戏源代码是一个使用Layabox引擎开发的医生小游戏的源代码。这个游戏的主要任务是帮助玛丽医生治疗患病的小动物。 在游戏中,玩家可以扮演玛丽医生,通过点击、拖拽等操作来完成治疗任务。游戏界面简洁清晰,采用了可爱的卡通风格,给人一种轻松愉快的感觉。 游戏源代码主要包括游戏的逻辑部分和界面部分。逻辑部分包括游戏的流程控制、任务操作等内容。界面部分则包括游戏的场景、角色、动画等元素。 玩家在游戏中需要根据小动物的病情选择合适的治疗工具,并进行操作。例如,当小狗受伤时,玩家可以使用拖拽工具将药膏涂在伤口上,然后用绷带缠绕。在完成治疗后,玩家可以获得一定的奖励。 这个游戏源代码使用Layabox引擎进行开发,Layabox引擎是一个基于HTML5的游戏引擎,可以用于开发跨平台的游戏。它具有高性能、易用性和丰富的功能特点。 总之,Layabox玛丽医生小游戏源代码是一个用Layabox引擎开发的医生小游戏,它通过简洁清晰的界面和有趣的玩法,带给玩家一种愉快轻松的游戏体验。 ### 回答3: LayaBox玛丽医生小游戏源代码是一种使用LayaBox引擎开发的小游戏源代码。玛丽医生是一款拥有医疗主题的益智游戏,旨在培养玩家的医疗常识和操作技能。 在游戏中,玩家扮演玛丽医生,需要处理来自不同患者的医疗问题。玩家需要根据患者的症状和需求,选择正确的治疗工具和药物进行操作。游戏中的患者多种多样,有感冒、发烧、骨折等不同的病情,玩家需要根据不同的情况给予正确的治疗措施。 在代码中,开发者会使用LayaBox引擎提供的各种功能和特性来实现游戏的各种功能。例如,使用引擎提供的场景管理器来创建游戏场景,使用精灵对象来表示游戏中的元素,如玛丽医生和患者角色,使用碰撞检测功能来判断治疗工具是否与患者接触,使用动画和音效来增强游戏体验等等。 此外,源代码还包括游戏的逻辑和处理部分。通过编写适当的游戏逻辑代码,开发者可以实现患者的生成和随机病情设置,以及玩家操作的响应和游戏结果的判断等功能。 总之,LayaBox玛丽医生小游戏源代码提供了一个可以直接使用和修改的游戏基础框架,开发者可以根据自己的需求进行二次开发和定制,使其更加符合个人或商业目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值