EgretWing->设计->窗口->动画php
能够打开动画编辑面版。动画
首先须要针对当前UI界面设置各类状态。咱们简单的设置ui
【close】:表明当前UI界面处于不可见状态。this
【open】:表明当前UI界面处于可见状态。spa
在动画面版,选择须要增长动画的组件,添加动画效果:设计
动画效果设置完毕后,建立对于的ts文件。
code
public getCurrentSkinState():string { if(this.parent) { // 可见 return "open"; }else{ // 不可见 return "close";} }
重写getCurrentSkinState方法,修改返回的状态值。若是不重写,你会发现动画根本不会有任何效果。orm
由于源码是这样的:get
/**
* 返回组件当前的皮肤状态名称,子类覆盖此方法定义各类状态名
* @method egret.gui.SkinnableComponent#getCurrentSkinState
* @returns {string}
*/
public getCurrentSkinState():string {
return this.enabled?"normal":"disabled"
}
因此这个地方须要特殊注意!!!!!源码
若是状态特别多,能够考虑本身新建变量,自行来修改控制。
仔细想一想,状态的区分实际更像是界面切换的标识。
好比:在一个UI皮肤里面,咱们管理3个场景,(胜利UI,失败UI,暂停UI)。这时咱们经过state(win,pause,fail)3个状态来对应。
固然你也能够分3个UI皮肤来分别实现3个UI。这样的话,就很差作出特别好的动画效果了。
[
可能有人会问,在close状态下不是全部组件都是不可见的或者不存在的么?为何以前要在全部状态下编辑面板,而不是在open状态下编辑? 由于在close状态下,整个面板是没有被添加到舞台的不在显示列表,因此当咱们看到这个面板时,这个面板必定是open状态。因此在全部状态下编辑也何尝不可。可能有人又会问,是否是弄反了,close状态才应该是这样的,open状态下才应该显示全部的组件? 上面说到了close状态是看不见的,怎么设置都行。关键是open状态,当状态从close变为open时,刚开始那些元素确实是在屏幕外或者看不到的,是随着动画的进行才开始出现的。因此这里是模拟的动画开始时候open状态下的预览。
]
参考文章:
http://bbs.egret-labs.org/forum.php?mod=viewthread&tid=6503