Egret社区

按钮点击缩放

2018-8-27 14:25
275611
10银子
使用eui的时候,各个界面都有很多的按钮。根据需求,点击按钮的时候,down缩小,up放大。但是由于不同界面按钮较多,各个按钮的大小尺寸也有差别,虽然直接放按钮组件一个一个的设置可以实现,但是按钮比较多的情况下,就比较麻烦。。。请问各位大神有啥好的方法实现不,求指导

分享到 :
0 人收藏

11 个回复

倒序浏览
qiaofei  圆转纯熟 | 2018-8-27 14:46:13
自定义控件,然后引入控件即可
牛魔王  官方团队 | 2018-8-27 14:46:32
两个解决方法:
1、代码实现,点击事件然后this.button.scaleX += ?    this.button.scaleY += ?   
2、在exml源代码实现
小白  初窥堂奥 | 2018-8-27 14:50:38
牛魔王 发表于 2018-8-27 14:46
两个解决方法:
1、代码实现,点击事件然后this.button.scaleX += ?    this.button.scaleY += ?   
2、在ex ...

按你这个 是否每加一个按钮 都要单独处理,是否有批量的实现方式
xdy233  初学乍练 | 2018-8-27 14:57:53
class xxxButton extends eui.Button {
        private osx: number;
        private osy: number;

        public constructor() {
                super();
                this.osx = this.scaleX;
                this.osy = this.scaleY;
        }

        protected onTouchCancle(event: egret.TouchEvent): void{
                super.onTouchCancle(event);
       
                let tween: egret.Tween = egret.Tween.get(this)
                tween.to({ scaleX: this.osx, scaleY: this.osy }, 60)
        }

         protected onTouchBegin(event: egret.TouchEvent): void{
                 super.onTouchBegin(event);
       
                let tween: egret.Tween = egret.Tween.get(this)
                tween.to({ scaleX: 1.2 * this.osx, scaleY: 1.2 * this.osy }, 60)
         }

        protected buttonReleased(): void{
                super.buttonReleased();

                let tween: egret.Tween = egret.Tween.get(this)
                tween.to({ scaleX: this.osx, scaleY: this.osy }, 60)
        }
}
在eui制作界面的使用这个自定义按钮就可以了
牛魔王  官方团队 | 2018-8-27 15:00:24
小白 发表于 2018-8-27 14:50
按你这个 是否每加一个按钮 都要单独处理,是否有批量的实现方式

批量的话就是你自定义一个按钮组件,然后大家都去用这个组件(可以换皮肤),在这个自定义组件的源码里设置点下的大小,和抬起大大小
浪子欲  登堂入室 | 2018-8-27 19:21:42
曾经这个问题我也想了半天,看到别人的游戏都是点击缩小放开变大,而用egret实现起来感觉相当的麻烦,每个按钮都要单独处理,最后还是放弃了,如果你想到什么好的解决办法 ,麻烦回复告诉我一下下,3q
q295172868  登堂入室 | 2018-8-27 20:29:51
做一个可通用的自定义组件不就好了么
浪子欲  登堂入室 | 2018-8-28 09:39:04
xdy233 发表于 2018-8-27 14:57
class xxxButton extends eui.Button {
        private osx: number;
        private osy: number;

这种写法如果我在按钮上按住在按钮之外松开,这个按钮就不能回到原来的样子,请问怎么解决,
二爷  圆转纯熟 | 2018-8-28 11:12:08
/**
    * obj           对象
    * cartoonType   动画类型 1:【可爱】按下变小,放开弹大 2:按下变小,放开轻微弹大 3:按下变小,放开变大
    */
    export function playEffect(obj, cartoonType: number = 1): void {
        egret.Tween.removeTweens(obj);
        var onComplete1: Function = function () {
            if (cartoonType == 1) {
                egret.Tween.get(obj).to({ scaleX: 1, scaleY: 1 }, 500, egret.Ease.elasticOut)
            } else if (cartoonType == 2) {
                egret.Tween.get(obj).to({ scaleX: 1, scaleY: 1 }, 500, egret.Ease.backOut)
            } else if (cartoonType == 3) {
                egret.Tween.get(obj).to({ scaleX: 1, scaleY: 1 }, 100)
            }
        };
        egret.Tween.get(obj).to({ scaleX: 0.5, scaleY: 0.5}, 100, egret.Ease.sineIn).call(onComplete1, this);
    }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部