marineparkclient/assets/common/ui/base/UIHelper.ts
2023-08-15 11:09:12 +08:00

91 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}