关于贝塞尔曲线类型

编辑器使用uaremydr 回复了问题 • 2 人关注 • 2 个回复 • 59 次浏览 • 2021-01-13 15:58 • 来自相关话题

cocos2.4.3加载放在resources外的bundle资源成功后调用fairygui的addPackage报错

CocosCreator谷主 回复了问题 • 2 人关注 • 1 个回复 • 53 次浏览 • 2021-01-13 15:30 • 来自相关话题

fgui有没有内发光和外发光的效果,在哪里呢?

编辑器使用谷主 回复了问题 • 2 人关注 • 1 个回复 • 77 次浏览 • 2021-01-13 15:29 • 来自相关话题

Spine动画导入后在Unity中查看有黑边问题

Unity谷主 回复了问题 • 2 人关注 • 1 个回复 • 65 次浏览 • 2021-01-13 15:28 • 来自相关话题

fairygui制作ui界面

Unity谷主 回复了问题 • 1 人关注 • 1 个回复 • 95 次浏览 • 2021-01-13 15:28 • 来自相关话题

求教一个单选列表的问题

Unity谷主 回复了问题 • 2 人关注 • 1 个回复 • 58 次浏览 • 2021-01-13 15:28 • 来自相关话题

如何控制滑动的最小有效偏移值?

Unityfroznh 回复了问题 • 2 人关注 • 2 个回复 • 62 次浏览 • 2021-01-11 20:20 • 来自相关话题

位图字体显示问题

Unityshaoye123 回复了问题 • 2 人关注 • 4 个回复 • 106 次浏览 • 2021-01-11 18:15 • 来自相关话题

fairygui素材在哪里下载

Unity谷主 回复了问题 • 3 人关注 • 2 个回复 • 673 次浏览 • 2021-01-11 16:57 • 来自相关话题

谷主大大,fairygui什么时候可以支持cocos creator 3d呀

CocosCreatoryrmr223 回复了问题 • 3 人关注 • 5 个回复 • 233 次浏览 • 2021-01-09 20:47 • 来自相关话题

分页滚动控制问题

Unity谷主 回复了问题 • 2 人关注 • 2 个回复 • 50 次浏览 • 2021-01-09 20:12 • 来自相关话题

GList列表添加拉到底会自动消失的向下箭头功能小记

Unityzycpig22 发表了文章 • 6 个评论 • 140 次浏览 • 2021-01-09 15:03 • 来自相关话题

前言:Fairgui是一个很好用的UI工具,但是他跟其他UI一样,事件的通知都有很大的缺失,都仅仅提供一些常用的。
非游戏的ui框架,对于ui的变化都会通知到编写者,比如一个列表,item大小发生变化会通知,item被点击会通知,发生滚动会通知,显示区域item发生变化会通知,滚到低会通知等等。
显然,fairgui里面发生的很多变化,编写者根本不知道,除非你update里面每秒去检测他,而且还缺乏判断标准,例如,GList添加拉到底会自动消失的向下箭头,仅仅使用fairgui的东西,如何判断列表滚到底了?
正文:
我思考了片刻,决定利用虚拟列表不会把item全部显示出来的特性,是不是说当index+1==numItems的时候,就代表list滚到底,或者接近滚到底了?
于是我开始尝试。(测试列表是一个N行1列的传统排行榜形式的列表)
第一次尝试:
itemRenderer里直接判断当index+1==numItems的时候隐藏箭头,否则显示箭头(因为item的显示肯定是有序的,默认从小到大)
然后发现失败,拉到底再往上拉的时候,再次显示箭头有较大延迟,因为glist会准备几个item,所以最下面的几个item虽然离开显示区域了,但是并没有隐藏,还是显示着。
第二次尝试:
numItems=numItems+1,多显示一个(流动表格就+列数);然后
itemRenderer里当index+1<=numItems,显示箭头,并把item设置为设定大小(可以一开始保存下),alpha=1,enabled=true;否则,隐藏箭头,并把item设置为设定宽度(可以一开始保存下),高度为1,alpha=0.01,enabled=false;
后来发现偶尔会对某些排版关联方式有一定影响,而且移植到流动形式的表格上,会有错乱的情况。失败。
第三次尝试:
numItems=numItems+1,多显示一个;并且创建一个高度为1的空白组件。利用itemProvider,并不改变item大小,而是把多出来的item指定为高度为1的空白组件。---@return string
function SelfServerRankWindow.CountryPowerItemProvider(index)
local tableLength = 0
for k, v in pairs(serviceTool.GetCountryPowerData().infos) do
tableLength = tableLength + 1
end

if index+1 >tableLength then
return EmptyItem
end

return countryPowerItem
end上面是lua的代码,差不多就是这形式。
然后itemRenderer里当index+1<=numItems,显示箭头,否则隐藏。
这个方式我一度认为是正确可用的,发现就发现了问题,上下正常拉动都是正常的,但是当我把list拉到底,箭头消式以后,我再拉上去一点点拉到箭头显示,然后立马拉到底,箭头没消失!
观察发现,当时我list拉到底再拉上去一点点到箭头显示,再往下拉的过程,gameobject的表示只是有一个item被隐藏了,但是没有item从隐藏变成显示,itemRenderer完全就没触发,我根本就不知道!再次失败。
第四次尝试:
在第三次尝试的基础上,我已经无计可施,只能动源码了,GList里面加一个共有字段,并且默认为false,以免你的改动影响到其他人。/// <summary>
/// 如果true,则滚动List的时候会强制刷新所有item,慎用
/// </summary>
public bool openScrollFroceUpdate = false;然后修改GList里面void __scrolled(EventContext context)这个方法。改成:void __scrolled(EventContext context)
{
HandleScroll(openScrollFroceUpdate );
}目前来说,效果都很正常,如果发现问题,那么我会来个第五次尝试。
改源码的缺点就是,fairgui的版本要稳定一个版本,不然一升级可能就没了。
------------------------------------------------------------------------------
发现了缺点,性能上有点缺失,特别是动态装配扩容,大小不一并且特别复杂的item,比如用到
EnsureBoundsCorrect()进行扩展的item,它....有点卡。
我的方法暂时是优化下item,不要做非必要的工作。
-------------------------------------------------------------------------------
第五次尝试:
想办法解决性能问题,去掉第四次的代码,或者将openScrollFroceUpdate设置为false
在GList中加上一行/// <summary>
/// 如果true,则List最后一个item总是会被刷新,慎用
/// </summary>
public bool endItemAlwaysUpdate = false;在bool HandleScroll1(bool forceUpdate),bool HandleScroll2(bool forceUpdate)的if (needRender)上面加上else if(curIndex+1 == _realNumItems && endItemAlwaysUpdate)
needRender = true;





------------------------------------------
第四种不适合复杂List,很卡,但是恢复很及时。
第五种恢复的时候有点延时,但不影响性能。
--------------------------------------------------
第六次尝试:
经过版主的提示教育,确实发现走了远路。
GList使用的是GComponent里面的scorllpanel,用这个判断percY==1确实可行。
 
再次补充
版主的方法有缺陷,当list里面元素过少不会触发滚动的时候,percY始终是0
需要在判断contentHeight是否为0,为0代表未达到滚动条件的情况。
或者我在api文档里面找到一个isBottomMost的属性,好像也可以。
就认为滚到底无法检测这件事情来说,确实是我不够熟悉造成的。 查看全部
前言:Fairgui是一个很好用的UI工具,但是他跟其他UI一样,事件的通知都有很大的缺失,都仅仅提供一些常用的。
非游戏的ui框架,对于ui的变化都会通知到编写者,比如一个列表,item大小发生变化会通知,item被点击会通知,发生滚动会通知,显示区域item发生变化会通知,滚到低会通知等等。
显然,fairgui里面发生的很多变化,编写者根本不知道,除非你update里面每秒去检测他,而且还缺乏判断标准,例如,GList添加拉到底会自动消失的向下箭头,仅仅使用fairgui的东西,如何判断列表滚到底了?
正文:
我思考了片刻,决定利用虚拟列表不会把item全部显示出来的特性,是不是说当index+1==numItems的时候,就代表list滚到底,或者接近滚到底了?
于是我开始尝试。(测试列表是一个N行1列的传统排行榜形式的列表)
第一次尝试:
itemRenderer里直接判断当index+1==numItems的时候隐藏箭头,否则显示箭头(因为item的显示肯定是有序的,默认从小到大)
然后发现失败,拉到底再往上拉的时候,再次显示箭头有较大延迟,因为glist会准备几个item,所以最下面的几个item虽然离开显示区域了,但是并没有隐藏,还是显示着。
第二次尝试:
numItems=numItems+1,多显示一个(流动表格就+列数);然后
itemRenderer里当index+1<=numItems,显示箭头,并把item设置为设定大小(可以一开始保存下),alpha=1,enabled=true;否则,隐藏箭头,并把item设置为设定宽度(可以一开始保存下),高度为1,alpha=0.01,enabled=false;
后来发现偶尔会对某些排版关联方式有一定影响,而且移植到流动形式的表格上,会有错乱的情况。失败。
第三次尝试:
numItems=numItems+1,多显示一个;并且创建一个高度为1的空白组件。利用itemProvider,并不改变item大小,而是把多出来的item指定为高度为1的空白组件。
---@return string
function SelfServerRankWindow.CountryPowerItemProvider(index)
local tableLength = 0
for k, v in pairs(serviceTool.GetCountryPowerData().infos) do
tableLength = tableLength + 1
end

if index+1 >tableLength then
return EmptyItem
end

return countryPowerItem
end
上面是lua的代码,差不多就是这形式。
然后itemRenderer里当index+1<=numItems,显示箭头,否则隐藏。
这个方式我一度认为是正确可用的,发现就发现了问题,上下正常拉动都是正常的,但是当我把list拉到底,箭头消式以后,我再拉上去一点点拉到箭头显示,然后立马拉到底,箭头没消失!
观察发现,当时我list拉到底再拉上去一点点到箭头显示,再往下拉的过程,gameobject的表示只是有一个item被隐藏了,但是没有item从隐藏变成显示,itemRenderer完全就没触发,我根本就不知道!再次失败。
第四次尝试:
在第三次尝试的基础上,我已经无计可施,只能动源码了,GList里面加一个共有字段,并且默认为false,以免你的改动影响到其他人。
/// <summary>
/// 如果true,则滚动List的时候会强制刷新所有item,慎用
/// </summary>
public bool openScrollFroceUpdate = false;
然后修改GList里面void __scrolled(EventContext context)这个方法。改成:
void __scrolled(EventContext context)
{
HandleScroll(openScrollFroceUpdate );
}
目前来说,效果都很正常,如果发现问题,那么我会来个第五次尝试。
改源码的缺点就是,fairgui的版本要稳定一个版本,不然一升级可能就没了。
------------------------------------------------------------------------------
发现了缺点,性能上有点缺失,特别是动态装配扩容,大小不一并且特别复杂的item,比如用到
EnsureBoundsCorrect()进行扩展的item,它....有点卡。
我的方法暂时是优化下item,不要做非必要的工作。
-------------------------------------------------------------------------------
第五次尝试:
想办法解决性能问题,去掉第四次的代码,或者将openScrollFroceUpdate设置为false
在GList中加上一行
/// <summary>
/// 如果true,则List最后一个item总是会被刷新,慎用
/// </summary>
public bool endItemAlwaysUpdate = false;
在bool HandleScroll1(bool forceUpdate),bool HandleScroll2(bool forceUpdate)的if (needRender)上面加上
else if(curIndex+1 == _realNumItems && endItemAlwaysUpdate)
needRender = true;

f1.png


------------------------------------------
第四种不适合复杂List,很卡,但是恢复很及时。
第五种恢复的时候有点延时,但不影响性能。
--------------------------------------------------
第六次尝试:
经过版主的提示教育,确实发现走了远路。
GList使用的是GComponent里面的scorllpanel,用这个判断percY==1确实可行。
 
再次补充
版主的方法有缺陷,当list里面元素过少不会触发滚动的时候,percY始终是0
需要在判断contentHeight是否为0,为0代表未达到滚动条件的情况。
或者我在api文档里面找到一个isBottomMost的属性,好像也可以。
就认为滚到底无法检测这件事情来说,确实是我不够熟悉造成的。

请问怎么在代码里面使用 Tween

Unity谷主 回复了问题 • 2 人关注 • 1 个回复 • 62 次浏览 • 2021-01-08 19:59 • 来自相关话题

求助, Container的获取方法

Unity谷主 回复了问题 • 2 人关注 • 1 个回复 • 50 次浏览 • 2021-01-08 19:59 • 来自相关话题

Button.onClick 如何add 有参数事件

Unity谷主 回复了问题 • 2 人关注 • 1 个回复 • 45 次浏览 • 2021-01-08 19:59 • 来自相关话题

按钮播放动效 bug

Unity谷主 回复了问题 • 2 人关注 • 1 个回复 • 33 次浏览 • 2021-01-08 19:58 • 来自相关话题

插件读取XML,加载本地图片,切割保存图片等

编辑器使用taojianlong 发表了文章 • 2 个评论 • 54 次浏览 • 2021-01-08 19:55 • 来自相关话题

基本实现了读取并操作XML文件,避免了xml.attributes System.Collections.Generic.Dictionary$2<string, string>无法读取
本地缓存读取 自己创建一个json文件保存
读取本地图片并切割保存
更新其他工具详情:
https://gitee.com/taojianlong/ ... aster 查看全部
QQ图片20201220005605.png

基本实现了读取并操作XML文件,避免了xml.attributes System.Collections.Generic.Dictionary$2<string, string>无法读取
本地缓存读取 自己创建一个json文件保存
读取本地图片并切割保存
更新其他工具详情:
https://gitee.com/taojianlong/ ... aster

System.Collections.Generic.Dictionary$2<string, string> ts如何遍历???

编辑器使用taojianlong 回复了问题 • 2 人关注 • 2 个回复 • 113 次浏览 • 2021-01-08 19:55 • 来自相关话题

关于在Glist中模型的显示问题

Unity谷主 回复了问题 • 2 人关注 • 1 个回复 • 50 次浏览 • 2021-01-08 18:18 • 来自相关话题

官方CocosCreator在线示例 聊天demo 输入英文的时候有自动换行的问题

编辑器使用谷主 回复了问题 • 2 人关注 • 1 个回复 • 52 次浏览 • 2021-01-08 09:37 • 来自相关话题