首先要在exml內要設置有對應按鈕的ID
2,編寫TypeScript腳本:
public mybutton:eui.Button; 函數內部:this.mybutton.addEventListener(egret.TouchEvent.TOUCH_TAP,(event:egret.TouchEvent)=>{
},this); 或者:this.mybutton.addEventListener(egret.TouchEvent.TOUCH_TAP,()=>{ //具體實現,按鈕點擊之后具體實現的功能 },this); 再者,也可以利用Image作為按鈕背景,進行點擊 GameUtil.bitmapToBtn(this.mybutton,(e)=>{ });
或者單獨設一個函數做按鈕點擊事件的響應 this.mybutton.addEventListener(egret.TouchEvent.TOUCH_TAP,this.btnTouchHandler,this); private btnTouchHandler(event:egret.TouchEvent):void { console.log("button touched"); }
public static bitmapToBtn(bitmap: egret.Bitmap, callback) { bitmap.touchEnabled = true // 記錄當前位置 const source: Point = new Point(bitmap.x, bitmap.y) // 記錄原來的錨點 const sourceAnchor: Point = new Point(bitmap.anchorOffsetX, bitmap.anchorOffsetY) // 監聽觸摸事件 bitmap.addEventListener(egret.TouchEvent.TOUCH_BEGIN, () => { // 改變按鈕的錨點 bitmap.anchorOffsetX = bitmap.width / 2 bitmap.anchorOffsetY = bitmap.height / 2 // 如果改變后的錨點和原來的不一樣,那就需要改變按鈕位置 if (!new Point(bitmap.anchorOffsetX, bitmap.anchorOffsetY).equal(sourceAnchor)) { bitmap.x = source.x + bitmap.anchorOffsetX bitmap.y = source.y + bitmap.anchorOffsetY } // 縮放 bitmap.scaleX = 0.95 bitmap.scaleY = 0.95 }, this) bitmap.addEventListener(egret.TouchEvent.TOUCH_TAP, () => { reset() // 這個事件發生才算是點擊按鈕 callback && callback() }, this) bitmap.addEventListener(egret.TouchEvent.TOUCH_CANCEL, reset, this) bitmap.addEventListener(egret.TouchEvent.TOUCH_END, reset, this) bitmap.addEventListener(egret.TouchEvent.TOUCH_RELEASE_OUTSIDE, reset, this) function reset() { bitmap.anchorOffsetX = sourceAnchor.x bitmap.anchorOffsetY = sourceAnchor.y bitmap.x = source.x bitmap.y = source.y bitmap.scaleX = 1 bitmap.scaleY = 1 } }
另,按鈕的顯示(標簽顯示內容)字體大小設置:
(<eui.Label>this.mybutton.labelDisplay).size = 50;
labelDisplay是個接口,使用eui.Label轉換一下即可。