Puerts中扩展组件bug

按下面方法创建的虚拟列表,  if(item instanceof UIServerListItem){  。。。。。当滑动列表时, 这里有部分item列表项目不是自定的的 UIServerListItem 对象。。。, 是自定义的列表项被GC了还是什么原因呢,是Puerts的Bug? 还是循环列表的问题?如果要重现代码的话可以看这个:https://github.com/Justin-sky/Nice-TS , 打开服务器列表界面就能重现。
 
1,创建一个虚拟列表,

       this.serverList.SetVirtual();
        this.serverList.itemRenderer = (index:number, obj:UIServerListItem)=>{
            this.renderServerListItem(index, obj);
        };
        this.serverList.numItems = 200
 
具体渲染方法:

    private renderServerListItem(index:number, item:UIServerListItem){
        if(item instanceof UIServerListItem){
            console.log("1111111111111111111111")
        }else{
            console.log("333333333333333333")
        }
        item.itemLabel = this.voServer.serverMap.get(this.clickAreaIndex+1)[index].serverName;
        //serverBtn.icon = FairyGUI.UIPackage.
    }
 
 
2,然后自定义一个列表项,

export  class UIServerListItem extends FairyGUI.GButton{
    public set itemLabel(txt:string){
        this.text = txt;
    }

 
注册自定义组件:

FairyGUI.UIObjectFactory.SetPackageItemExtension("ui://l64dumk9feeg54",
        ()=>{
            let item =  new UIServerListItem();
            return item;
        })
 
已邀请:

谷主

赞同来自:

这应该是GC问题,UI这边控制不了什么,看看purets那边。

要回复问题请先登录注册