FairyGUI筆記:Button (十四)
阿新 • • 發佈:2018-12-20
up
按鈕正常的狀態;down
普通按鈕按下時的狀態/單選或多選按鈕被選中時的狀態;over
當滑鼠指標懸浮在按鈕上方時的狀態;selectedOver
當單選或多選按鈕選中時,滑鼠指標懸浮到按鈕上方時的狀態;disabled
按鈕不可用時的狀態;selectedDisabled
當單選或多選按鈕選中時,按鈕不可用時的狀態。
GButton
設定按鈕的標題或者圖示,你甚至不需要強制物件為GButton的型別,直接用GObject提供的介面就可以,例如:
GObject obj = gcom.GetChild("n1"); obj.text = "hello"; obj.icon = "ui://包名/圖片名";
如果是單選或者多選按鈕,下面的方法設定是否選中:
GButton button = gcom.GetChild("n1").asButton;
button.selected = true;
通常對於單選/多選按鈕,使用者點選後就能切換狀態。如果你不需要這樣,希望只能通過API改變狀態,那麼可以:
//關閉後你只能通過改變selected屬性修改按鈕狀態,使用者點選不會改變狀態。
button.changeStateOnClick = false;
通過程式碼設定按鈕與控制器的聯動的方式是:
button.pageOption.controller = aController; button.pageOption.index = 1; //通過索引設定 button.pageOption.name = "page_name"; //或通過頁面名稱設定
按鈕全域性聲音的設定為:
//Unity版本要求一個AudioClip物件,如果是使用庫裡面的資源,那麼可以使用:
UIConfig.buttonSound = (AudioClip)UIPackage.GetItemAssetByURL("ui://包名/聲音名");
//其他版本要求一個資源url,即:
UIConfig.buttonSound = "ui://包名/聲音名";
//全域性音量
UIConfig.buttonSoundVolumeScale = 1f;
這個設定只能在建立任何UI前設定。如果要控制全域性聲音的開關或音量,可以這樣:
//開關聲音(Laya和Egret自己有提供聲音開關,不需要用這個,請查閱他們的文件) GRoot.inst.EnabledSound(); GRoot.inst.DisableSound(); //調整全域性聲音音量,這個包括按鈕聲音和動效播放的聲音 GRoot.inst.soundVolume = 0.5f;
監聽普通按鈕點選的方式為:(注意,點選事件不只是按鈕有,任何支援觸控的元件都有,例如普通元件、裝載器、圖形等,他們的點選事件註冊方式和按鈕是相同的。)
//Unity/Cry
button.onClick.Add(onClick);
//AS3
button.addClickListener(onClick);
//Egret
button.addClickListener(this.onClick, this);
//Laya
button.onClick(this, this.onClick);
//Cocos2dx
button->addClickListener(CC_CALLBACK_1(AClass::onClick, this));
按鈕可以模擬觸發點選:
//模擬觸發點選,只會有一個觸發的表現,以及改變按鈕狀態,不會觸發偵聽按鈕的點選事件。
button.FireClick(true);
//如果同時要觸發點選事件,需要額外呼叫:(僅Unity/Cry示例,其他平臺自己研究)
button.onClick.Call();
單選和多選按鈕狀態改變時有通知事件:
//Unity/Cry
button.onChanged.Add(onChanged);
//AS3
button.addEventListener(StateChangeEvent.CHANGED, onChanged);
//Egret
button.addEventListener(StateChangeEvent.CHANGED, this.onChanged, this);
//Laya
button.on(fairygui.Events.STATE_CHANGED, this, this.onChanged);
//Cocos2dx
button->addEventListener(UIEventType::Changed, CC_CALLBACK_1(AClass::onChanged, this));