UI 組件 | Toggle

Toggle(復(fù)選框)組件

Toggle 是一個(gè) CheckBox悯辙,當(dāng)它和 ToggleGroup 一起使用的時(shí)候,可以變成 RadioButton注盈。

創(chuàng)建 Toggle 組件

層級(jí)管理器右擊->創(chuàng)建節(jié)點(diǎn)->創(chuàng)建 UI 節(jié)點(diǎn)->Toggle 即可創(chuàng)建 Toggle 組件撇吞。

節(jié)點(diǎn)說明

Toggle 組件的節(jié)點(diǎn)樹一般為:

注:checkmark 在層級(jí)結(jié)構(gòu)上要在 Background 上面,或者是 Background 的子節(jié)點(diǎn)探熔。

屬性介紹

創(chuàng)建成功后,屬性面板可以看到 Toggle 組件特有的屬性烘挫,下面對(duì)這些屬性一一介紹:

屬性 功能說明
Target Node 類型诀艰,當(dāng) Toggle 發(fā)生 Transition 的時(shí)候,會(huì)相應(yīng)地修改 Target 節(jié)點(diǎn)的 SpriteFrame饮六,顏色或者 Scale其垄。
interactable 布爾類型,設(shè)為 false 時(shí)卤橄,則 Toggle 組件進(jìn)入禁用狀態(tài)绿满。
Transition 枚舉類型,包括 NONE, COLOR窟扑,SPRITE 和 SCALE喇颁。每種類型對(duì)應(yīng)不同的 Transition 設(shè)置。詳情見下方的 Toggle Transition 部分嚎货。
isChecked 布爾類型橘霎,如果這個(gè)設(shè)置為 true,則 check mark 組件會(huì)處于 enabled 狀態(tài)殖属,否則處于 disabled 狀態(tài)姐叁。
checkMark cc.Sprite 類型,Toggle 處于選中狀態(tài)時(shí)顯示的圖片洗显。
toggleGroup cc.ToggleGroup 類型外潜, Toggle 所屬的 ToggleGroup,這個(gè)屬性是可選的挠唆。如果這個(gè)屬性為 null处窥,則 Toggle 是一個(gè) CheckBox,否則玄组,Toggle 是一個(gè) RadioButton滔驾。
Check Events 列表類型,默認(rèn)為空巧勤,用戶添加的每一個(gè)事件由節(jié)點(diǎn)引用嵌灰,組件名稱和一個(gè)響應(yīng)函數(shù)組成。詳情見下方的 Toggle 事件 部分颅悉。

Toggle Transition 部分

Toggle 的 Transition 用來指定當(dāng)用戶點(diǎn)擊 Toggle 時(shí)的狀態(tài)表現(xiàn)沽瞭。目前主要有 NONE,COLOR剩瓶,SPRITE 和 SCALE驹溃。

Color Transition

屬性 功能說明
Normal Toggle 在 Normal 狀態(tài)下的顏色城丧。
Pressed Toggle 在 Pressed 狀態(tài)下的顏色。
Hover Toggle 在 Hover 狀態(tài)下的顏色豌鹤。
Disabled Toggle 在 Disabled 狀態(tài)下的顏色亡哄。
Duration Toggle 狀態(tài)切換需要的時(shí)間間隔。

Sprite Transition

屬性 功能說明
Normal Toggle 在 Normal 狀態(tài)下的 SpriteFrame布疙。
Pressed Toggle 在 Pressed 狀態(tài)下的 SpriteFrame蚊惯。
Hover Toggle 在 Hover 狀態(tài)下的 SpriteFrame。
Disabled Toggle 在 Disabled 狀態(tài)下的 SpriteFrame灵临。

Scale Transition

屬性 功能
Duration Toggle 狀態(tài)切換需要的時(shí)間間隔截型。
ZoomScale 當(dāng)用戶點(diǎn)擊按鈕后,按鈕會(huì)縮放到一個(gè)值儒溉,這個(gè)值等于 Toggle 原始 scale * zoomScale, zoomScale 可以為負(fù)數(shù)

Toggle 點(diǎn)擊事件

Toggle 可以額外添加 Check 事件宦焦,用于響應(yīng)玩家的點(diǎn)擊操作。有以下兩種方法顿涣。

通過屬性檢查器添加回調(diào)

序號(hào) 屬性 功能說明
1 Target 帶有腳本組件的節(jié)點(diǎn)波闹。
2 Component 腳本組件名稱。
3 Handler 指定一個(gè)回調(diào)函數(shù)涛碑,當(dāng)用戶點(diǎn)擊 Toggle 時(shí)會(huì)觸發(fā)此函數(shù)精堕。
4 CustomEventData 用戶指定任意的字符串作為事件回調(diào)的最后一個(gè)參數(shù)傳入。

1.編寫回調(diào)函數(shù)腳本:

// toggle.js
?
cc.Class({
    extends: cc.Component,
?
    properties: {
    },
?
    // LIFE-CYCLE CALLBACKS:
?
    // onLoad () {},
?
    start() {
?
    },
?
    // update (dt) {},
?
    // toggle 回調(diào)函數(shù)
    cb_toggle(toggle, customEventData) {  
        if(toggle.isChecked){
            console.log("Hello," + customEventData + "!");
        }       
    }
});

2.編寫好后將 toggle.js 掛在到 Toggle 節(jié)點(diǎn)下:

3.設(shè)置 Check Events 為 1锌唾,并將 Toggle 節(jié)點(diǎn)拖到帶有 cc.node 的編輯框锄码,后面分別選擇對(duì)應(yīng)的腳本和方法,CustomEventData 處輸入要打印的字符串:

4.預(yù)覽游戲晌涕,勾選 Toggle 發(fā)現(xiàn)控制臺(tái)正常打印出剛才輸入的字符串,取消勾選 Toggle 發(fā)現(xiàn)控制臺(tái)沒有打印任何內(nèi)容痛悯,說明成功調(diào)用回調(diào)函數(shù):

通過腳本添加回調(diào)

通過腳本添加回調(diào)有以下兩種方式:

方法一:

這種方法添加的事件回調(diào)和使用編輯器添加的事件回調(diào)是一樣的余黎,都是通過 Toggle 組件實(shí)現(xiàn)。首先需要構(gòu)造一個(gè) cc.Component.EventHandler 對(duì)象载萌,然后設(shè)置好對(duì)應(yīng)的 target惧财、component、handler 和 customEventData 參數(shù)扭仁。

1.編寫腳本如下:

// toggle.js
?
cc.Class({
    extends: cc.Component,
?
    properties: {
    },
?
    // LIFE-CYCLE CALLBACKS:
?
    onLoad() {
        var checkEventHandler = new cc.Component.EventHandler();
        checkEventHandler.target = this.node; // 這個(gè) node 節(jié)點(diǎn)是你的事件處理代碼組件所屬的節(jié)點(diǎn)
        checkEventHandler.component = "toggle"
        checkEventHandler.handler = "cb_toggle";
        checkEventHandler.customEventData = "小明";
?
        var toggle = this.node.getComponent(cc.Toggle);
        toggle.checkEvents.push(checkEventHandler);
    },
?
    start() {
?
    },
?
    // update (dt) {},
?
    // toggle 回調(diào)函數(shù)
    cb_toggle(toggle, customEventData) {
        // toggle 為 toggle 本身
        if (toggle.isChecked) {
            console.log("Hello," + customEventData + "!");
        }
    }
});

2.編寫好后將 toggle.js 掛在到 Toggle 節(jié)點(diǎn)下垮衷,預(yù)覽游戲,勾選 Toggle 發(fā)現(xiàn)控制臺(tái)正常打印出剛才輸入的字符串乖坠,取消勾選 Toggle 發(fā)現(xiàn)控制臺(tái)沒有打印任何內(nèi)容搀突,說明成功調(diào)用回調(diào)函數(shù):

方法二:

通過 toggle.node.on('toggle', ...) 的方式來添加,這是一種非常簡便的方式熊泵,但是該方式有一定的局限性仰迁,在事件回調(diào)里面無法獲得當(dāng)前點(diǎn)擊按鈕的屏幕坐標(biāo)點(diǎn)甸昏,也無法傳遞 customEventData

1.編寫腳本如下:

// toggle.js
?
cc.Class({
    extends: cc.Component,
?
    properties: {
    },
?
    // LIFE-CYCLE CALLBACKS:
?
    onLoad() {
        this.node.on('toggle', this.cb_toggle, this);
    },
?
    start() {
?
    },
?
    // update (dt) {},
?
    // toggle 回調(diào)函數(shù)
    cb_toggle(toggle) {
        // toggle 為 toggle 本身
        if (toggle.isChecked) {
            console.log("Hello,小明!");
        }
    }
});

2.編寫好后將 toggle.js 掛在到 Toggle 節(jié)點(diǎn)下徐许,預(yù)覽游戲施蜜,勾選 Toggle 發(fā)現(xiàn)控制臺(tái)正常打印出剛才輸入的字符串,取消勾選 Toggle 發(fā)現(xiàn)控制臺(tái)沒有打印任何內(nèi)容雌隅,說明成功調(diào)用回調(diào)函數(shù):

拓展:

除了默認(rèn)的資源翻默,還可以替換 Background 和 Checkmate 圖片資源實(shí)現(xiàn)開關(guān)效果:


我是「Super于」,立志做一個(gè)每天都有正反饋的人恰起!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冰蘑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子村缸,更是在濱河造成了極大的恐慌祠肥,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梯皿,死亡現(xiàn)場離奇詭異仇箱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)东羹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門剂桥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人属提,你說我怎么就攤上這事权逗。” “怎么了冤议?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵斟薇,是天一觀的道長。 經(jīng)常有香客問我恕酸,道長堪滨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任蕊温,我火速辦了婚禮袱箱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘义矛。我一直安慰自己发笔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布凉翻。 她就那樣靜靜地躺著了讨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上量蕊,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天铺罢,我揣著相機(jī)與錄音,去河邊找鬼残炮。 笑死韭赘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的势就。 我是一名探鬼主播泉瞻,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼苞冯!你這毒婦竟也來了袖牙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤舅锄,失蹤者是張志新(化名)和其女友劉穎鞭达,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體皇忿,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡畴蹭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鳍烁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叨襟。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖幔荒,靈堂內(nèi)的尸體忽然破棺而出糊闽,到底是詐尸還是另有隱情,我是刑警寧澤爹梁,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布右犹,位于F島的核電站月趟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏输拇。R本人自食惡果不足惜罩扇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铐炫。 院中可真熱鬧,春花似錦、人聲如沸絮宁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绍昂。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窘游,已是汗流浹背唠椭。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忍饰,地道東北人贪嫂。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像艾蓝,于是被迫代替她去往敵國和親力崇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容