最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

千文詳述Cocos Creator彈出式對話框?qū)崿F(xiàn)技術(shù),著實(shí)硬核!

2022-03-03 18:43 作者:BYCW丶幻彩  | 我要投稿

正文

在Cocos Creator游戲開發(fā)中,經(jīng)常需要使用到彈出式對話框,下面我們就一起來封裝下自己的彈出式對話框。

一、彈出式對話框原理解析

1:對話框的結(jié)構(gòu):

1. ?`根節(jié)點(diǎn) -->` 2. ?`mask: 全屏的單色精靈,監(jiān)聽事件,關(guān)閉對話框;` 3. ?`dlg 與它的孩子: 對話框的內(nèi)容,監(jiān)聽事件,擋住不讓他傳遞到mask節(jié)點(diǎn)上;` 4. ?`彈出時(shí)動畫:` 5. ?`mask: 漸變進(jìn)來;` 6. ?`對話框內(nèi)容縮放,并加上easing緩動對象;` 7. ?`收起時(shí)動畫:` 8. ?`mask: 漸變出去;` 9. ?`對話框內(nèi)容縮小,并加上easing 緩動對象;`

2: 對話框組件腳本

1. ?`(1)show_dlg` 2. ?`(2)hide_dlg`

二、彈出式對話框控制組件

1. ?`const {ccclass, property} = cc._decorator;` 3. ?`@ccclass` 4. ?`export default class PopDialogCtrl extends cc.Component {` 5. ?` ? ?@property({type:cc.Node, tooltip:"彈出式對話框的遮罩節(jié)點(diǎn)"})` 6. ?` ? ?mask : cc.Node = null;` 7. ?` ? ?@property({type:cc.Node, tooltip:"彈出式對話框的主體內(nèi)容節(jié)點(diǎn)"})` 8. ?` ? ?content : cc.Node = null;` 9. ?` ? ?@property({tooltip:"彈出式對話框初始化時(shí)的透明度"})` 10. ?`maskOpacity : number = 200;` 12. ?` ? ?onLoad(){` 13. ?` ? ? ? ?this.node.active = false;` 14. ?` ? ? ? ?this.mask.opacity = this.maskOpacity;` 15. ?`}` 17. ?` ? ?showDialog(){` 18. ?` ? ? ? ?this.node.active = true;` 19. ?` ? ? ? ?// mask淡入` 20. ?` ? ? ? ?this.mask.opacity = 0;` 21. ?` ? ? ? ?let fIn : cc.Action = cc.fadeTo(0.1, this.maskOpacity);` 22. ?` ? ? ? ?this.mask.runAction(fIn);` 24. ?` ? ? ? ?// content縮放顯示` 25. ?` ? ? ? ?this.content.setScale(0, 0);` 26. ?` ? ? ? ?let s : cc.Action = cc.scaleTo(0.2, 1, 1).easing(cc.easeBackOut());` 27. ?` ? ? ? ?this.content.runAction(s);` 28. ?` ? ?}` 29. ?` ? ?hideDialog(){` 30. ?` ? ? ? ?// mask淡出` 31. ?` ? ? ? ?this.mask.opacity = 0;` 32. ?` ? ? ? ?let fOut : cc.Action = cc.fadeTo(0.3, 0);` 33. ?` ? ? ? ?this.mask.runAction(fOut);` 34. ?` ? ? ? ?// content縮放隱藏` 35. ?` ? ? ? ?let s : cc.Action = cc.scaleTo(0.4, 0, 0).easing(cc.easeBackIn());` 36. ?` ? ? ? ?let endf : cc.Action = cc.callFunc(function(){` 37. ?` ? ? ? ? ? ?this.node.active = false;` 38. ?` ? ? ? ?}.bind(this));` 39. ?` ? ? ? ?let seq : cc.ActionInterval = cc.sequence([s, endf]);` 40. ?` ? ? ? ?this.content.runAction(seq);` 41. ?` ? ?}` 42. ?`}`

三、彈出式對話框UI制作



上面設(shè)置,可以保證點(diǎn)擊遮罩層的時(shí)候隱藏對話框。

四、彈出式對話框組件的使用

新建GameMgr.ts掛載到Canvas節(jié)點(diǎn)上

1. ?`import PopDialogCtrl from "./PopDialogCtrl";` 3. ?`const {ccclass, property} = cc._decorator;` 4. ?`@ccclass` 5. ?`export default class GameMgrextends cc.Component { ? ?` 6. ?` ? ?@property({type:PopDialogCtrl, tooltip:"彈出式對話框"})` 7. ?` ? ?popDialog : PopDialogCtrl = null;` 8. ?` ? ?showDialog(){` 9. ?` ? ? ? ?this.popDialog.showDialog();` 10. ?` ? ?}` 11. ?`}`





千文詳述Cocos Creator彈出式對話框?qū)崿F(xiàn)技術(shù),著實(shí)硬核!的評論 (共 條)

分享到微博請遵守國家法律
芒康县| 会泽县| 芮城县| 堆龙德庆县| 广汉市| 资兴市| 香港 | 建水县| 福建省| 武功县| 峨眉山市| 阿坝县| 嘉禾县| 景泰县| 南川市| 余江县| 铜鼓县| 清丰县| 开封县| 合肥市| 阿鲁科尔沁旗| 高碑店市| 德格县| 辽阳市| 曲麻莱县| 庆元县| 吉水县| 宜昌市| 兖州市| 芜湖县| 鲜城| 修水县| 丘北县| 静安区| 南投市| 九江县| 平罗县| 绥江县| 丰宁| 沽源县| 扬中市|