Egret社区
1银子
class OperateBtn extends egret.gui.Button
{
    private _btnName:string;
    public labelDisplay:egret.gui.Label;
    public constructor(btnName:string)
    {
        super();
        this._btnName=btnName;
        //this.skinName=skin.OperateBtnSkin;
        this.addEventListener(egret.gui.UIEvent.CREATION_COMPLETE,this.createCompleteHandler,this);
        this.addEventListener("stateChanged",this.stateChangedHandler,this);
    }
    private createCompleteHandler(e:egret.gui.UIEvent):void
    {
        this.labelDisplay.text=this._btnName;
        this.removeEventListener(egret.gui.UIEvent.CREATION_COMPLETE,this.createCompleteHandler,this);
    }
    private stateChangedHandler(e:egret.Event):void
    {
        var curState:string=this.getCurrentSkinState();
        //this.scaleX=this.scaleY=curState=="down" ? .9 : 1;


        var scale:egret.gui.Scale=new egret.gui.Scale();
        scale.autoCenterTransform=true;
        scale.scaleXFrom=this.scaleX;
        scale.scaleYFrom=this.scaleY;
        scale.duration=100;
        if(curState=="down")
        {
            scale.scaleXTo=.5;
            scale.scaleYTo=.5;
        }
        else
        {
            scale.scaleXTo=1;
            scale.scaleYTo=1;
        }
        scale.target=this;
        //scale.disableLayout=true;
        scale.play();

    }
}如果该按钮在wing中设置布局,比如说布局设置成右下角,则缩放中心不为中心变成了右下角,难道设置布局后锚点也跟着改变么?当我试着scale.disableLayout=true;设置成true时,发现显示不出来了,这个属性不是这么用的么?在动画的时候去除布置

参与人数 1银子 +10 收起 理由
xsstomy + 10 赞一个!

查看全部评分

分享到 :
0 人收藏

3 个回复

倒序浏览
xsstomy  斑竹 | 2015-5-6 10:34:57
本帖最后由 xsstomy 于 2015-5-6 10:36 编辑

你好,你说的这个显示不出来是在程序实际运行当中还是预览模式,能否给一个demo我这边没有很好的复现出来。
群里的id:egret-xsstomy
xsstomy  斑竹 | 2015-5-7 13:17:01
已经重现了,非常感谢反馈
f111fei  官方团队 | 2015-5-7 14:49:30
首先不好意思回复晚了。再来看你这个问题,有几点
1.你在构造函数里面监听了stateChanged事件,如果开启了disableLayout=true,这样组件会在创建完成之前就会触发这个事件从而播放一次动画,各种内在的复杂原因导致了显示不出来。你可以尝试将监听stateChanged的语句移动到CREATION_COMPLETE事件里面。从而避免这个问题。
2.disableLayout=true仅仅是在播放动画的时候对组件的布局属性失效,但是效果播放完毕之后之前的布局属性又会还原,所以你这种改变了缩放的情况,会看到播放动画的时候是中心缩放的,但是缩放完成后组件会应用布局属性又会产生偏移。效果不好。

最后,如果你要实现类似的效果,可以使用过渡动画,对皮肤里面的组件进行缩放,而不是按钮,也不需要你定义一个按钮监听stateChanged事件。过渡动画可以在wing里面进行制作。
http://bbs.egret-labs.org/forum. ... amp;page=3#pid40313
参考这个帖子和27楼的回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部