无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

FGUI 制作一個(gè)能夠提示當(dāng)前滾動(dòng)狀態(tài)的列表

2023-08-31 16:27 作者:液態(tài)琪露諾  | 我要投稿

需求效果:

列表左側(cè)沒(méi)有內(nèi)容時(shí),顯示右箭頭
列表兩側(cè)都有內(nèi)容時(shí),顯示兩個(gè)箭頭
列表右側(cè)沒(méi)有內(nèi)容時(shí),顯示左側(cè)箭頭


我們發(fā)現(xiàn)FGUI的 List 在編輯器中沒(méi)有提供相關(guān)的事件來(lái)進(jìn)行此類控制

但是列表的虛化功能和這個(gè)需求非常接近,當(dāng)某一側(cè)還有可以滾動(dòng)的內(nèi)容時(shí),邊緣虛化會(huì)生效,某一側(cè)已經(jīng)抵達(dá)盡頭沒(méi)有可滾動(dòng)內(nèi)容時(shí),盡頭側(cè)的邊緣虛化會(huì)失效

這說(shuō)明FGUI必然能夠支持我們的需求,只是不能僅僅依靠編輯器去實(shí)現(xiàn)了。


閱讀了一些FGUI的代碼,我們能發(fā)現(xiàn),所有的GList都繼承自GComponent

GComponent中有一個(gè)叫做clipSoftness的屬性,也就是邊緣虛化,順著邊緣虛化,我們找到了ScrollPane?它就是實(shí)現(xiàn)這個(gè)需求的關(guān)鍵



首先在fgui中制作一個(gè)控制器

然后為左右的兩個(gè)箭頭綁定對(duì)應(yīng)的控制器狀態(tài)


然后我們可以直接在列表組件下找到scrollPane并添加onScroll的回調(diào)

(列表組件).scrollPane.onScroll.Add();

然后通過(guò)scrollPane.percX得到當(dāng)前滑動(dòng)位置的百分比,為0時(shí)代表滑動(dòng)到了最左側(cè),為1時(shí)代表已經(jīng)滑動(dòng)到了最右側(cè)

于是我們就可以很好的控制兩個(gè)箭頭的狀態(tài)了

項(xiàng)目使用了ECS的思想,所以使用的全是擴(kuò)展方法

自此需求就實(shí)現(xiàn)了。

scrollPane有onScroll和onScrollEnd兩個(gè)回調(diào)

理論上onScrollEnd也可以用,但是onScrollEnd會(huì)需要等待整個(gè)滑動(dòng)完全結(jié)束,甚至包括列表的超出滑動(dòng)范圍的回彈也彈完才展示箭頭,使用體驗(yàn)不是很舒服

onScroll每幀都在檢測(cè),雖然對(duì)性能有負(fù)擔(dān),但體驗(yàn)比較好


留一個(gè)小坑在這里:

  • 假如這個(gè)列表內(nèi)容是動(dòng)態(tài)生成的,有時(shí)長(zhǎng)度足夠滑動(dòng),有時(shí)長(zhǎng)度不足滑動(dòng)時(shí)候,percX會(huì)得到什么數(shù)值呢(手動(dòng)狗頭)


FGUI 制作一個(gè)能夠提示當(dāng)前滾動(dòng)狀態(tài)的列表的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
江门市| 奎屯市| 都昌县| 马尔康县| 金阳县| 韶关市| 余庆县| 婺源县| 邯郸市| 隆子县| 台山市| 青川县| 乌拉特前旗| 云浮市| 凌源市| 祁连县| 贵港市| 平和县| 洛扎县| 鲜城| 凉山| 新巴尔虎左旗| 福海县| 阿拉善右旗| 东兰县| 舟山市| 东乌| 谢通门县| 新余市| 古浪县| 个旧市| 安仁县| 平远县| 黄石市| 松江区| 辛集市| 伊春市| 滦南县| 双柏县| 密云县| 广汉市|