91 lines
2.7 KiB
TypeScript
91 lines
2.7 KiB
TypeScript
import { SysDefine } from "../config/SysDefine";
|
||
|
||
export default class UiHelper {
|
||
/**
|
||
* 寻找子节点
|
||
*/
|
||
public static findChildInNode(nodeName: string, rootNode: cc.Node): cc.Node {
|
||
if(rootNode.name == nodeName) {
|
||
return rootNode;
|
||
}
|
||
for(let i=0; i<rootNode.childrenCount; i++) {
|
||
let node = this.findChildInNode(nodeName, rootNode.children[i]);
|
||
if(node) {
|
||
return node;
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
|
||
/** 检测前缀是否符合绑定规范 */
|
||
public static checkNodePrefix(name: string) {
|
||
if(name[0] !== SysDefine.SYS_STANDARD_Prefix) {
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
/** 检查后缀 */
|
||
public static checkBindChildren(name: string) {
|
||
if(name[name.length-1] !== SysDefine.SYS_STANDARD_End) {
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
/** 获得类型和name */
|
||
public static getPrefixNames(name: string) {
|
||
if(name === null) {
|
||
return ;
|
||
}
|
||
return name.split(SysDefine.SYS_STANDARD_Separator);
|
||
}
|
||
/** 获得Component的类名 */
|
||
public static getComponentName(com: Function) {
|
||
let arr = com.name.match(/<.*>$/);
|
||
if(arr && arr.length > 0) {
|
||
return arr[0].slice(1, -1);
|
||
}
|
||
return com.name;
|
||
}
|
||
|
||
|
||
/////////////////////////////////////////////////////////////////////////////////
|
||
/**
|
||
*
|
||
* @param target
|
||
* @param repeat -1,表示永久执行
|
||
* @param tweens
|
||
*/
|
||
public static async runRepeatTweenAsync(target: any, repeat: number, ...tweens: cc.Tween[]) {
|
||
return new Promise((resolve, reject) => {
|
||
let selfTween = cc.tween(target);
|
||
for(const tmpTween of tweens) {
|
||
selfTween = selfTween.then(tmpTween);
|
||
}
|
||
if(repeat < 0) {
|
||
cc.tween(target).repeatForever(selfTween).start();
|
||
}else {
|
||
cc.tween(target).repeat(repeat, selfTween).start();
|
||
}
|
||
});
|
||
}
|
||
/** 同步的tween */
|
||
public static async runTweenAsync(target: any, ...tweens: cc.Tween[]): Promise<void> {
|
||
return new Promise((resolve, reject) => {
|
||
let selfTween = cc.tween(target);
|
||
for(const tmpTween of tweens) {
|
||
selfTween = selfTween.then(tmpTween);
|
||
}
|
||
selfTween.call(() => {
|
||
resolve();
|
||
}).start();
|
||
});
|
||
}
|
||
/** 停止tween */
|
||
public stopTween(target: any) {
|
||
cc.Tween.stopAllByTarget(target);
|
||
}
|
||
public stopTweenByTag(tag: number) {
|
||
cc.Tween.stopAllByTag(tag);
|
||
}
|
||
}
|