romeo211 也不知道从何时版本开始,突然发现ts版本的combobox组件的下拉框显示不出来。 查看了源代码,发现自动Dialog的zorder变成1000,以及另外一个组件zorder变成1100以后,combobox的list组件zorder如果不强制修改成1100以上,将无法显示,因为层级问题。 这种源代码的问题,本来想着官方会在新版本改掉,结果新版本 1.7.4 仍旧没有修复 难道大婶们从来不用 Combobox这个组件?
romeo211 cuixueying 有一点我可以说明,这个BUG绝不是单纯靠一个combobox就能复现的,代码写的多了才有的,但是我可以肯定的是,这个combobox,我并没有给他写代码,只是放到了一个界面上面,然后界面本身是一个Dialog,show到舞台上的。这些操作都是IDE或者框架自身完成的,我没法说是我哪段代码影响了它。毕竟一个工程的代码很多了
romeo211 cuixueying 我试了一下,新建了一个工程,按照我说的做了一遍,发现真的不会显示list很简单在IDE中创建一个Dialog,然后放一个combobox在里面,然后再代码中,new 这个 DialogUI , popup出来,就会发现list无法点击了
romeo211 cuixueying let img = new Laya.Image('comp/bg.png'); let cbx = new Laya.ComboBox('comp/combobox.png', 'label1,label2'); cbx.selectedIndex = 0; let dialog = new Laya.Dialog(); dialog.addChild(img); dialog.addChild(cbx); dialog.popup();
romeo211 首先看图1 这个是本来要做的效果,点击下拉组件后,弹出下拉 list,这个组件,只需要图片,IDE可以直接完成,没有写任何代码 组件的素材图,如图2 但是点击后,没有反应,本来以为是不是点击无效,后来调试了一下,发现其实已经addChild到舞台了,此处所有过程都是在Laya.ui.js 这个文件里自己完成的,并不是我手动 addChild 于是我感觉应该层级问题,但是我 并没有手动改过层级,也没有添加过代码,那只有一个可能,就是 框架内部的层级出了问题。 我对比了一下代码 如图3是Dialog的层级,zOrder1000 如图4是Tips的层级,zOrder1100 虽然不是很清楚这里强制设置层级的原因是什么,但是巧在我做如下的事 如图5 我只是改了一下层级,强制设置为2000 于是神奇的list控件就出现了 如图6 以上的操作,都没有涉及到我自己的代码,均 只是利用IDE放到 舞台上,然后直接跑起来的, 不能理解为什么。 之前几个版本还能看到,后来就 看不到list了,我更新了1.7.4beta也发现没有显示 PS: 如果单独只放一个combobox组件到 舞台上,是可以看到list的