中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Egret之Eui.Button換膚

發布時間:2020-03-06 14:00:04 來源:網絡 閱讀:18008 作者:Aonaufly 欄目:開發技術

在Gui中對Button換皮相當的給力:

Gui.Button.skinName = new egret.gui.ButtonSkin(normal_resource, up_resource , disable_resource);


但是在EUI中沒有ButtonSkin類.所以找到了其他方法.

我用三種按鈕進行測試 : 1,有自定義皮膚的按鈕 2,沒有自定義皮膚的按鈕(三種狀態都有resource圖片) , 3,new的Button

測試View:

Egret之Eui.Button換膚


一 : 自定義皮膚情況

①,自定義皮膚 : AonauflyButton.exml

<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="skins.AonauflyButton"  states="up,down,disabled" width="75" height="75" xmlns:e="http://ns.egret.com/eui">
    <e:Image width="100%" height="100%" scale9Grid="1,3,8,8" alpha.disabled="0.5"
             source="變強01_png"
             source.down="橙色小按鈕_png"
             source.disabled="藍色小按鈕_png"/>
    <e:Label id="labelDisplay" top="8" bottom="8" left="8" right="8"
             size="20"
             textColor="0xFFFFFF" verticalAlign="middle" textAlign="center"/>
    <e:Image id="iconDisplay" horizontalCenter="0" verticalCenter="0"/>
</e:Skin>

②,現在一個ButtonDemo.exml用于顯示如上圖.建一個Button,設置他的皮膚為我們的自定義皮膚

Egret之Eui.Button換膚

命名 : btn_demo


二 : 使用默認Button(三種狀態都有resource圖片)

Egret之Eui.Button換膚

命名 : btn_demo2


三 : 自定義一個Button , 命名 : $btn_demo3


代碼如下:

module app {
	export class ButtonDemo extends eui.Component implements eui.UIComponent {
		private btn_demo : eui.Button;
		private btn_demo2 : eui.Button;
		private $btn_demo3 : eui.Button;
		public constructor() {
			super();
			this.skinName = "resource/eui_skins/ButtonDemo.exml";
		}

		private handlerListener( isAdd : boolean ) : void{
			this.touchEnabled = isAdd;
			if( isAdd ){
				this.addEventListener( egret.TouchEvent.TOUCH_TAP , this.onclick , this );
			}else{
				this.removeEventListener( egret.TouchEvent.TOUCH_TAP , this.onclick , this );
			}
		}
		private onclick( $e : egret.TouchEvent ) : void{
			this.btn_demo.enabled = !this.btn_demo.enabled;
			this.btn_demo2.enabled = !this.btn_demo2.enabled;
			this.$btn_demo3.enabled = !this.$btn_demo3.enabled;
		}
		protected childrenCreated():void{
			super.childrenCreated();
			this.handlerListener(true);
			this.btn_demo.label="第一種情況";
			this.btn_demo.icon = RES.getRes("button_down_png");

			this.baseChildren4BTN(this.btn_demo);

			this.changeChildren4BTN( this.btn_demo );

			egret.log("===== 第二種情況 =====");

			this.baseChildren4BTN( this.btn_demo2 );
			this.changeChildren4BTN( this.btn_demo2 );

			egret.log("===== 第三種情況 =====");
			this.$btn_demo3 = new eui.Button();
			this.$btn_demo3.label = "第三種情況";
			this.$btn_demo3.x = this.$btn_demo3.y = 250;
			this.addChild( this.$btn_demo3 );

			this.baseChildren4BTN( this.$btn_demo3 );
			this.changeChildren4BTN( this.$btn_demo3 );

		}

		private baseChildren4BTN(btn : eui.Button) : void{
			let $img2Btn_normal : eui.Image = <eui.Image>btn.getChildAt(0);
			egret.log(" 常態 img 0 :" + $img2Btn_normal.source);
			// 改變常態img( 成功 )
			// $img2Btn_normal.source = RES.getRes("藍色小按鈕_png");

			let $label2Btn : eui.Label = <eui.Label>btn.getChildAt(1);
			egret.log(" 文本 1 :" + $label2Btn.text);
			if( btn.numChildren >= 3 ){
				let $icon2Btn : eui.Image = <eui.Image>btn.getChildAt(2);
				if( $icon2Btn != null && $icon2Btn.source != null)
					egret.log("icon 2 :" + $icon2Btn.source.toString());
			}
		}

		private changeChildren4BTN(btn : eui.Button) : void{
			if( btn.skin != null && btn.skin.states != null){
				let arr2States : eui.State[] = btn.skin.states;
				let target2State : eui.State = null;
				//up - 狀態
				target2State = arr2States[1];
				let property2up: eui.SetProperty = <eui.SetProperty>target2State.overrides[ target2State.overrides.length -1];
				if( property2up.name == "source" ){
					egret.log("up : value ->" + property2up.value );
					property2up.value = RES.getRes("藍色小按鈕_png");
				}
				//disabled 狀態
				target2State = arr2States[2];
				let property2d: eui.SetProperty = <eui.SetProperty>target2State.overrides[ target2State.overrides.length -1];
				if( property2d.name == "source" ){
					egret.log("--改變圖片資源--");
					egret.log("disabled : value ->" + property2d.value );
					property2d.value = RES.getRes("radiobutton_select_up_png");
				}else if( property2d.name == "alpha" ){
					egret.log("--改變圖片透明度--");
					property2d.value = 0.3;//改變透明度
				}

			}

		}
	}
}



要更改normal : 

Egret之Eui.Button換膚


要更改 up , disable :(可以同時有alpha和source , 可以同時得修改他們)

Egret之Eui.Button換膚




//******************************************************************************************************************

補充

public static setBtnSkin(btn: eui.Button, upImg, downImg, enableImg = null): void {

                if (btn.skin.states[0].overrides[0]["value"] == upImg && btn.skin.states[1].overrides[0]["value"] == downImg && btn.skin.states[2].overrides[0]["value"] == enableImg)

                        return;

                btn.skin.states[1].overrides[0]["value"] = downImg;

                if (btn.enabled)

                        btn.skin.states[2].overrides[0]["value"] = btn.skin.states[0].overrides[0]["value"];

                else

                        btn.skin.states[0].overrides[0]["value"] = btn.skin.states[2].overrides[0]["value"]

                btn.enabled = !btn.enabled;

                DelayCall.call(1, EuiUtil.releaseBtn, EuiUtil, [btn, !btn.enabled, upImg, enableImg == null ? upImg : enableImg])

        }


        private static releaseBtn(btn: eui.Button, flag: boolean, upimg: string, disimg: string) {

                btn.skin.states[0].overrides[0]["value"] = upimg;

                btn.skin.states[2].overrides[0]["value"] = disimg;

                btn.enabled = flag;

        }


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

方城县| 剑阁县| 永年县| 陇川县| 太湖县| 宜昌市| 安达市| 阿巴嘎旗| 宜君县| 钦州市| 武乡县| 墨竹工卡县| 大厂| 平定县| 神农架林区| 古田县| 洪泽县| 水城县| 秀山| 依安县| 利辛县| 阳朔县| 蓬安县| 建始县| 株洲市| 平和县| 呼伦贝尔市| 新安县| 蚌埠市| 临汾市| 皋兰县| 静乐县| 东乡| 沙洋县| 昌邑市| 扶沟县| 友谊县| 越西县| 仪征市| 合水县| 呼伦贝尔市|