五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
耒阳市| 长岛县| 介休市| 麻栗坡县| 玉林市| 临朐县| 甘孜县| 连州市| 桂平市| 岳普湖县| 蛟河市| 漯河市| 泗洪县| 呼图壁县| 嘉鱼县| 平罗县| 锦屏县| 台北市| 离岛区| 鄱阳县| 布尔津县| 五台县| 贵港市| 景洪市| 同心县| 固安县| 漳平市| 曲阜市| 平泉县| 青河县| 铁力市| 新竹市| 台南市| 苍南县| 泽州县| 民县| 聂荣县| 伊宁市| 调兵山市| 沛县| 景泰县|