Egret社区
1银子
[mw_shl_code=applescript,true]module mygui
{
    export class GRectBtn extends egret.Sprite
    {
        private m_pLinkObj:any;
        private m_pFunction:any;
        private m_pRect;
        private m_nColor1:number;
        private m_pText:egret.TextField;
        public constructor(_text:string="Btn",_x:number=0,_y:number=0,_w:number=100,_h:number=30,_c0:number=0x005070,_textSize:number=16,_textColor:number=0xffffff)
        {
            super();
            this.x=_x;
            this.y=_y;
            this.m_nColor1=_c0;
            this.m_pRect=new egret.Shape();
            this.m_pRect.x=-this.width/2;
            this.m_pRect.y=-this.height/2;
            this.m_pRect.width=_w;
            this.m_pRect.height=_h;
            this.addChild(this.m_pRect);
            this.FillColor(_c0);
            this.m_pText=utils.createTextLabel(_text,_textColor,"center",egret.VerticalAlign.MIDDLE,_text,_textSize);
            this.m_pText.width=_w;
            this.m_pText.height=_h;
            this.addChild(this.m_pText);
            this.Enable();
        }
        public SetLinkFun(plink:any,pfun:any){
            this.m_pLinkObj=plink;
            this.m_pFunction=pfun;
        }
        public SetText(txt:string){
            this.m_pText.text=txt;
        }
        private FillColor(_c:number){
            this.m_pRect.graphics.clear();
            this.m_pRect.graphics.beginFill(_c,1);
            this.m_pRect.graphics.drawRoundRect(0,0,this.m_pRect.width,this.m_pRect.height,Math.min(this.m_pRect.width,this.m_pRect.height)/3,Math.min(this.m_pRect.width,this.m_pRect.height)/3);
            this.m_pRect.graphics.endFill();
        }
        public Enable(){
            this.m_pRect.touchEnabled=true;
            this.m_pRect.addEventListener(egret.TouchEvent.TOUCH_BEGIN,this.OnTouchBegin, this);
            this.m_pRect.addEventListener(egret.TouchEvent.TOUCH_OUT,this.OnTouchEnd, this);
            this.m_pRect.addEventListener(egret.TouchEvent.TOUCH_END,this.OnTouchEnd, this);
            egret.MainContext.instance.stage.addEventListener(egret.Event.LEAVE_STAGE,this.OnTouchEnd,this);
        }
        public UnEnable(){
            this.m_pRect.touchEnabled=false;
            this.m_pRect.removeEventListener(egret.TouchEvent.TOUCH_BEGIN,this.OnTouchBegin, this);
            this.m_pRect.removeEventListener(egret.TouchEvent.TOUCH_OUT,this.OnTouchEnd, this);
            this.m_pRect.removeEventListener(egret.TouchEvent.TOUCH_END,this.OnTouchEnd, this);
            egret.MainContext.instance.stage.removeEventListener(egret.Event.LEAVE_STAGE,this.OnTouchEnd,this);
        }
        private OnClick(){
            if(this.m_pLinkObj==null || this.m_pFunction==null) return;
            this.m_pLinkObj.call(this.m_pFunction,this.m_pLinkObj);
        }
        public  OnTouchBegin(event:egret.TouchEvent)
        {
            this.FillColor(0xffffff-this.m_nColor1);
        }
        public  OnTouchEnd(event:egret.TouchEvent)
        {
            this.FillColor(this.m_nColor1);
            this.OnClick();
        }
    }
}
[/mw_shl_code]
不过按住移动出按钮,在抬起来时候响应不到end,请应该怎么写

分享到 :
1 人收藏

4 个回复

倒序浏览
hoddddky  登堂入室 | 2014-9-17 19:00:41
我也刚试了一下,TOUCH_OUT事件貌似已经取消了
guoshaorui  超级斑竹 | 2014-9-17 21:10:34
这个事件并未实现,侦听不到的
csujin  圆转纯熟 | 2014-9-17 21:27:23
guoshaorui 发表于 2014-9-17 21:10
这个事件并未实现,侦听不到的

那这种简单的按钮抬起消息怎么写比较合适呢,我看gui里的有点复杂,有点晕
dom  圆转纯熟 | 2014-9-17 22:00:41
csujin 发表于 2014-9-17 21:27
那这种简单的按钮抬起消息怎么写比较合适呢,我看gui里的有点复杂,有点晕 ...

抬起是Touch_end,看注释上写了的。touch_out是相当于原来Flash的mouse_out,鼠标移出,不是按键弹起。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部