import { AppKernel } from "@scripts/app/AppKernel"; import { Button, Color, Component, Node, Sprite, Toggle, UIOpacity, UIRenderer, UITransform, find } from "cc"; const CUSTOM_CLICK = "_customOnClick"; export function addBtnClick(btn: Button | Node, onClick: Function, target?) { const onClickHandle = () => { AppKernel.sound.playBtnClick(); onClick && onClick.apply(target); } const isNode = btn instanceof Node; const event_key = isNode ? Node.EventType.TOUCH_END : Button.EventType.CLICK; const btn_node = isNode ? btn : btn.node; btn_node.on(event_key, onClickHandle); btn_node[CUSTOM_CLICK] = onClickHandle; } export function removeBtnClick(btn: Button | Node, onClick, target) { const isNode = btn instanceof Node; const event_key = isNode ? Node.EventType.TOUCH_END : Button.EventType.CLICK; const btn_node = isNode ? btn : btn.node; const onClickHandle = btn_node[CUSTOM_CLICK]; if (onClickHandle) { btn_node.off(event_key, onClickHandle); return; } btn_node.off(event_key, onClick, target); } export function addTogClick(tog: Toggle | Node, onToggle: Function, target?) { if (tog instanceof Toggle) { tog = tog.node; } tog.on(Toggle.EventType.CLICK, onToggle, target) } /** * 设置透明度 * @param ui * @param alpha 0 ~ 1; * @returns */ export function setAlpha(ui: UIRenderer | Node, alpha: number) { if (ui instanceof Node) { const comp = ui.getComponent(UIOpacity) || ui.addComponent(UIOpacity); comp.opacity = alpha; return; } let color = ui.color.clone(); color.a = 255 * alpha; ui.color = color; } export function setAsLastSibling(node: Node) { let index = node.parent.children.length - 1; index = Math.max(0, index); node.setSiblingIndex(index); } export enum ImgFitMode { FitWidth = 1, FitHeight } export function setSpriteFitMode(sprite: Sprite, fitMoed?: ImgFitMode) { if (sprite === null || !sprite.spriteFrame) return; if (fitMoed === null) return; sprite.sizeMode = Sprite.SizeMode.CUSTOM; sprite[''] const trans = sprite.node.getComponent(UITransform); const ratio = sprite.spriteFrame.width / sprite.spriteFrame.height; switch (fitMoed) { case ImgFitMode.FitHeight: trans.width = ratio * trans.height break; case ImgFitMode.FitWidth: trans.height = trans.width / ratio; break; } }